Forum: Mikrocontroller und Digitale Elektronik Schrittmotor mit closed Loop Regelung für wechselnde Lasten


von Stepper_Fragender (Gast)


Lesenswert?

Hallo zusammen,

ich möchte für ein Automatisierungs Testaufbau mehrere Schrittmotoren 
einsetzen. ca Nema 23 mit 3NM.

Während des Automatisierungs-Ablaufs müssen die Motoren unterschiedliche 
Lastmomente verarbeiten können. Normalerweise werden die Schrittmotoren 
mit Takt und Richtungs Signalen angesteuert als Rampe bzw. nach oben 
offene und untene Parabel angesteuert so dass sich eine quasi S förmige 
Anfahr und Anahlte Kurve ergibt.

Bei einer CNC Anwendung ist z.B. das auftretende Lastmoment durch die 
Geometrie, Materialgewicht, Übersetzung usw. nahezu konstant so dass man 
bei ausreichender Reserve davon ausgehen kann, dass keine 
Schrittverluste auftreten können.

Wenn sich die Lastmomente durch z.B. in zufälliger Reihenfolge zu 
verarbeitende kleine und größere Lasten wesentlich unterscheiden ( 
kleinste Last = 100 % , größte Laste 300 % müssten die Ansteuer Rampen 
immer nach der größten Last dimensioniert werden und viel 
Geschwindigkeitspotential verschenkt werden.

Ich möchte nun aus Kostengründen eine standard Stepper Endstufe 
verwenden und meine eigene Steuerung per Mikrocontroller dazwischen 
hängen.
Dieser soll die Impulse eines Drehencoder, welcher sich auf der 
Rückseite des zweiachsigen Schrittmotors befindet auswerten.

In meinem Fall würden schwere Lasten automatisch langsamer und leichtere 
Lasten automatisch schneller verarbeitet. Der SW Regler im Controller 
würde dann anhand der Lastaufnahme quasi in Echtzeit eine "quasi" 
Einschaltkurve aufnehmen und daraus die Parameter für die Rampe für 
Verarbeitung des Objectes errechenen.

Ist diese Vorhaben so durchführbar oder hab ich einen groben Denkfehler 
?

Fertige Kombinationen Schrittmotor + Encoder + Endstufe mit Encoder 
Auswertung sind sehr teuer, wenn mann bedenkt, dass ich davon 4 oder 5 
bräuchte.

Bin für jeden Tipp dankbar.

von Noch einer (Gast)


Lesenswert?

Puh! Da brauchst du einen Encoder, der den Lastwinkel misst. Und eine 
Regelung, die den Winkel unterhalb des kritischen Wertes hält - Wenn der 
Motor einen Schritt verloren hat, musst du ja wieder bei Start/Stop 
Frequenz neu anfangen.

Kein Wunder, dass so etwas teurer als ein Servomotor wird.

von Thomas DG5MPQ (Gast)


Lesenswert?

Hallo gast,

die erste Frage ist folgende
willst du syncronen Betrieb machen mit mehreren Motoren ????
Oder willst du nur schauen, dass die Motoren trotz großer Last dort sind 
wie sie sein sollen ...

Dann die Frage weiter:  Wenn der Motor in hoher Drehzahl ist, und dann 
kommt die Last, welche Strategie hast du vor um den Motor wieder hoch zu 
bekommen...
Denn dann musst du wieder mit Rampe hochkommen.

Dann: 1.  Soll das nur ein Motor sein pro Kontroller
      2.  Wenn mehrere Motoren   wie Synconisieren ???

Schrittmotoren haben ein maximales Drehmoment. Wenn dieses Überschritten 
wird, ist es sehr schwer diese wieder einzufangen.
Da sind Servos eigentlich das richtige (Und auch teurer)
denn diese können teilweise kurz bis zu 400%.


Beschreibe mal genauer was du vor hast.

Gruß Thomas

von Pandur S. (jetztnicht)


Lesenswert?

Was spricht gegen Servomotoren ? Die sind besser geeignet fuer aendernde 
Lasten. Darf auch ein BLDC sein.

von Stepper_Fragender (Gast)


Lesenswert?

Hallo zusammen,

vielen Dank für die Reaktionen  :-))

