Forum: Mikrocontroller und Digitale Elektronik Kreisbewegung mit zwei Schrittmotoren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Keine A. (karabennemsi)


Lesenswert?

Ist meine instinktive Annahme korrekt, dass die Beschleunigungskurve für 
eine viertel Kreisbewegung aus einer Cosinus und Sinus Funktion erzeugt 
werden kann?

Wenn ich in der XY-Ebene bin und eine viertel Kreisbewegung machen 
möchte, so muss (je nach Fahrtrichtung) die X-Achse in Form eines Sinus 
und die Y-Achse in Form eines Cosinus beschleunigen bzw. wieder 
langsamer werden?

von Udo S. (urschmitt)


Lesenswert?

Da der Sinus und Cosinus genau so definert sind: Ja!
Siehe
https://de.wikipedia.org/wiki/Sinus_und_Kosinus#Definition_am_Einheitskreis

von Keine A. (karabennemsi)


Lesenswert?

Prima, dann probiere ich es mal so.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Keine A. schrieb:
> dass die Beschleunigungskurve für eine viertel Kreisbewegung aus einer
> Cosinus und Sinus Funktion erzeugt werden kann?
Ja, weil ein Kreis an sich eine Sinusfunktion ist und zudem die 
Ableitung eines Sinus/Cosinus wieder einen Cosinus/Sinus ergibt.

von Vanye R. (vanye_rijan)


Lesenswert?

Interessant wird das erst wenn man es auf einem Mikrocontroller
macht ohne das man sin hat. .-)

Vanye

von Michael B. (laberkopp)


Lesenswert?

Keine A. schrieb:
> eines Sinus und die Y-Achse in Form eines Cosinus beschleunigen

Da Sinus und Cosinus die Ableitung von Cosinus und Sinus sind, und 
Beschleunigung die Ableitung der zu fahrenden Kurve, passt das.

Da aber Schrittmotoren ihre Position nur in diskreten Schritte ändern 
können, braucht man einen Algorithmus der die Zeitpunkte generiert an 
denen die Achsen ihre Schritte ausfuhren sollen, und das überlagert von 
Beschleunigungs- und Bremsrampen damit das Bewegte dem Schrittmotor 
folgen kann. Daher verwendet man als Algorithmus Bresenham DDA oder 
Cordic.

Am schlauesten guckst du dir open source CNC G-Code Interpreter an. 
Manche lösen das Problem aber auch stumpf in einer Vieleckannäherung. Da 
die aber 3-d und Kreisbögen können müssen, sind sie etwas komplexer.

von Jens G. (jensig)


Lesenswert?

Keine A. schrieb:
> Wenn ich in der XY-Ebene bin und eine viertel Kreisbewegung machen
> möchte, so muss (je nach Fahrtrichtung) die X-Achse in Form eines Sinus
> und die Y-Achse in Form eines Cosinus beschleunigen bzw. wieder
> langsamer werden?

Also wenn die Kreisbewegung oben anfängt, dann hätte ich es jetzt genau 
andersherum gedacht. Aber vielleicht verstehe ich ja "die X-Achse ... 
beschleunigen" auch einfach nur falsch. Vielleicht meintest Du damit 
aber tatsächlich "in y-Richtung" beschleunigen, dann wäre Deine Aussage 
tatsächlich wiederum richtig.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Wieso Beschleunigung? Das Anfahren und Bremsen ist doch nicht 
interessant.

Für Mikrocontroller wäre auch der Bresenham-Algoritmus brauchbar, der 
benötigt keine Sinusfunktion:
https://de.wikipedia.org/wiki/Bresenham-Algorithmus

von Keine A. (karabennemsi)


Lesenswert?

Christoph db1uq K. schrieb:
> Wieso Beschleunigung? Das Anfahren und Bremsen ist doch nicht
> interessant.

Christoph db1uq K. schrieb:
> Wieso Beschleunigung? Das Anfahren und Bremsen ist doch nicht
> interessant.

Ich habe meine Schrittmotoren so programmiert (externe Flanken 
gesteuerte Treiber), dass ich denen eine Schrittweite, Richtung und 
Beschleunigungsrampe übergebe. Anschließend wird diese Bewegung 
nebenläufig abgefahren.

Zwei Schrittmotoren in ihren abzufahrenden Schritten zu synchronisieren 
ist da jetzt tatsächlich mehr Aufwand, als die Geschwindigkeitkurve in 
Abhängigkeit der aktuellen Position zu ermitteln.

