Hallo,
Ich arbeite momentan an einem Schrittmotortreiber für die Ansteuerung
eines bipolaren Motors mit ca 3A Phasenstrom. Der Treiber arbeitet im
Choppermodus um den Strom zu begrenzen. Der Motor soll zudem im 1/8
Schritt arbeiten.
Im Zusammenhang mit der Drehfrequenz und Chopperfrequenz habe ich noch
einige Fragen:
Die maximale Motordrehzahl ergibt sich aus der Drehmomentkennlinie.
Gibt es daneben noch eine maximale Schrittfrequenz, oder gilt:
max Schrittfrequenz = max Drehzahl Schritte pro Umdrehung Stufen pro
Schritt (microsteps)?
Die Chopperfrequenz wählt man meistens um 20Khz (außerhalb de höhrbaren
Bereichs). Um wieviel höher sollte die Chopperfrequenz gegenüber der
maximalen Schrittfrequenz gewählt werden?
Vielen Dank schonmal
Gruß Tom
Diese Überlegungen kann man sich meistens sparen, es sei denn man
verwendet hohe Versorgungsspannungen und Motore mir sehr geringer
Induktivität.
In der Regel wird es so sein, daß bei z.B. 10kHz Schrittfrequenz die
Strombegrenzung garnicht mehr einsetzt, da der Strom nicht schnell genug
ansteigen kann.
Da bei hohen Schrittfrequenzen Mikroschritte nichts mehr bringen, ist es
geschickter, ab einigen kHz auf 1/2 oder Vollschritt umzuschalten - bei
laufendem Motor!. Bei 1/8 Schritten braucht man dann nur noch mit 2,5kHz
anzusteuern anstatt mit 20kHz.
Mein Motor wird mit 42V angesteuert und hat eine Induktivität von 3,2mH.
Der Strom kann demzufolge mit ca 75µs/A steigen, was sich im meinen Fall
dann schon ab 5KHz bemerkbar machen wird.
Kann ich denn im Betrieb einfach von 1/8 auf 1/2 umschalten?
Die Treiberkarte wird mit der Standardansteuerung Takt/Richtung
gespeist.
Demzufolge müsste ich dann bei höheren Frequenzen nur noch jedem 4.Takt
einen Schritt weiterzählen!?
Tom schrieb:
> Demzufolge müsste ich dann bei höheren Frequenzen nur noch jedem 4.Takt> einen Schritt weiterzählen!?
Das geht anders: du setzt ja vermutlich die Mikroschritte mit einem
bestimmten Faktor 0..1 für den Strom, um einen sinusähnlichen Ausgang zu
bekommen. Um zum Betrieb mit Rechteckimpulsen zurückzuschalten, musst du
bloss anstatt Zwischenwerten nur noch 0 oder 1 setzen. Ob sich das
lohnt, ist eine andere Frage - grundsätzlich solltest du nachmessen, wie
der Stromverlauf bei hoher Schrittfrequenz ist, sinusförmig ist meiner
Meinung nach immer besser als Rechteck, dann zerren am Rotor keine
wechselnden Beschleunigungs- und Bremskräfte. Optimal ist es, wenn du
die Mikroschrittfaktoren so "vorverzerrst", dass der Stromverlauf
möglichst sinusähnlich bleibt.
Das setzt geregelten Strom voraus - wenn der Chopper den Abschaltpunkt
nicht mehr erreicht, werden die Wicklungen nur noch zwischen der
Versorgungsspannung hin und her geschaltet und der Faktor für den Strom
ist egal, also kann man dem Chopper genauso gut nur noch maximalen Strom
vorgeben. Das regelt sich aber von allein: wenn der Chopper nicht mehr
choppt, sind die Mikroschritte unwirksam.
Gruss Reinhard
>Kann ich denn im Betrieb einfach von 1/8 auf 1/2 umschalten?>Die Treiberkarte wird mit der Standardansteuerung Takt/Richtung>gespeist.
Wenn Du so fragst, vermutlich nicht :-)
Du hast wohl eine Treiberkarte, bei der der Modus per Schalter fest
eingestellt wird, dann kannst Du nichts umschalten.
Solange Deine max. Schrittfrequenz Deinen Prozessor nicht zu sehr
fordert (AVR mit 16MHZ können gut 10kHz für 2 Stepper liefern), dann
mußt Du auch nichts umschalten.
Umschalten kann man bei diskreten ICs, die den Schrittmodus an separaten
Pins einstellbar haben. Dann schaltet man sinnvollerweise in der
'home'-Position um. Ich will das aber jetzt nicht näher erläutern.
Fazit:
Wenn Deine Schrittfrequenz bei 1/8 Schritten Deinen µC bei hohen
Schrittfrequenzen nicht überfordert, steuere die Karte ohne Umschalten
direkt an.
Sorry, dass ich den Thread wieder ausgrabe, aber ich habe dazu noch eine
Frage ;-)
Tom schrieb:> Der Strom kann demzufolge mit ca 75µs/A steigen, was sich im meinen Fall> dann schon ab 5KHz bemerkbar machen wird.
Die 5 kHz beziehen sich doch aber auf Vollschritte. Bei 1/8 µStep würde
der Chopper doch erst bei 40000 µSteps/s nicht mehr arbeiten?
LG Malte
Normalerweise ist die Chopperfequenz wesentlich höher (z.B. 150kHz) als
die Schrittfrequenz (z.B. 15kHz) sogar der Mikroschritte.
Die Ursprungsaussage
> Die maximale Motordrehzahl ergibt sich aus der Drehmomentkennlinie.
ist zwar richtig, aber nutzlos, da das Drehmoment eben fallt, wenn der
Strom nicht mehr schnell genug steigen kann, weil Spannug zu gering und
Induktivität zu hoch.
Aber du hast vollkommen recht, daß es hierbei um den Strom der gesamten
Sinuswelle geht, und nicht um den Stromansteig pro Chopperimpuls, der je
gerade nur ein Bruchteil davon sein soll.
Gute Schrittmotortreiber, wie TB6560, kann man umschalten von 1/64
Schritt auf Halbschritt wenn man schneller fahren will. Das betrifft
aber den Ansteuertakt. Der Motor muss immer schnell genug (genug
Drehmoment bei der Geschwindigkeit) laufen können. Bei zu wenig Spannung
und zu hoher Induktivität nützt eine Reduzierung der Präzision der
Mikroschrittansteuerung nichts.
Ich stelle mir es übrigens schwer vor einfach den Schrittmodus
umzuschalten ohne die Ansteuerung (zum Beispiel bei einer CNC Fräse über
eine Software und LPT) davon wissen zu lassen. Denn ohne
Positions-Feedback geht diese davon aus, dass der Motor bei einem
Schritt um eine bestimmte Schrittweite sich weiterbewegt. Wenn man dann
einfach der Software "unterm Arsch" den Schrittmodus umstellst, stimmt
das ja nicht mehr.
Simon K. schrieb:> Ich stelle mir es übrigens schwer vor einfach den Schrittmodus> umzuschalten ohne die Ansteuerung (zum Beispiel bei einer CNC Fräse über> eine Software und LPT) davon wissen zu lassen.
Da hast Du sicherlich Recht. Dies zeigt eine der Grenzen einer (rein)PC
basierten Lösung. Eine Andere wäre z.B. der Jitter: Bei 6 kHz,
Halbschritt und einem Jitter von ca. 4 µs kann man von einem
Drehmomentverlust von ca. 10 % ausgehen.
BTW:
Im Allgemeinen habe ich festgestellt, dass es im Netz sehr
unterschiedliche Aussagen zum Thema Schrittmotor gibt. Einige meinen
z.B. alles mit einem 8-Bitter hinzubekommen, während andere DSP's oder
FPGA's dazu verwenden.
Gast schrieb:> (AVR mit 16MHZ können gut 10kHz für 2 Stepper liefern)
Ohne den geplanten Einsatzbereich der Steuerung zu kennen ist diese
Aussage ziemlich sinnfrei. Wenn man eine Steuerung hat die so
funktioniert, dass man nur von Position A nach B will, mit v_start = 0
und v_ziel = 0, und neue Fahrbefehle erst nach Vollendung des letzten
Fahrbefehls übernommen werden, mag das ja stimmen. Was anderes ist es,
wenn der Anwender in Echtzeit neue Befehle sendet (z.B. Joystick bei
CNC-Maschine), der Ruck begrenzt werden soll, der Motor optimal bestromt
werden soll(kleiner Strom bei kleiner Last), der Takt nur einen sehr
kleinen Jitter haben darf usw. Da braucht man dann eben
leistungsfähigeres als einen AVR.
LG Malte
> Wenn man dann einfach der Software "unterm Arsch" den> Schrittmodus umstellst, stimmt das ja nicht mehr.
Der Schrittmodus wird am Controller umgestellt.
Und beispielsweise TB6560 hat extra dem M0 Ausgang,
damit man entscheiden kann, wann man M1, M2 umstellen
kann.
Natürlich macht das die Software, die man halt passend
schreiben muss.