1a). willst du syncronen Betrieb machen mit mehreren Motoren ????
1b). Oder willst du nur schauen, dass die Motoren trotz großer Last dort 
sind wie sie sein sollen ...

Eindeutig 1b).
Nur die genaue Position bzw. Momentan-Drehzahl soll bekannt bzw. 
geregelt werden.


2a). Wenn der Motor in hoher Drehzahl ist, und dann kommt die Last, 
welche Strategie hast du vor um den Motor wieder hoch zu bekommen...

Der Ablauf geht in die Richtung, dass ein Gegenstand mit 
unterschiedlichem Gewicht und Größe per Zangen-/Greifmechanik 
aufgenommen und umplaziert werden soll.


3a).  Soll das nur ein Motor sein pro Kontroller
3b).  Wenn mehrere Motoren   wie Synconisieren ???

Eindeutig 3b).

Alle Endstufen der Motoren werden von einem einzigen Controller 
angesteuert. Falls die Rechenbelastung wegen der zeitgerechten 
Auswertung der Encoder Signale zu hoch wird, muss ich evtl. kleine 
Microcontroller je Endstufe nur für die Regelungs - Loop einsetzen.

Im ersten Schritt zum Testen werde die Motoren im Vollschritt Betrieb 
laufen lassen.
Wenn ich die Motoren im Mikroschritt Betrieb betreibe wird die benötigte 
Rechenleistung schon sehr hoch.

Das sind eben jetzt genau die Gedanken die ich mir mache.

von Martin S. (led_martin)


Lesenswert?

Du hast Dir da was sehr Großes vorgenommen. Hast Du Zeit, monatelang zu 
tüfteln? Wenn die Zeit begrenzt ist, kommst Du mit Servomotoren 
wahrscheinlich eher ans Ziel. Auch bei Servomotoren ist selbstbau der 
Elekronik möglich, was die Kosten etwas senken könnte.

Schrittmotoren auf Schrittverlust zu überwachen ist eine Sache, gut 
erprobt, und sicher machbar. Aber Schrittmotoren so anzusteuern, zu 
regeln, daß es gar nicht zum Schrittverlust kommt, da haben sich selbst 
Motor-Spezialisten schon die Zähne ausgebissen.

Wenn man sich dabei auf die Inkrementalgeber-Signale stützen will, muß 
der Geber recht hochauflösend sein -> Sehr teuer. Man kann aber auch aus 
der BEMF des Motors Informationen gewinnen, dann tut's aber nicht die 
Standard-Endstufe von ebay.

Mit freundlichen Grüßen - Martin

von Georg (Gast)


Lesenswert?

Hallo,

ich würde schlicht und einfach sagen, geht nicht. Ein Schrittmotor ist 
ein Synchronmotor, der entweder sauber seine Schritte ausführt oder 
katastrophal ausser Tritt fällt, meistens kommt er sofort und brutal zum 
Stillstand und oszilliert nur noch hin und her. Eine Rückmeldung für 
zunehmende Belastung gibt es nicht.

Ich habe zwar eine Überwachung per Hallsensor eingebaut und kann 
feststellen, ob der Motor sich noch dreht, aber die Konsequenz, falls 
das mal nicht der Fall ist, ist ein komplett neuer Anlauf von der 
Drehzahl 0 an. Garantiert nicht das was du dir wünschst.

Im Gegensatz dazu kann man bei einem Gleichstrommotor die bei Belastung 
absinkende Drehzahl einfach nachregeln, bzw. die übliche innere 
Regelschleife für die Drehzahl tut das sowieso.

Aber vielleicht schreibst du ja die Geschichte der Regelung neu.

Georg

von Stepper_Fragender (Gast)


Lesenswert?

Hallo zusammen,

ich kann eure Argumentation gut nachvollziehen.

Mir scheint allerdings, dass sich meine Aufgabenstellung von dem 
unterscheidet war ihr angenommen hat.

Beispiel 1: zur Veranschaulichung:

Ein Schrittmotor soll mittels einer direktgekoppelten Kugelumlaufspindel 
einen Schlitten über eine bestimmte Strecke z.B. 800mm horizontal 
bewegen.

Die Last auf dem Schlitten ist bei einem Vorgang z.B. 5 Kg und beim 
nächsten 15 Kg usw.

Es handelt sich also um eine wechselnde Last.

Allerdings stellt sich jetzt die Frage mit welcher "Rampe" kann ein 
gegebener Schrittmotor angesteuert werden, damit die Last in der kürzest 
möglichen Zeit von A nach B transportiert wird ?

Ohne Encoder Signal kann nur die maximale Last angenommen werden, 
Sicherheitszuschlag einrechnen usw.

Mit Auswertung des Encoder Signals wird der Motor mit einer Start 
Frequenz angesteuert und anhand des gelesenen Drehwinkels vom Encoder 
ermittelt wann der gewünschte Drehewinkel erreicht wurde.

Aus der jeweiligen Zeit Delta T die der Schlitten jeweils zum erreiches 
des nächsten vorgegebenen Drehwinkels benötigt kann eine "optimale 
Geschwindigkeit" erreicht werden.

In "gewissen Grenzen" könnten mit diesem Verfahren sogar Störgrößen 
ausgeregelt werden ohne dass der Motor aus dem Tritt kommt.

Was meint ihr dazu ?

von Noch einer (Gast)


Lesenswert?

Was spricht gegen den Ansatz:

In den Greifer eine Waage einbauen
Die optimalen Beschleunigungen für unterschiedliche Massen bestimmen
Die Bahnen mit einer normalen Steuerung abfahren
Eventuell noch auf Schrittverluste überprüfen - Experiment widerholen.

von Stepper_Fragender (Gast)


Lesenswert?

Hallo zusammen,

Vorschlag: In den Greifer eine Waage einbauen

Wenn meine Aufgabenstellung dem o.g. Beispiel entsprechen würde wäre das 
natürlich die nächstliegende Lösung.

Das Beispiel war lediglich eine Veranschaulichung was mit wechselnder 
Last gemeint war. Übrigens erhöht die konstruktive Lösung für eine Waage 
im Greifer in einem einfachen Automatisierungsprozess die komplexität 
der Mechanik gewaltig.


Wichtig Frage bezüglich Schrittverluste:
========================================

Ich hab das bisher so verstanden:

Die Endstufe erhält die Taktsignale und errechnet intern die neuen 
Spannungswerte für die beiden Spulen des Schrittmotors.

Die Spannung an der einen Spule wird etwas erhöht, die Spannung an der 
anderen Spule wird etwas erniedrigt.

Je nach Betriebsart : Vollschritt, Halbschritt, Mikroschritt usw. ist 
die Delta Spannung größer oder kleiner.( bis zu einem sinusförmigen 
Gesamtverlauf )

Wenn nun z.B. durch eine unerwartet auftretendende zu große Last die 
Welle dem nächsten Schritt nicht folgen kann, kann dies von der Endstufe 
nicht erkannt werden. Sie geht davon aus, dass die richtige Position 
erreicht wurde. Es entsteht sozusagen ein Versatz.

Die von der Endstufe eingestellt Spannung an den beiden Spulen passt 
nicht mehr zu der aktuellen Position der Welle.


Folgende Randbedingungen:

a. wir befinden uns im Vollschritt Betrieb.
b. durch äußere Störbeeinflussung wurden 2 oder 3 Schritte von der Welle 
noch nicht vollzogen
c. Die Auswertung des Encoder Signals erkennt diese Abweichung.
d. er controller gibt KEINE weiteren Ansteuer Impulse und wartet

Kann man sagen, dass in diesem Fall die Welle nach einer bestimmten Zeit 
automatisch wieder die korrekte Position einnimmt bezogen auf die 
Spannungen, welche die Endstufe momentan eingestellt hat ?


Bei Auswertung des Drehwinkel Encoder Signals erscheint mir deshalb das 
unbedingte Vermeiden der Schrittverluste nicht als höchste Priorität.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stepper_Fragender schrieb:
> Bei Auswertung des Drehwinkel Encoder Signals erscheint mir deshalb das
> unbedingte Vermeiden der Schrittverluste nicht als höchste Priorität.