Und tatsächlich habe ich eine Sinus/Cosinus Lookup Tabelle verwendet und 
die prinzipielle Bewegung sieht schon gut aus. Lediglich ist jetzt die 
Bewegung noch ein abgerundetes Rechteck als ein Kreis.

von Bernd B. (berbog)


Lesenswert?

Sehe dir doch mal die Marlin https://marlinfw.org/ oder GPRL 
https://github.com/gnea/grbl-Mega Software für 3D Drucker an. Vieleicht 
kannst du davon was übernehmen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>noch ein abgerundetes Rechteck als ein Kreis

Das wird sich mit einem Schrittmotor nicht völlig vermeiden lassen. Der 
macht ja Schritte, zunächst mal Winkelschritte seiner Achse.
Die werden z.B. über ein Zahnrad auf der Achse und eine Zahnstange in 
eine Linearbewegung umgewandelt.
Die Zahl der Schritte pro Umdrehung ist durch die Anzahl der Magnetpole 
fest vorgegeben, das Zahnrad bringt noch eine wählbare Untersetzung.

Man kann die Auflösung auch noch durch Mikroschritte verbessern, eine 
Interpolation zwischen zwei Nachbarpunkten, ähnlich einer 
Pulsbreitenmodulation. Das scheint hier nicht der Fall zu sein.

>Zwei Schrittmotoren ... zu synchronisieren
Damit die Rechtecke schön rund werden, müssen sich beide Schrittmotoren 
gleichzeitig drehen, wenn sie nacheinander laufen wird es eckig. Nur für 
eine Bahn von 45 Grad müssen beide gleich schnell laufen, soll das noch 
genauer geregelt werden?

von Carsten-Peter C. (carsten-p)


Lesenswert?

Moin, das wurde mal ganz gut in einer C’t beschrieben. Ist aber schon 
sehr lange her. Ähnlich wie Du mache ich es mit der „geraden“ Funktion 
aus der C’t. Das wurde früher für den Z80 veröffentlicht, aber das 
Flussdiagramm konnte man sehr gut übernehmen. Für meinem XZ- Tisch nutze 
ich Motore mit 200 Schritte/U, die ich im 1/8 Schritt laufen lasse und 
damit eine Kugelumlaufspindel antreibe. Somit habe ich eine Auflösung 
von 200*8 Schritten/U, wobei ein Vortrieb von 0,5 cm/U entsteht. Da 
sieht man keine Stufen mehr.
Gruß
Carsten

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>Flanken gesteuerte Treiber
Die Drehzahl eines Schrittmotors müsste linear von der Frequenz dieser 
Flanken abhängen. Zweimal pro Kreisbahn steht ein Schrittmotor still, 
dabei ändert er seine Drehsinn. Zweimal erreicht er seine maximale 
Drehzahl. In der halben Zeit dreht er links herum, die andere Hälfte 
rechts herum. Also müssten insgesamt vier Parameter gesteuert werden, 
zwei Taktfrequenzen und zwei Drehrichtungs-Vorzeichen.

von Falk B. (falk)


Lesenswert?

Christoph db1uq K. schrieb:
> Die Drehzahl eines Schrittmotors müsste linear von der Frequenz dieser
> Flanken abhängen. Zweimal pro Kreisbahn steht ein Schrittmotor still,
> dabei ändert er seine Drehsinn. Zweimal erreicht er seine maximale
> Drehzahl. In der halben Zeit dreht er links herum, die andere Hälfte
> rechts herum. Also müssten insgesamt vier Parameter gesteuert werden,
> zwei Taktfrequenzen und zwei Drehrichtungs-Vorzeichen.

Nun ja, das Problem der synchronen Ansteuerung von Schrittmotoren incl. 
Beschleunigung für Kreisbahnen oder gar beliebigen Kurven ist nicht ganz 
trivial, aber dennoch Stand der Technik. Millionen CNC-Maschinen 
beweisen das.

von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> Die Zahl der Schritte pro Umdrehung ist durch die Anzahl der Magnetpole
> fest vorgegeben

Unsinn.
Heutige Schrittmotortreiber können die Motorwicklungen mit 
Zwischenwerten ansteuern. Der Motor bewegt sich bei genügend feiner 
Steuerung des Stromes fast kontinuierlich von einem Magnetpol zum 
nächsten.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Du willst aber eine beliebige Kurve mit konstantem Drehmoment 
durchfahren... Nicht so einfach.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>mit Zwischenwerten ansteuern
das sagte ich ja, Mikroschritte, aber aus seinen Aussagen entnehme ich, 
dass nur mit der Schrittgeschwindigkeit getaktet wird, ohne 
Zwischenwerte durch zusätzliche Hardware oder Softwaretricks.

