Forum: Mikrocontroller und Digitale Elektronik Schrittmotor mit


von Pill Collins (Gast)


Lesenswert?

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!

von citb (Gast)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Hansi C. (honsey)


Lesenswert?

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 :)

von Klaus (Gast)


Lesenswert?

Pill Collins schrieb:
> verliert er natürlich
> einige Schritte

Ein Schrittmotor, der natürlich Schritte verliert, wird vielleicht 
suboptimal elektrisch angesteuert.

MfG Klaus

von Werner (Gast)


Lesenswert?

Η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.

von Anja (Gast)


Lesenswert?

Η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

von Hansi C. (honsey)


Lesenswert?

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.pdfhttp://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

von MaWin (Gast)


Lesenswert?

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

von ich (Gast)


Lesenswert?

>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

von Hansi C. (honsey)


Lesenswert?

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.

von Hansi C. (honsey)


Lesenswert?

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

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

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

von Andreas R. (andrewr)


Lesenswert?

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
Noch kein Account? Hier anmelden.