Damit gibst du freiwillig den einzigen Vorteil von Schrittmotoren 
gegenüber den Servos auf. Einer der wenigen Vorteile von Schrittmotoren 
ist ja die Zugehörigkeit von Schritt zu Winkel - wenn du darauf 
verzichtest, hat der Stepper keinen einzigen Vorteil gegenüber dem 
Servo. Ab jetzt ist der Servo mit Drehgeber der alleinige Kandidat, um 
dein Problem sinnvoll zu lösen.

: Bearbeitet durch User
von Noch einer (Gast)


Lesenswert?

Das Problem dabei - nach einem Schrittverlust kannst du nicht weiter 
machen. Du musst die Beschleunigung wieder bei Start/Stop Frequenz neu 
beginnen.

Würde drauf hinauslaufen - deine Regelung scheppert 3 mal, breibt 
stehen,  danach hat sie raus, wie stark sie beschleunigen darf.

von Thomas DG5MPQ (Gast)


Lesenswert?

Hallo Stepper_Fragender

ich will mal zum Abschluss hier nochmals was dazu schreiben.....

Das was du vor hast, machen wir bei uns in der Firma.
Das ist jetzt ein ca 5 Mann Jahre Projekt.

Im Prinzip haben wir genau das was du suchst. Leider ist der Preis nicht 
im Hobby Bereich.

Aber wenn du eine Steuerung suchst, die 5 Achsen (oder max 9) 
interpoliert fahren können soll. Das mit Encoder im Closed Loop auf dem 
Schrittmotor....
einfache PLC im Hintergrund zum steuern. Je nach Ausbau mit 12 Relais 
Ausgänge und 12 Potokoppler Eingänge....
Das Ganze als DLL um eine eigene Oberfläche zu schreiben .....

Ja   www.4cam.de    PowerdriveXT

Dort steht auch unsere Telefonnummer....

Gruß Thomas

von Georg (Gast)


Lesenswert?

Noch einer schrieb:
> deine Regelung scheppert 3 mal, breibt
> stehen,  danach hat sie raus, wie stark sie beschleunigen darf.

Der erste Halbsatz stimmt, der 2. wahrscheinlich nicht - der Stepper 
müsste mit immer mehr Strom und/oder langsamerer Rampe neu anfahren, bis 
er die Last schafft, aber zu der Zeit hat ein DC-Antrieb längst sein 
Ziel erreicht.

Stepper_Fragender schrieb:
> Die von der Endstufe eingestellt Spannung an den beiden Spulen passt
> nicht mehr zu der aktuellen Position der Welle.

Wenn es den so einfach wäre - es geht nicht um "passt nicht", sondern 
nach 2 Schritten ist die Magnetisierung genau entgegengesetzt der 
erforderlichen, d.h. das System steht auf Vollbremsung. Das entspricht 
auch meiner praktischen Erfahrung, der Motor kommt mit einem lauten 
Knall augenblicklich zum Stillstand, und das tut der Mechanik garnicht 
gut.

Stepper_Fragender schrieb:
> Bei Auswertung des Drehwinkel Encoder Signals erscheint mir deshalb das
> unbedingte Vermeiden der Schrittverluste nicht als höchste Priorität.

Das ist schlicht Unverständnis der Stepper-Funktion.

Georg

von Noch einer (Gast)


Lesenswert?

Die Diskussion läuft in die total falsche Richtung. Hätte damals jemand 
Linus Torvalds gesagt, was das für ein Aufwand wird, hätten wir heue 
kein Linux.

von Stepper_Fragender (Gast)


Lesenswert?

Hallo zusammen,

vielen Dank für eure Beiträge.

Der Einsatz von Servomotoren ist freilich aus mehreren Gründen die 
bessere Wahl.

Dem steht der höhere Preis entgegen, weshalb von mir Schrittmotoren in 
Erwägung gezogen werden.

Ich denke ich hab jetzt auch verstanden warum das Problem nicht mit der 
Kombination