Ich finde es interessanter die Funktionen, die die Geschwindigkeiten 
durchlaufen müssen, zu berechnen (Drehmoment noch nicht berücksichtigt).
Ist das ein Sinusquadrat, Sinusbetrag oder noch etwas anderes? Es muss 
jedenfalls die doppelte Frequenz haben.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> das sagte ich ja, Mikroschritte, aber aus seinen Aussagen entnehme ich,
> dass nur mit der Schrittgeschwindigkeit getaktet wird, ohne
> Zwischenwerte durch zusätzliche Hardware oder Softwaretricks.

Mikroschrittfähige Treiber arbeiten für den Schritttakt als 
Untersetzung, d.h. die Software merkt das gar nicht. Bei einem Treiber 
mit 16-fach Mikroschrittsteuerung und einem Schrittmotor mit 200 
Schritten pro Umdrehung sieht das für die Software wie ein Motor mit 
3200 Schritten pro Umdrehung aus. Damit wird der Kreis schon ziemlich 
rund.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ja wenn er sowas hat, wir wissen ja nichts genaueres zur Hardware oder 
Anwendung.

>dass ich denen eine Schrittweite, Richtung und Beschleunigungsrampe übergebe
Das mit der Beschleunigung halte ich immer noch für unnötig. Das würde 
bedeuten, dass der Schrittmotor aus unbekanntem Grund langsam hochfahren 
muss.
Einzelne Flanken an den Treiber zu schicken klingt nach recht simpler 
Hardware, auch wenn sich da noch Mikroschritte verstecken sollten.
"Schrittweite" setzt dagegen schon eine intelligentere Bedienung voraus. 
H-Brücken mit einfachem Interface (L297+L298 von ST) brauchen nur Takt 
und Richtung.
https://www.st.com/en/motor-drivers/stepper-motor-drivers/products.html

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

In der 3D-Druck-Szene sind die TMC2208/TMC2209 recht beliebt.

von Spess53 .. (hardygroeger)


Lesenswert?

Hi

>"Schrittweite" setzt dagegen schon eine intelligentere Bedienung voraus.
>H-Brücken mit einfachem Interface (L297+L298 von ST) brauchen nur Takt
>und Richtung.

Diese Bausteine sind auch schon über 30 Jahre alt. Die Welt hat sich 
seitdem ein Stück weiter gedreht.

MfG Spess

von Carsten-Peter C. (carsten-p)


Angehängte Dateien:

Lesenswert?

Moin, wie Christoph schon schrieb, wissen wir wenig über das Projekt. 
Wenn Du den Kreis nach Bresenham bauen möchtest, hilft Dir vielleicht 
das Flussdiagramm weiter. Du musst den Kreis in 8 Teilen betrachten. Der 
schnellere Motor macht immer einen Schritt. Berechnen musst Du, ob der 
langsamere Motor auch einen Schritt machen muss. Egal, ob Vollschritt, 
Halbschritt oder Mikroschritt. Eine Rampe sollte auch kein Problem sein. 
Das Flussdiagramm vom Kreis kann ich leider nicht mehr finden, aber das 
von der Linie ist ja ähnlich. Ich habe mir auch überlegt einen Kreis zu 
berücksichtigen, habe es aber nicht gemacht, weil ich das einfach nicht 
brauchte. Vielleicht helfen Dir die Kopien weiter.
Viel Erfolg
Carsten

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

>schon über 30 Jahre alt
Ich weiß, aber die werden immer noch z.B. für den Arduino als Modul 
angeboten, es gibt vermutlich fertige Libraries dazu. Das ist für viele 
der Grund, die einzusetzen, statt der moderneren z.B. die genannten von 
Trinamic.

Gibt es einen Grund, für eine langsame Beschleunigung? Für dickere 
Schrittmotoren könnte es ja sein, dass der Anlaufstrom so hoch ist, dass 
die Sicherung oder sogar der Motor durchbrennt. Und der Radau wird 
vermutlich etwas geringer, wenn man 3D druckt.

Den Bresenham habe ich mal benutzt um auf einem Grafikdisplay Kreise zu 
zeichnen (ein Smith-Diagramm), in AVR Assembler, hat gut funktioniert. 
Ich habe den Kreis auch in acht Teile zerlegt berechnet.

