Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Schrittverluste
Hallo zusammen ...
bin neu hier, mal sehen, ob ihr mir helfen könnt ....
Ich betreibe hier zwei Schrittmotoren über jeweils einen Treiberbaustein der Firma Allegro ( A3977 ). Das PWM Signal
wird über ein MPC823 Timerbaustein generiert. Jeweils ein Timer hängt an einem Interrupt der das PWM
Signal erzeugt und via FPGA an den A3977 übergibt.
Auf dem MPC823 laufen jedoch noch weitere Dinge ( Tasks, DMA-Stuff, LCD-Stuff ... ), sodass das PWM Signal
nicht equdistant ist, das heisst, die Frequenz variiert. Je höher die Frequenz desto höher die Variation.
Frage: Kann dies ein Grund für ( meine real existierenden jedoch zur Zeit unerklärlichen ) Schrittverluste sein oder ist der Motor prinzipiell zu träge um solche Schwankungen im PWM Signal überhaupt zu "bemerken"
Vielen dank im voraus ...
Das PWM Signal ist moduliert und führt eine Spannung an den Motor, die entsprechend des Tastverhältnisses wirksam wird.
Das kann in einer Regelschleife sein, die den Strom konstant hält, oder ungeregelt, einfach nur, um die wirksame Spannung herabzusetzen.
Dann gibt es noch die Schrittsteuerung, die die Phasen für die Motorstellungen erzeugt. Die sollte natürlich auch möglichst gleichmäßig sein, um keine Zitterbewegung vorzugeben.
Wie sieht die Steuerung denn aus und wie hoch sind denn die PWM- und die Schrittfrequenz? (ungefähr)
Manfred
So wie ich die Spec verstehe liegt eine Strom-Regel vor, see ...
http://www.allegromicro.com/sf/3977/
und ich fahre hier den X-Motor mit ca. 500Hz und den Y-Motor mit etwa 300 HZ im Vollstepmode ( Mode 4). Unterschiedliche Freq. aufgrund von unterschiedlichen Lasten
ciao
Ich nehme an, daß der Baustein seine PWM Frequenz selbst generiert und hier von der Gleichmäßigkeit der Schrittfrequenz die Rede ist.
Dann sind Einflußgrößen die Ungleichmäßigkeit der mechnischen Last, die Höhe des Stromes, die Schrittfrequenz und die Gleichmäßigkeit der Schrittfrequenz. Am sicherten wäre es, wenn die mechnische Last gleichmäßig ist, den Schrittverlust sicher zu reproduzieren und danach wenn möglich die Schrittfrequenz um eine Sicherheitsabstand zu reduzieren.
Das Motorendiagramm könnte helfen den Sicherheitsabstand des Momentes in eine Schrittfrequezabsenkung umzurechnen.
Geht das in Richtung einer Antwort?
Manfred
Hallo Manfred
danke erstmal ....
Nein, dass PWM Signal wird von mir selbst ( im Interrupt des MPC823 ) erzeugt und via FPGA an den Treiberbaustein gelegt.
Du verwendest den Begriff Schrittfrequenz der mir unklar ist ... ich habe hier ein PWM Signal mit einer Frequenz von z.B. 500Hz, das sollte doch genügen ... was für eine Schrittfrequenz meinst Du ?
Mein Problem ist es, das ich die Frequenz des PWM Signales nicht äquidistant hinbekomme, ich also eine PWM Frequenz von vielleicht 500HZ +/- 20Hz habe und ich mir nicht sicher bin, ob das meine Schrittverluste verursacht. Mit den unterschiedlichen Motorbelastungen muss ich leben, die sind von besser bezahlten ( höheren ) Wesen als gegeben definiert
gruss
mark
und ich fahre hier den X-Motor mit ca. 500Hz und den Y-Motor mit etwa 300 HZ im Vollstepmode ( Mode 4). Unterschiedliche Freq. aufgrund von unterschiedlichen Lasten
Wenn die Schritte des Motors so schnell sind wie die PWM, die beispielsweise auch wie ein Schaltnetzteil mit 20kHz geschaltet werden könnte, dann haben wir ein Problem.
Die PWM schaltet die Spannung ein und aus weil ein zu viel ist und aus zu wenig, der Mittelwert wird wirksam. Wenn das solange dauert wie die Schritte dann können in den Ausschalt-Pausen ganze Schritte verloren gehen.
Manfred
Hallo Manfred
Den Allegro Treiber kann ich in vier Modi betreiben Vollstep, 1/2, 1/4, und 1/8 Step wobei ein Step 1.8 Grad entspricht.... Schrittfrequenz nun auch klar. Im Vollstep entspricht die Schrittfrequenz also der PWM Frequenz.
Das mit dem Mittelwert ist auch meine Befürchtung, SV wären die logische Folge
mark
Es ist hoffentlich klar, daß die Schrittfrequenz der PWM Frequenz nicht entsprechen darf. Die PWM sollte einen guten Sicherheitsabstand nach oben haben Faktor 10 (?) minimal, denn dann erhält man ja immer noch einen Jitter der Sollschrittfrequenz.
Das mit dem Mittelwert ist ja keine Befürchtung sondern eine Art die Spannung zu regeln (auf konstanten Strom innerhalb des Schrittes). Dabei wird die induzierte Spannung des Motors und die Wickungsinduktivität so gut es geht ausgeregelt.
So genau habe ich mir den Treiber nicht angesehen, aber warum sollte er nicht mit PWM 10kHz laufen?
Manfred
toemchen
28.07.2004, 08:47
Es gibt bei Schrittmotoren durchaus einige unangenehme Effekte, die sich nicht so leicht greifen lassen.
z.B. Resonanzen. Abhängig von der Last, wie hart die angekoppelt ist, welches Trägheitsmoment das gesamte System aufweist, läuft der Schrittmotor ja nicht konstant durch, sondern schwingt sich gerade bei niedrigeren Frequenzen immer wieder auf eine neue Position=Schritt ein. Es wäre jetz übertieben zu sagen, daß er bei jedem Schritt kurz stehenbleibt, aber der Effekt ist da. Und nun kommt es darauf an, ob der nächste Schritt gerade nach einem Überschwinger oder genau beim Zurückschwingen kommt. So kann es beim Durchlaufen einer Rampe schon weit vor der Grenzfrequenz, an der die Induktivität den Strom und damit das Drehmoment begrenzt, zu einem oder mehreren kritischen Bereichen kommen. Auch bei einem nackten Motor ohne Last. Das heißt, Last unterdimensionieren oder Motor überdimensionieren muß nicht zwingend helfen. Oft bringt einen aber schlicht der Wechsel eines Parameters zufällig aus dem kritischen Bereich heraus.
Frequenzjitter macht sich sehr schlecht, wenn Du zufällig IN einem der kritischen Bereiche bist.
Wenn man sich durch Mikroschritt einer sinusförmigen Ansteuerung annähert, müßten die Resonanzeffekte weniger werden.
Bist Du aktuell bei Vollschritt, 1/2, 1/4, 1/8? Ich dachte die Allegro Treiber gehen sogar bis 64tel... Nachdem Du von der Frequenzgenerierung erst bei 500Hz bist, wirst Du den Motor eher noch nicht mit Mikroschritten betreiben.
Grundsätzlich wäre besser: höhere Grundfrequenz und Mikroschritte. Wenn bei der Frequenzerzeugung Deiner Wahl der Jitter aber dann noch größer wird, hast Du nichts gewonnen.
Effekte bei der Stromregelung im Allegro: Glaube ich eher nicht. Habe ich es denn richtig verstanden, daß die Ansteuerfrequenz für die Schritte 500Hz ist?
Jetzt werden Vermutungen über eine Art Aliasing/Undersampling/Quantelung des eingebrachten Strom-Mittelwerts angestellt, wenn z.B. die interne PWM-Frequenz des Allegro zur Stromregelung 10kHz wäre.
So genau kenne ich mich zwar auch nicht aus. Ich glaube aber, daß der Strom über eine Chopperschaltung (Zweipunktregelung mit nicht festgelegter, aber bestimmt ziemlich schneller Frequenz) geregelt wird. Schließlich wird der Baustein mit (Halb-)Schrittfrequenzen bis zu 6kHz betrieben, da wären 10kHz als feste PWM-Frequenz tatsächlich undenkbar. 500Hz Ansteuerfrequenz müßten jedenfalls noch weit von solchen Effekten weg sein. Das einzige, das den Strom wirklich begrenzt, ist eigentlich fast immer die Induktivität des Motors im Zusammenspiel mit der Leerlaufspannung der Ansteuerung.
Das einzige, das den Strom wirklich begrenzt, ist eigentlich fast immer die Induktivität des Motors im Zusammenspiel mit der Leerlaufspannung der Ansteuerung
Die Ansteuerspannung wird noch um die induzierte Spannung verringert. Die Differenz wirkt dann auf die Induktivität und den ohmschen Widerstand der Spule.
Manfred
Hallo
" So genau habe ich mir den Treiber nicht angesehen, aber warum sollte er nicht mit PWM 10kHz laufen? "
... ich will ihn nicht mit 10kHz laufen lassen
"Frequenzjitter macht sich sehr schlecht, wenn Du zufällig IN einem der kritischen Bereiche bist. "
Der AllegroTreiber bietes ein sog. Home-Bit an. Das Home-Bit kommt nur, wenn der Sinus durch irgendeinen definierten Punkt geht ( 5Grad, bin aber nicht sicher, steht in Spec" Synchronisiert man seine Modewechsel auf dieses Bit, so sollte der von Dir beschrieben Effekt nicht vorkommen ( gemäss Spec ). So wie ich das verstehe gilt dies allerdings nur für Modewechsel
"Bist Du aktuell bei Vollschritt, 1/2, 1/4, 1/8? Ich dachte die Allegro Treiber gehen sogar bis 64tel... Nachdem Du von der Frequenzgenerierung erst bei 500Hz bist, wirst Du den Motor eher noch nicht mit Mikroschritten betreiben. "
Gemäss Spec gehts nur bis 1/8, was diesen Treiber angeht. Ich fahre in allen Modis, ändere jedoch innerhalb eines Bewegungsvorganges nicht den Mode da ich bislang noch nicht das HomeBit einlesen kann.
Prinzipiell korrekt, hohe Frequenz und 1/8 Schritt. Ich muss da jedoch Tribut an mein RTOS System zahlen. Hohe Frequenzen frisst mir die Rechenleistung meines MPC823 auf. DAher muss ich versuchen, tiefe Frquenzen zu fahren. Wenn es dann genau werden soll, umschalten auf 1/8
Das PWM Signal für den X-Motor beträgt maximal 500H bei Vollstep, für den Y-Motor beträgt er 300HZ ebenfalss bei Vollstep. Ich fahre jeweils eine Rampe von 100 Hz auf Endfrequenz
Vielen Dank für diese wirklich guten Infos. Ist meine erste Schrittmotorensteuerung ...
mark
toemchen
30.07.2004, 12:13
Ich habe es so verstanden, daß die Überlegungen, die hier in diesem Thread bezüglich der 10kHz stattfinden, sich auf die interne PWM-Frequenz des Treibers beziehen.
Und nicht auf die Ansteuer- bzw. Schrittfrequenz.
Zur Erklärung: Irgendwie muß der Baustein ja den Strom für eine Wicklung regeln. Wenn man mit 500Hz 1/8 Schritt ansteuert, gibt es ja z.B eine Zeitspanne von ca. 0,125ms, in der der Baustein versucht, der Spule einen bestimmten konstanten Stromwert zu geben entsprechend der Stelle des Sinus, an der er sich befindet. (Da kann jetzt bei den 0,125ms noch irgendwo ein Rechenfehler von mir drin sein.) Die Stromregelung macht er bestimmt nicht linear, sondern eben über PWM oder Chopper. Und wenn diese PWM-Frequenz nur 10kHz betrüge, hätte er in der angesprochenen Zeitspanne nur einmal Zeit, durch Ein/Abschalten den Strom zu regeln. Das gäbe komische Effekte. Aber wie gesagt, ich glaube diese interne Frequenz ergibt sich einfach aus dem System Induktivität/Schalttransistor und liegt viel höher.
Home-Bit: Da kenne ich mich nicht aus, glaube aber auch, daß es sich nur darum dreht, daß beim Wechsel der Modi nicht ein Sprung in der Stromhöhe oder gar ein zusätzlicher Mikroschritt eingebaut wird. Das wäre dann beim Nulldurchgang sicher am problemlosesten.
Tom.
Als Randbedingung können wir sicher festhalten, daß es die Aufgabe der PWM ist, mit einem Ein und Ausschalten der Spulenspannung einen für die jeweilige Phase festgelegten Stromwert zu erreichen. Im Fall von ganzen Schritten ist dies der Nominalstrom (der bei Stillstand des Motors oft auch abgesenkt wird).
Die PWM Frequemz sollte höher gewählt sein als die Schrittfrequenz damit die Regelung eine Chance hat, den Sollwert anzusteueren.
Ohne Synchronisation zwischen Schrittfrequenz und PWM Frequenz, wenn also der Schritt nicht mit einem Anstieg des Stroms beginnt, sondern noch auf die unsynchronisierte Phase der PWM gewartet wird, ergibt sich ein Jitter, der sich je nach Größe störend auswirkt und das erreichbare Moment des Motors reduziert.
Soviel zur Grundlage, man kann dann die PWM Frequenz sehr hoch wählen oder synchronisieren oder einen gewissen Abfall des Momentes tolerieren, das ist von Fall zu Fall unterschiedlich.
Manfred
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.