- Schrittmotor
- Standard Endstufe
- Drehencoder
- Individual Controller

vernünftig gelößt werden kann.

Das eigentliche Problem ist die "Standard Endstufe".

Wenn die Endstufe direkt in die Regelschleife miteinbezogen wird, wie es 
verschiedene Hersteller ja durchaus machen und auch z.B. auf youtube 
Videos eindrucksvoll demonstrieren, dann sieht die Sache wieder ganz 
anders aus.


Die integrierten Bausteine der Standard China Schrittmotrr Endstufen 
sind mir bekannt. Es ist möglich indirekt über den Shunt Widerstand den 
momentanen Strom und dadurch die momentane Leistung der Endstufe zu 
ermitteln, welche ungefähr proportional zur momentanen Leistung der 
Welle ist.

Wäre ein Entwurf möglich, der auf diese Weise das "außer Tritt kommen" 
des Schrittmotors verhindert so dass eben kein Neuanlauf aus dem Stop 
Zustand notwendig ist.

Ohne dass ich jetzt in Erwägung ziehen möchte eine Schrittmotor Endstufe 
entwickeln zu wollen würde mich trotzdem interessieren wie das ungefähr 
gelöst wird.

Kennt sich jemand aus ?

von Noch einer (Gast)


Lesenswert?

Funktioniert halt bei einem BLDC besser als bei einem Schrittmotor. Wenn 
du nach BEMF BLDC suchst, wirst du mit Mathe und Beispielcode 
erschlagen. BEMF stepper sieht da recht mau aus.

von FelixW (Gast)


Lesenswert?

Hallo @all

ich bin ohne Ahnung. Die mir scheinbar einfachste 
Möglichkeit.:Drehencoder erlaubt die Position zum Umschalten der 
Spulenpaare. Lässt der uC alle Signale durch, hast du einen DC-Motor 
gebaut. Große Last-> langsam; kleine Last -> schnell

Der uC kann nun frei entscheiden, ob es mit dem Umschalten länger wartet 
um langsamer zu gehen.

Messung der Masse durch Leistungsaufnahme hört sich interessant an. Aber 
braucht wohl erst einmal ein "proof of concept" (Wie genau / wie schnell 
kann ich messen)

Gruß Felix

von Georg (Gast)


Lesenswert?

Hallo,

deinem Vorhaben stehen u.a. 2 Punkte entgegen:

Schrittmotoren haben, wie andere Synchronmotoren auch, eine Kennlinie 
mit Abriss: solange das Drehmoent ausreicht, drehen sie mit der Frequenz 
des Feldes, wenn nicht mehr geht die Drehzahl schlagartig gegen 0. Was 
du möchtest ist den Motor an dieser steilen Abrisskante zu betreiben.

Üblicherweise und mit gutem Grund werden Schrittmotoren mit 
Konstantstrom betrieben. Man kann daher nicht aus dem Strom auf die 
Belastung schliessen, denn der Strom wird von der Endstufe eingeprägt.

Georg

von Stepper_Fragender (Gast)


Lesenswert?

Hallo Georg,

nochmal Danke für Deinen Hinweis.

Beim Nachdenken über die Zusammenhänge ist mir mein selbst meine 
fehlerhafte Annahme aufgefallen, also die Meinung, man könne über den 
Strom auf das Lastmoment schließen. Der maximale Strom kann bei den 
Endstufen zwar meist über einen Jumper in Stufen eingestellt werden, ist 
aber dann eingeprägt.

Mit dem Problem, dass der Motor aus dem Grund ja auch sehr heis wird, 
falls keine Ruhestromabsenkung aktiviert ist. Oder man diese wegen dem 
notwendigen Haltemoment nicht aktivieren möchte.

> Was du möchtest ist den Motor an dieser steilen Abrisskante zu betreiben.

Nun ja, was ich möchte ist eher eine Betriebsart wie z.B. die Leadshine 
Schrittmotr Endstufen mit Encoder Eingang haben. Die Teile sind 
eigentlich nicht aus dem Tritt zu bringen.