: Bearbeitet durch User
von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Einen sauberen Kreis bekommt man mit diskret angesteuerten SMs nur mit 
Getrieben bei sehr hohen Übersetzungen und langsamem Betrieb hin, wie 
bei Solar-Reflektoren oder den Spiegeln in Radiosteleskopen. Direkt 
steuern geht nur sinnvoll über Microstep oder eventuell mit hohen 
Geschwindigkeiten unter Nutzung der Trägheit.

Ich hatte mal eine Anwendung, die Laser rotieren ließ. Das wurde mit 
fein steuerbaren Spiegeln erreicht. Aufgrund der Form und Lagerung 
hatten die ein etwas kompliziertes Drehverhalten und Trägheit, die 
ausgeglichen werden musste, um überhaupt zu einer kreisförmigen 
Reflexion zu kommen. Generell wurde mit SIN-COS angefahren, bei 
überlagerter Kompensation der Achsenträgheiten und zusätzlicher 
überlagerter Kompensation des Rastmoments der SMs. Die Phase musste auch 
noch gesteuert werden, wegen langsamem Anlaufen und der Notwendigkeit 
eines Vorlaufes bei höheren Tempi, weil die Spiegel zunehmend hinterher 
hinken und dafür weiter rotieren, weswegen die Amplitude gesteuert 
werden musste.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Oder ein Radioteleskop welches Sternen folgt. Da sind die Zeitkonstanten 
nur bisserl größer 😎

von Thomas Z. (usbman)


Lesenswert?

Christoph db1uq K. schrieb:
> Für dickere
> Schrittmotoren könnte es ja sein, dass der Anlaufstrom so hoch ist, dass
> die Sicherung oder sogar der Motor durchbrennt

das ist Unsinn. Ein Schrittmotor hat im Gegensatz zu einer 
Wechselstrommotor keinen erhöhten Anlaufstrom.. SM werden mit Konstantem 
Strom betrieben, Wechselstrommotoren mit konstanter Spannung.

von Rainer W. (rawi)


Lesenswert?

Christoph db1uq K. schrieb:
> Für dickere Schrittmotoren könnte es ja sein, dass der Anlaufstrom so
> hoch ist, dass die Sicherung oder sogar der Motor durchbrennt.

Bei Schrittmotoren gibt es keinen "Anlaufstrom". Halbwegs aktuelle 
Schrittmotortreiber arbeiten mit Stromregelung. Solange die 
Betriebsspannung ausreichend hoch ist, bekommen die Motorwicklungen da 
genau so viel Strom, wie der Treiber vorgibt,

von Carsten-Peter C. (carsten-p)


Lesenswert?

Christoph db1uq K. schrieb:
> Gibt es einen Grund, für eine langsame Beschleunigung?

Hallo, SM würden bei einer zu großen Anfangs- und Endgeschwindigkeit 
einfach nur vibrieren, sich aber nicht mehr drehen. Durch die 
Induktivität der Wicklungen werden sie mit zunehmender Geschwindigkeit 
hochohmiger und nehmen irgendwann die gebrauchte Leistung nicht mehr 
auf.
Es sind zwar keine Kreise, aber ohne Getriebe und Übersetzung direkt an 
die Kugelumlaufspindel gebracht gezeichnet. Auch Kreise mit einem 
Durchmesser von 40cm sind ohne Einbußen der Genauigkeit kein Problem.

Beitrag "Re: Zeigt her eure Kunstwerke (2021)"
Gruß
Carsten

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Thomas Z. schrieb:
> Ein Schrittmotor hat im Gegensatz zu einer
> Wechselstrommotor keinen erhöhten Anlaufstrom.
Man muss aber immer das System in Bewegung setzen. Schon der SM selber 
hat eine Trägheit. Das gilt um so mehr für angeschlossene Wellen oder 
Getriebe, sowie natürlich die Lasten. Die müssen bei der Steuerung mit 
berücksichtigt werden. Das braucht mehr Leistung und damit auch Strom in 
der Anlaufphase. Umgekehrt kann man wegen der Rückwirkung der Last nicht 
beliebig viel Drehmomentvorgabe auf den Motor legen.

Dieser überwindet neben der eigenen Trägheit zunächst das Spiel des 
Getriebes, dann die Rotationsspeicherwirkung der Welle und letztlich 
über die Befestigung seine Last(en). Das ist ein mehrfaches, 
sequenzielles Feder-Masse-Dämpfungssystem mit durchaus komplizierter 
Gegen-"Impedanz".

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.