Mehr Kontrolle über den Stepper
von
am 28.11.2012 um 19:22 (3946 Hits)
Ich habe wieder mit der Ansteuerung des Schrittschaltmotors gespielt. Zunächst aber die Spannung, die am Stepper ankommt auf 4,8V gesenkt weil er mir doch immer etwas zu warm wurde.
Aus einem alten ausgeschlachteten Röhrenmonitor hatte ich noch ein Bedienelement PCB mit einem Drehencoder und zwei Tasten - wurde am ATMega88A angeschlossen. Eine rote und eine grüne LED kamen auch noch dazu. Poti war ja schon an der Schaltung. Mein IC-Grab Display (4-fach 7-Segmentanzeige) wurde auch wieder reaktiviert und an die UART angeschlossen.
Über die linke Taste wird der Motor über die Enable Pins des L293D unter Strom gesetzt oder ausgeschaltet.
Die rote LED leuchtet, wenn der Motor Strom bekommt und ist erloschen, wenn der Strom abgeschaltet ist.
Mit der rechten Taste kann von Halbschritt auf Vollschritt ohne Drehzahländerung umgeschaltet werden bzw ohne Strom am Motor der Schrittmodus vorgewählt werden.
Die grüne LED leuchtet bei Halbschritt und ist bei Vollschritt erloschen.
Mit dem Poti wird die Umdrehungsgeschwindigkeit in rps (revolutions per second) mit einer Ungenauigkeit von nicht größer als 0,4% eingestellt. Ungenauigkeit deshalb, weil man bei meiner gewählten Steuermethode den Timer1 manchmal nicht ganz genau auf den benötigten Wert einstellen kann. Einstellschrittweite ist 0,5 rps von 0 bis 99,60 rps.
Steht das Poti ganz links, wird auf single Step geschaltet. Die Rechtsdrehung ist auf 99,60 rps begrenzt, was für den angeschlossenen Stepper (und dem vierstelligen Display) mehr als genug ist. Stepper schafft nur ca. 75 rps
im Halbschritt und ca. 65 rps im Vollschritt.
Mit dem Drehencoder kann man die Einzelschritte steuern. Rechtsdrehung läßt den Motor rechts herum schreiten. Von einer Raste zur anderen einen Halbschritt oder bei Vollschrittbetrieb einen Vollschritt. Dreht man ihn links herum, das Ganze gegengleich.
Läuft der Motor durchgehend, kann man mit dem Drehencoder die Laufrichtung während des Laufs umschalten. Linksdrehung - Motor läuft links herum, Rechtsdrehung - Motor läuft rechts herum.
Bei ausgeschaltetem Motor kann man Laufrichtung, Schrittmodus und Geschwindigkeit mit Drehencoder, Schrittmodustaste und Poti vorwählen und mit der Taste zum Motorstrom ein-/ausschalten dann aktivieren.
Das Display zeigt die eingestellte/berechnete Umdrehungsgeschwindigkeit auf 2 Kommastellen genau an. Der Doppelpunkt soll das Kommzeichen darstellen. Ist der Motor im Single Step wird 55 angezeigt. Werden mehr als 99,99 Umdrehungen pro Sekunde eingestellt, wird ArEA angezeigt (bei Strom am Motor befindet der sich dann im Halten genau so wie bei 55)
Intressanterweise wird der Output zum Display überhaupt nicht gestört, obwohl beim Ansteuern des Motors der PORTD mit dem UART-TX komplett beschrieben wird. Wie BASCOM das genau macht wäre auch noch mal nachzusehen. Bei der Programmierung hab ich da jedenfalls keine Rücksicht drauf genommen. Laut BASCOM ist der Baudratenfehler 7,84% bei 115200 Baud. Zum Glück kann man das Display in der Empfangsgeschwindigkeit justieren.
Dem Programm sieht man sicher an, daß es durch Fehlerbehebung und upgedateten Anforderungen während des Erstellens und Testens gewachsen ist. Hätte nicht gedacht, daß es nicht so ohne ist, einen Stepper ohne spezielle HW-Steuerung in den Griff zu kriegen.
Geachtet habe ich darauf, daß im Lauf keine Unregelmäßigkeiten im Ansteuertakt auftreten. Abgesehen vom Programm fiel mir bei der HW dann auf, daß der L293D unterschiedliche Laufzeiten vom Eingang zum Ausgang hat, je nachdem ob von low nach high oder umgekehrt geschaltet wird. Bewegt sich im Bereich von mehreren 100ns. Ob und wie sich das auf die Laufruhe des Motors auswirkt, habe ich noch nicht überlegt.
Im Single Step macht der Motor eventuell nur einen unkontrollierten Halbschritt bei Umschaltung des Schrittmoduses. Leider sind die Rasten am Drehencoder nicht sehr ausgeprägt und er ist deshalb nicht sicher von Raste zu Raste schaltbar. Kontakte sind mit Kondensatoren noch zusätzlich HW-entprellt.
Manche Dinge scheinen selbstverständlich zu sein, haben mir aber während des Programmierens einiges an Kopfzerbrechen bereitet.
Programm im Anhang.
Wie ich inzwischen abgezählt habe, braucht dieser 3 1/2" Floppy Stepper 20 Vollschritte für eine komplette Umdrehung, also 18°, in Worten achtzehn Grad Drehung pro Vollschritt. Er zieht jetzt so maximal um 300mA pro eingeschalteter Spule und schafft, wie oben sschon erwähnt, etwa 75 rps im Halbschritt- und 65 rps im Vollschrittbetrieb. Wenn er dann blockiert, muß man dann auf ca. 45 rps zurück gehen, damit er wieder läuft. Da liegt auch etwa die Anlaufgrenze ohne Rampe. Alles ohne Last probiert. Allein das Anbringen des kleinen roten Zahnrades hat die Anlaufgrenze schon um 10 rps gesenkt.
Das Ganze ist natürlich auf Steckbrett aufgebaut mit dem Stepper in dem skelettierten Floppylaufwerk, da sich ein Lager der Motorwelle außerhalb des Motors am Floppylaufwerkchassis befindet.
Gruß
Searcher