Mir ist schon klar, dass da viel Know How, Bauteilaufwand und 
entsprechend Kosten dahinter stecken.

von Martin S. (led_martin)


Lesenswert?

Einen Schrittmotor über die Signale eines angeflanschten Encoders zu 
kommutieren klingt verlockend, ist aber praktisch schwer umzusetzen. 
Probleme sind dabei der exakte Gleichlauf von Schrittmotor-Schritten, 
und Encoder-Signalen, und der Zeitverzug zwischen Impulsausgabe, und 
Rückmeldung des Encoders. Auch die mechanische Ankopplung muß sehr steif 
sein. Will man am Motor selbst messen, läuft das darauf hinaus, den 
Strom einzuprägen, und die Spannungen an den Wicklungen zu messen. Dabei 
muss man auch die Phasenverschiebung zwischen Strom und Spannung korrekt 
erfassen, nur so kann man die interessanten Informationen gewinnen. Das 
geht aber nur, wenn der Motor eine gewisse Mindest-Drehzahl erreicht 
hat.

Mit freundlichen Grüßen - Martin

von Belustigter (Gast)


Lesenswert?

Schrittmotoren mit Encoder sind Brot- und Butterware in der Industrie 
und überhaupt nichts besonders.

Der "Trick" besteht nur darin, den Schrittmotor als Synchronmotor mit 
zwei statt drei Phasen zu betrachten.

Und nein, solche Systeme sind eben genau nicht teuer, sondern günstige 
Alternativen für "klassische" Servomotoren mit drei Phasen, vor allen 
bei den kompakten Bauweisen mit niedrigen Drehzahlen. Da braucht es dann 
kein Getriebe mehr, und damit geht der Systempreis gut in den Keller.

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


Lesenswert?

Hallo Georg,

> Schrittmotoren haben, wie andere Synchronmotoren auch, eine Kennlinie
> mit Abriss: solange das Drehmoent ausreicht, drehen sie mit der Frequenz
> des Feldes, wenn nicht mehr geht die Drehzahl schlagartig gegen 0. Was
> du möchtest ist den Motor an dieser steilen Abrisskante zu betreiben.

Das stimmt nicht, bzw. nur so lange du den Motor ungeregelt (open-loop) 
betreibst. Gerade in den letzten Jahren hat sich bei der Regelung von 
Schrittmotoren aber einiges getan. Vielleicht solltest du dein Wissen 
nochmal etwas auffrischen...

> Üblicherweise und mit gutem Grund werden Schrittmotoren mit
> Konstantstrom betrieben. Man kann daher nicht aus dem Strom auf die
> Belastung schliessen, denn der Strom wird von der Endstufe eingeprägt.

Auch das ist nicht richtig. Schau dir mal die ICs von Trinamic oder TI 
an, die machen genau das. Irgend wo her muss die Leistung ja kommen, die 
der Motor an die Last abgibt. P(eingang)=P(verlust)+P(mechanisch). Wenn 
P(mechanisch) steigt, muss auch (eingang) steigen). Die ohmschen 
Verluste werden jedenfalls nicht sinken. ;)

Mit freundlichen Grüßen
Thorsten Ostermann

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


Lesenswert?

Hallo Stepper_Fragender,

> Beim Nachdenken über die Zusammenhänge ist mir mein selbst meine
> fehlerhafte Annahme aufgefallen, also die Meinung, man könne über den
> Strom auf das Lastmoment schließen.

Deine fehlerhafte Annahme ist, dass das Beschleunigungsmoment welches 
für die Last aufgewendet wird, einen wesentlichen Anteil an der 
Gesamtbelastung des Motors hat. Der Motor muss ja auch noch sich selbst 
sowie die mechanischen Übertragungselemente beschleunigen, außerdem die 
mechanische Reibung überwinden, ggf. gegen Gewichtskraft oder von außen 
angreifende Kräfte anwirken. Klar kann man über die Anpassung der 
Beschleunigung etwas optimieren. Aber da holst du mit großem Aufwand 
vermutlich nur 10% heraus.

Mit freundlichen Grüßen
Thorsten Ostermann

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.