Schönen guten Morgen, ich verzweifle hier gerade ein bisschen mit der Ansteuerung eines Schrittmotors. Der Motor soll den Bewegungen eines Linearpotentiometers aus einem alten Mischpult folgen. Bei sehr niedrigen Geschwindigkeiten funktioniert das sehr gut, aber wenn ich den Motor schneller anfahren möchte, verliert er natürlich einige Schritte beim Richtungswechsel. Meine erste Idee ist es jetzt, die eingelesenen ADC-Werte des Potis in eine Art "Pufferarray" zu laden und den Motor mit etwas Verzögerung fahren zu lassen. So könnte er wissen, wann ein Richtungswechsel erfolgen muss um vorher abzubremsen. Bevor ich das Rad jetzt aber neu erfinde, frage ich mich ob vielleicht jemand ein bisschen Lektüre oder Code-Schnipsel zu diesem Thema ("Echtzeitsteuerung von Schrittmotoren?") parat hat. CNC Fräsen Joysticksteuerung oder diese "Stepper Gauges" z.B. dürften ja z.B. ähnliche Probleme haben. Herzlichen Dank!
Ich wuerde da eine Positionierung machen. Gas Poti gibt ueber den ADC die anzufahrende Position vor. Ein anderer Programmteil sorgt dafuer, dass der Motor dorthinfaehrt. citb
Pill Collins schrieb: > aber > wenn ich den Motor schneller anfahren möchte, verliert er natürlich > einige Schritte beim Richtungswechsel. Du darfst auch nicht direkt die Richtung umdrehen. Ich würde erst die Bremsrampe abfahren. Ggf. noch ein Päuschen einlegen bis sich der Motor beruhigt hat, und dann wieder die Beschleunigungsrampe in die andere Richtung abfahren. Gruß Anja
Das ist mir ja auch klar, aber mein Richtungswechsel kommt ja "unvorhersehbar", anders als im Standardbetrieb einer Fräse z.B., wo ein Set von vordefinierten Positionen angefahren wird. Ich frage mich, wie man so etwas mit minimaler Verzögerung realisieren kann. Ich schätze mal bis 20-30ms dürfte die Motorbewegung hinter der Faderbewegung hinterher hinken, ohne dass es unangenehm auffällt. Würden eurer Meinung nach diese 20/30ms ausreichen, für eine Ent- und neue Beschleunigung in die andere Richtung? //edit: Nicht wundern, habe gerade mein Account-Passwort wieder rausgefunden :)
Pill Collins schrieb: > verliert er natürlich > einige Schritte Ein Schrittmotor, der natürlich Schritte verliert, wird vielleicht suboptimal elektrisch angesteuert. MfG Klaus
Ηanspeter ĸadel schrieb: > Das ist mir ja auch klar, aber mein Richtungswechsel kommt ja > "unvorhersehbar" Was heißt "unvorhersehbar"? Das Poti macht doch keine Sprünge und den Bedienknopf reißt beim Richtungswechsel auch keiner ab. Wenn aus den gemessenen Potipositionen und der aktuellen Geschwindigkeit des Motors die Beschleunigung ausrechnest, diese begrenzt und das als Limit für die Pause zum nächsten Schritt in die Rechnung einfließen läßt, kann der Motor auch sauber folgen.
Ηanspeter ĸadel schrieb: > Würden eurer Meinung nach diese 20/30ms ausreichen, für eine Ent- und > neue Beschleunigung in die andere Richtung? Das kannst nur Du beantworten: Die Brems und Beschleunigungsparameter stehen im Datenblatt des Schrittmotors. Ich würde die Motorgeschwindigkeit in Abhängigkeit der Weg-Differenz zum Ziel regeln um minimales Überschwingen zu erhalten. Im Auto haust Du ja auch nicht den Rückwärtsgang rein bloß weil die Ampel plötzlich auf "ROT" springt. Gruß Anja
Danke euch! Also der Motor, den ich hier zur Verfügung habe ist ein VEXTA PK264M-01A. Ich habe folgende Dokumente dazu auftreiben können: — http://www.orientalmotor.com/products/pdfs/opmanuals/HM-601-13JECK.pdf — http://ftp.cnchungary.com/Varsanyi_Peter/CNC%20vezerles%20-%20PLC/50VEXTASTEP.pdf Komischerweise, decken sich die Angaben nicht mit dem, was auf dem Motor hinten draufsteht: 12V / 1A. In den Datenblättern ist die Rede von 8.1V und 0.71A/Phase. (Geben die auf dem Motor die empfohlene Dimensionierung der Spannungsquelle an – was ja auch Quatsch wäre, zumindest bei der Stromstärke…) Im zweiten PDF finden sich Torque/Speed Graphen. Hier verstehe ich nicht, warum zwei Kurven eingezeichnet sind: 24V / 48 V Wonach ich aber eigentlich gesucht habe, waren ja empfohlene Be- und Entschleunigungen. Kann man die irgendwie von den Graphen ableiten? Hansi
Jede brauchbare Schrittmotorsteuerung beachtet die maximale Beleunigung/Abbremsung und Schrittfrequenz des Motors. Dazu ist kein "Pufferarray" nötig, sondern schlicht die Beachtung der Start/Stop-Rampe. http://www.s-line.de/homepages/schweikert/SMCtrl/Program/code.htm
>Wonach ich aber eigentlich gesucht habe, waren ja empfohlene Be- und >Entschleunigungen. Kann man die irgendwie von den Graphen ableiten? Die sind natürlich lastabhängig. Stichwort Trägheitsmoment
Ich kann die Last leider nicht genau bestimmten. Deshalb hoffe ich, dass es eine Art Faustregel gibt, mit der man mal anfangen kann zu experimentieren.
MaWin schrieb: > Jede brauchbare Schrittmotorsteuerung beachtet die maximale > Beleunigung/Abbremsung und Schrittfrequenz des Motors. Ich habe hier so einen Chopper-Driver von Allegro: A3967. Das zählt wohl nicht als Schrittmotorsteuerung, oder? :) > Dazu ist kein "Pufferarray" nötig, sondern schlicht die > Beachtung der Start/Stop-Rampe. > > http://www.s-line.de/homepages/schweikert/SMCtrl/Program/code.htm Das klingt sehr sehr gut:
1 | Berechnung der Start/Stop Rampen: |
2 | […]Für einen interaktiven Betrieb, bei dem ein Benutzereingriff (z.B. über Vorwärts- |
3 | /Rückwärtstasten oder gar Digitaldrehgeber) jederzeit möglich sein soll, ist dieses |
4 | Verfahren ungeeignet. |
5 | Stattdessen wird hier bei jedem Berechnungszyklus (in 'Main' mit 300Hz) aufgrund der |
6 | aktuellen Geschwindigkeits-, Positions- und Zieldaten neu ermittelt, ob ein Motor |
7 | beschleunigt, abgebremst oder die aktuelle Geschwindigkeit beibehalten werden soll.[...] |
Danke vielmals. Ich versuche das mal in C umzusetzen
Hallo Hansi! > Also der Motor, den ich hier zur Verfügung habe ist ein VEXTA > PK264M-01A. Ich habe folgende Dokumente dazu auftreiben können: > > — http://www.orientalmotor.com/products/pdfs/opmanuals/HM-601-13JECK.pdf > — > http://ftp.cnchungary.com/Varsanyi_Peter/CNC%20vezerles%20-%20PLC/50VEXTASTEP.pdf > > Komischerweise, decken sich die Angaben nicht mit dem, was auf dem Motor > hinten draufsteht: 12V / 1A. In den Datenblättern ist die Rede von 8.1V > und 0.71A/Phase. Die 1A beziehen sich auf den unipolaren Betrieb, die 0,71A auf den bipolar seriellen Betrieb. http://www.schrittmotor-blog.de/?p=12 > (Geben die auf dem Motor die empfohlene Dimensionierung > der Spannungsquelle an – was ja auch Quatsch wäre, zumindest bei der > Stromstärke…) Nein. Das ist die Spannung, die verwendet werden muss, wenn man die Wicklungen direkt schaltet, ohne Stromregler. http://www.schrittmotor-blog.de/?p=23 > Im zweiten PDF finden sich Torque/Speed Graphen. Hier verstehe ich > nicht, warum zwei Kurven eingezeichnet sind: 24V / 48 V Weil die Drehmomentkennlinie von der Versorgungsspannung des Treibers abhängt. Wie man deutlich sehen kann, erreicht der Motor bei höheren Spannungen im obreren Drehzahlbereich mehr Drehmoment und gibt damit mechanisch mehr Leistung ab. > Wonach ich aber eigentlich gesucht habe, waren ja empfohlene Be- und > Entschleunigungen. Kann man die irgendwie von den Graphen ableiten? Ja, aber nur, wenn man die Lastmomente kennt. Mit freundlichen Grüßen Thorsten Ostermann
Hallo Pill Collins, du hast nichts darüber geschrieben was du als Schrittmotortreiber (Schrittmotorendstufe) verwendest und mit welcher Spannung du diese betreibst. Thorsten Ostermann hat Dir eigentlich schon alles wesentliche erklärt. Die angegebene Spannung ist die Spannung bei der ohne Stromregelung der Nennstrom in der Motorwicklung fließt, hängt dann vom Innenwiderstand der Wicklung ab. U=RxI -> R=U/I D.h. bei Deinen Angaben 12V 1A, hat der Motor 12 Ohm. Das ist für einen Schrittmotor schon ein recht hoher Innenwiderstand. Der entsteht durch einen relativ langen dünnen Draht in der Wicklung. Einher mit diesem langen dünnen Draht geht nahezu eine für einen Schrittmotor schon recht hohe Induktivität. Wenn Du Dir mal z.B. auf der Nanotec Seite Drehzahl/Drehmomenttabellen ansiehst (die haben da zu jedem Motor ein ausführliches Datenblatt), wirst du feststellen, das mit wachsendem Widerstand automatisch die Induktivität zunimmt und die maximale Drehzahl ganz gewaltig in den Keller geht!!! Ausserdem wirst du feststellen das mit sinkender Betriebsspannung die Drehzahl ebenfalls ganz gewaltig sinkt. Das ist auch völlig logisch, da ein zünftiges Magnetfeld erst dann entsteht wenn ein Strom fließt und das ist erst der Fall wenn die Induktivität in Sättigung geht. Und da ist die Betriebsspannung mit ausschlaggebend. Ich betreibe normalerweise 2V Motore an 48V, dann kommen die auch "in Gang"! Dazu bedarf es dann natürlich einer Stromregelung. Es gibt da auf dem Markt ganz tolle IC´s mit denen man super Schrittmotorendstufen bauen kann. Nur z.B. den L6208. Mit dem teste ich gerade rum... Siehe: http://www.youtube.com/watch?v=TDBFL_EKElQ&list=UU-5HTdaSo9iAf0idu_llidQ&index=2&feature=plcp und http://www.youtube.com/watch?v=1QAYDF5bQRQ&list=UU-5HTdaSo9iAf0idu_llidQ&index=1&feature=plcp Die kannst du mit einem Microcontroller super mit Takt und Richtungssignal ansteuern. Des Weiteren hat der Motor einen Rotor. Dieser hat eine gewisse Masse und somit ein sogenanntes Massenträgheitsmoment. Kommst du dem nun unmittelbar mit der von Dir gewünschten Taktfrequenz, dann kommt die Masse des Rotors so schnell nicht hinterher und du verlierst Zwangsläufig Schritte, schlimmstenfalls dreht sich der Motor gar nicht sondern quikt nur vor sich hin. Also, erst mal rausfinden bei welcher Drehzahl er überhaupt ohne Beschleunigungsrampe noch anläuft (die sogenannte Start-Stop-Drehzahl) und ab da geht ohne Rampe sowieso nichts mehr. Fazit: 1.) Schneller Motor (kleine Induktivität, kleiner Innenwiderstand) 2.) Hohe Betriebsspannung (um die Induktivität schnell zu laden) 3.) Vernünftige Schrittmotorendstufe mit Stromregelung. 4.) Falls die gewünschte Drehzahl über der Start Stopp Drehzahl liegt brauchst du Rampen ...dann klapts auch... Gruß, Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.