Forum: Mikrocontroller und Digitale Elektronik Positionsregelung für Schrittmotor


von Philipp M. (igodphil)


Lesenswert?

Hej Leute,

ich stehe aktuell etwas vor einer Wissenslücke und hoffe hier guten 
Input zu bekommen.
Zum Problem: Ich hab eine Schrittmotor der 400 steps/U im 
Halbschrittverfahren macht. Dem ganzen gebe ich ein P-T1 verhalten auf 
dem µ-Controller vor. Für die Parameter gilt:

 * P = 1
 * T1 = 0.1

Nun möchte ich für den Motor die Position regeln unter einem gewünschten 
Führungsverhalten. Für die Drehzahlregelung kommt mittels 
Polkompensation ein P-I Regler heraus. So weit so gut. Jetzt stehe ich 
vor der Frage, ob sich bei der Positionsregelung meine Strecke einfach 
nur um einen Integrator erweitert oder wie ich das berücksichtigen muss.
Meine Gedanken dazu:

Für Gr(s) erhalte ich nun einen PD Regler was mich etwas stutzig macht.
Eventuell kann mir ja hier jemand auf die Sprünge helfen.

Und dann würde mich mal mal interessieren wie man die reale T1 bei einem 
Schrittmotor erhält ohne dass er aus dem Tritt kommt.

Strommessung ist nicht möglich, da der Stepper nur über eine H-Brücke 
angesteuert wird und das Bitmuster hart durchgefahren wird.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Philipp M. schrieb:
> Strommessung ist nicht möglich, da der Stepper nur über eine H-Brücke
> angesteuert wird und das Bitmuster hart durchgefahren wird.

Das ist der Stand, wie Schrittmotoren in den 80er Jahren des vorigen 
Jahrhunderts betrieben wurden. Fast jeder aktuelle Schrittmotor macht 
eine Stromregelung.
Hast du schon einmal über eine Aktualisierung deiner Hardware 
nachgedacht.

Was benutzt du als Positionssensor, um deinen Istwert für die Regelung 
zu bestimmen?

von Philipp M. (igodphil)


Lesenswert?

Rainer W. schrieb:
> Das ist der Stand, wie Schrittmotoren in den 80er Jahren des vorigen
> Jahrhunderts betrieben wurden. Fast jeder aktuelle Schrittmotor macht
> eine Stromregelung.
> Hast du schon einmal über eine Aktualisierung deiner Hardware
> nachgedacht.

Es freut mich wirklich ausgesprochen solche Antworten zu erhalten... 
Beantwortet nur leider nicht meine Frage. Und nein die Hardware bleibt 
so wie sie ist.

Rainer W. schrieb:
> Was benutzt du als Positionssensor, um deinen Istwert für die Regelung
> zu bestimmen?

Es wird lediglich zu Beginn die Mittelposition durch zwei Endlagentaster 
ermittelt und danach wird per Software die Position ermittelt. Heißt pro 
Step 360°/400.

: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Kann schon sein, dass Du den Kommentar über den Halbschrittbetrieb nicht 
magst. Allerdings hat er im Kern recht. Gerade beim unstetigen 
Halbschrittbetrieb brauchst Du keinen Regler mehr sondern einen 
gemächlichen Zähler, der zur gewünschten Position hinömmelt. Nachdem Du 
bei verschiedenen Temperaturen uns sonstigen Einflüssen geprüft hast, 
was möglich ist, diese Zeit noch einmal verdoppeln. Oder Du nimmst einen 
modernen Microstepping-Treiber und kannst die Verfahrzeiten dann 
tatsächlich mit einem Regler vlt. auf das 10-fache optimieren.

von Philipp M. (igodphil)


Lesenswert?

Harald A. schrieb:
> Gerade beim unstetigen
> Halbschrittbetrieb brauchst Du keinen Regler mehr sondern einen
> gemächlichen Zähler, der zur gewünschten Position hinömmelt.

Das mag ja alles sein und will ich auch gar nicht abstreiten nur bringt 
mir das leider überhaupt nichts. Die Motorregelung ist nur eine 
unterlagerte Regelung des Gesamtsystems. Daher benötige auch für den 
Stepper im Halbschrittverfahren eine vernünftige Übertragungsfunktion 
sowie Positionsregelung. Deshalb seht mir bitte nach, dass eure sicher 
gut gemeinten Hinweise nicht zielführend für mich sind. Die Hardware 
kann zum derzeitigen Projektstand nicht mehr geändert werden.  Dafür 
fehlt leider die Zeit. Dass die derzeitige Ausführung nicht Optimal ist, 
war auch schon eine persönliche Erkenntnis, die ich vorher hatte. Tut 
nur jetzt nichts mehr zu Sache.

Daher nochmal die Bitte, meine Ausgangsfrage wenn zu beantworten. Vielen 
Dank.

von Philipp M. (igodphil)


Lesenswert?

Harald A. schrieb:
> Oder Du nimmst einen
> modernen Microstepping-Treiber und kannst die Verfahrzeiten dann
> tatsächlich mit einem Regler vlt. auf das 10-fache optimieren.

Ok also bedeudet, dass man dort dann quasi die Sprungantwort aufzeichnet 
und anhand dessen die Parameter abliest? Bleibt für mich eigentlich nur 
die Frage wie es mit der Positionsregelung aussieht, ob mein Ansatz 
richtig ist?

von Harald A. (embedded)


Lesenswert?

Beim Halbschrittbetrieb sehe ich persönlich keinen P(ID)-Regler. Wenn Du 
ganz sicher gehen willst, senkst Du meinetwegen bei Positionsdifferenzen 
>5 die „Geschwindigkeit“ auf ein 1/4 des empirisch ermittelten Maximums 
zurück.

von Philipp M. (igodphil)


Lesenswert?

So ganz verstehe ich, wenn ich ehrlich bin, deine Antwort grade noch 
nicht auf meine Frage des Vorgehens zur Reglerauslegung.
Die Position braucht auf alle Fälle eine Regelung.

von Harald A. (embedded)


Lesenswert?

Evtl. stehe ich auch auf dem Schlauch, Du hast Soll- und Istposition. 
Solange Ist<>Soll fährst Du vor- oder rückwärts in ganzen Schritten, 
ansonsten einfach Stillstand. Eine Regeldifferenz verbleibt ja nie. Du 
hast ein Open-Loop System ohne Rückmeldung, richtig?

Bei einem System, wo Du tatsächlich über einen weiten Bereich 
beschleunigen und abbremsen könntest, bräuchtest Du einen Regler, der 
bei großen Differenzen das System auf ein Maximum beschleunigt und vor 
dem Ziel wieder passend abbremst, passend zum Gesamtsystem.
Bei Halbschrittbetrieb ist die maximale Frequenz doch derart limitiert, 
dass man über Beschleunigung und Abbremsung doch garnicht nachdenken 
müsste. Sicherheitshalber könnte man kurz vor Erreichen des Ziels 
nochmal langsamer werden, sofern überhaupt erforderlich.

von Michael B. (laberkopp)


Lesenswert?

Philipp M. schrieb:
> Nun möchte ich für den Motor die Position regeln

Bei Schrittmotoren regelt man nicht die Position wie bei einem 
Voicecoil-Antrieb oder Servomotor, sondern msn fährt sie einfach an, 
dafur ist es ja ein Schrittmotor, der tut was du ihm befiehlst, 
klugerweise mit Beschleunigungs- und Bremsrampen.

Insofern ist dein ganzer Regelansatz Kokolores.

Du bekommst einen Sollwert, und fährst du einfach hin, nix Regelung.

von Harald A. (embedded)


Lesenswert?

> fährst Du vor- oder rückwärts in ganzen Schritten,
Wollte sagen, in ganzen Halbschritten

von Philipp M. (igodphil)


Lesenswert?

Harald A. schrieb:
> Du
> hast ein Open-Loop System ohne Rückmeldung, richtig?

Nein da die Positionsregelung nur ein unterlagerter Regler ist um die 
Gesamtdynamik zu beschleunigen, ist es closed Loop.

Um den äußeren Regler auslegen zu könnnen, benötige ich auch eine 
Übertragungsfunktion für die Position und kann nicht wild irgendwelche 
Rampen fahren.

von Philipp M. (igodphil)


Lesenswert?

Michael B. schrieb:
> klugerweise mit Beschleunigungs- und Bremsrampen

Und die Übertragungsfunktion für den Gesamtregelkreis definierst du dann 
genau wie? Nochmal, die Positionsregelung ist nur eine unterlagerte 
Regelung des Gesamtsystems. Mir ist durchaus klar, dass man auch einfach 
wild irgendwelche Positionen anfahren kann, nur bringt mir das für das 
Gesamtsystem überhaupt nichts.

von Philipp M. (igodphil)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft es um etwas Klarheit zu schaffen wieso ich eine 
Übertragungsfunktion für die Positionsregelung brauchen.
Im Anhang ist das Gesamtsystem.

von Harald A. (embedded)


Lesenswert?

Unterlagerter Regler, Gesamtdynamik, Übertragungsfunktion, plötzlich 
closed Loop…

An dieser Stelle wäre mal eine Übersicht angebracht, was Du vor hast.

Edit: Skizze da, hat sich überschnitten
Edit2: Obwohl, was soll das sein?
Edit3: Ich bin raus

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Philipp M. schrieb:
> Und die Übertragungsfunktion für den Gesamtregelkreis definierst du dann
> genau wie?

Ja, die Stellgeschwindigkeit hat Einfluss auf die Übertragungsstrecke, 
und die Rampen bewirken eine nichtlineare Verzögerung bis nach 
Sollwertänderung die Position erreicht ist. Aber ähnlich wie ein 
Heizstab der einen Boiler aufheizt und dabei der Boiler KEIN Regler ist, 
ist der Schrittmotor und dessen Positionsansteuerung auch kein Regler.

> Nochmal, die Positionsregelung ist nur eine unterlagerte
> Regelung des Gesamtsystems

Nochmal: die Position wird nicht geregelt, sondern angefahren.

von Rainer W. (rawi)


Lesenswert?

Philipp M. schrieb:
> Vielleicht hilft es um etwas Klarheit zu schaffen wieso ich eine
> Übertragungsfunktion für die Positionsregelung brauchen.

Du suchst eine Übertragungsfunktion, die es für einen Schrittmotor so 
nicht gibt, weil das Verhalten amplitudenabhängig ist. Die Zeitkonstante 
hängt von der Sprungamplitude ab.

von Philipp M. (igodphil)


Lesenswert?

Harald A. schrieb:
> Unterlagerter Regler, Gesamtdynamik, Übertragungsfunktion,
> plötzlich closed Loop…
> An dieser Stelle wäre mal eine Übersicht angebracht, was Du vor hast.
> Edit: Skizze da, hat sich überschnitten
> Edit2: Obwohl, was soll das sein?
> Edit3: Ich bin raus

Das hatte ich bereits in Teilen auf deinen ersten Beitrag geantwortet…

Dennoch danke für deinen Beitrag.

von Philipp M. (igodphil)


Lesenswert?

Michael B. schrieb:
> Philipp M. schrieb:
>> Und die Übertragungsfunktion für den Gesamtregelkreis definierst du dann
>> genau wie?
>
> Ja, die Stellgeschwindigkeit hat Einfluss auf die Übertragungsstrecke,
> und die Rampen bewirken eine nichtlineare Verzögerung bis nach
> Sollwertänderung die Position erreicht ist. Aber ähnlich wie ein
> Heizstab der einen Boiler aufheizt und dabei der Boiler KEIN Regler ist,
> ist der Schrittmotor und dessen Positionsansteuerung auch kein Regler.
>> Nochmal, die Positionsregelung ist nur eine unterlagerte
>> Regelung des Gesamtsystems
>
> Nochmal: die Position wird nicht geregelt, sondern angefahren.

Sehr merkwürdiges Beispiel. Der Boiler ist auch mit Sicherheit kein 
Stellglied welches geregelt werden kann…

von Philipp M. (igodphil)


Lesenswert?

Rainer W. schrieb:
> Philipp M. schrieb:
>> Vielleicht hilft es um etwas Klarheit zu schaffen wieso ich eine
>> Übertragungsfunktion für die Positionsregelung brauchen.
>
> Du suchst eine Übertragungsfunktion, die es für einen Schrittmotor so
> nicht gibt, weil das Verhalten amplitudenabhängig ist. Die Zeitkonstante
> hängt von der Sprungamplitude ab.

Hmm ich denke die Übertragungsfunktion  habe ich ja prinzipiell mit dem 
PT1 Verhalten. Die Motorfrequenz folgt ja prinzipiell dem vorgegebenen 
Verhalten. Sei mal dahingestellt ob es sinnvoll oder richtig für einen 
Stepper Motor ist. Mich interessiert eigentlich nur ob meine 
Herangehensweisen richtig wäre um die Position zu regeln ohne Motorstrom 
zu kennen.

von Michael B. (laberkopp)


Lesenswert?

Philipp M. schrieb:
> Der Boiler ist auch mit Sicherheit kein Stellglied welches geregelt
> werden kann…

Der Schrittmotor wird auch nicht geregelt.

Aber die Temperatur des Boilers kann über das Ein- Ausschalten des 
Heizelements genau so wie die vom Schrittmotor angefahrene Position (der 
ein Ventil, eine Drosselklappe, was weiss ich, der TO verschweigt es ja 
beharrlich) dann die Leerlaufdrehzahl oder Durchflussmenge geregelt 
werden kann.

von Philipp M. (igodphil)


Lesenswert?

Michael B. schrieb:
> Philipp M. schrieb:
>> Der Boiler ist auch mit Sicherheit kein Stellglied welches geregelt
>> werden kann…
>
> Der Schrittmotor wird auch nicht geregelt.
> Aber die Temperatur des Boilers kann über das Ein- Ausschalten des
> Heizelements genau so wie die vom Schrittmotor angefahrene Position (der
> ein Ventil, eine Drosselklappe, was weiss ich, der TO verschweigt es ja
> beharrlich) dann die Leerlaufdrehzahl oder Durchflussmenge geregelt
> werden kann.

Ich verschweige es nicht sonder habe es bisher als nicht relevant 
betrachtet weil es auch eigentlich nicht meine Frage war. Es geht um den 
Versuch Ball on a beam. Dabei muss der Winkel des Motors geregelt werden 
um den Winkel der Wippe zu stellen und die Kugel auf eine bestimmte 
Position zu bringen.

von J. S. (jojos)


Lesenswert?

Und wie kommt die Rückmeldung des Ist Winkel rein? Der SM hat eine 
maximale Schrittfrequenz, die steht im Datenblatt. Mit zunehmender 
Frequenz nimmt das Drehmoment ab, danach muss man Motor und Frequenz 
auswählen. Und die Frequenz darf ungeregelt nicht zu stark springen, 
sonst gibt es auch da Schrittverluste. Den Strom bei einer einfachen H 
Brücke zu kennen nutzt dabei auch nichts, der steigt nicht mit der Last. 
Gute Treiber können über die Messung der Gegen EMK einen Stillstand 
erkennen, besser sind aber echte CL mit Encoder. Die können dann mehrere 
Schritte nachholen wenn die Ansteuerung zu schnell war.

von Vanye R. (vanye_rijan)


Lesenswert?

> Du suchst eine Übertragungsfunktion, die es für einen Schrittmotor so
> nicht gibt, weil das Verhalten amplitudenabhängig ist.

Ich verstehe natuerlich was du sagen willst und natuerlich hast
du recht. Aber vermutlich kann man fuer so ziemlich alles im
Leben eine Uebertragungsfunktion angeben, aber fuer so einen
Schrittmotor waere das Verhalten wohl nichtlinear da er zwischen
jedem einzelnem Schritt unterschiedlich beschleunigt. Mit etwas
Abstand betrachtet koennte man auch sagen das er zwischen jedem
einzelnen Schritt einfach springt. Und dieses verhalten
wird dann nochmal nichtlinear multipliziert wenn man viele
Schritte faehrt weil dann der Regler ueblicherweise beschleunigt
und abbremst.
Da stelle ich mir die Frage was man mit der Uebertragungsfunktion
will selbst wenn man sie angeben koennte weil es die weitere
Betrachtung vermutlich SEHR komplex machen wuerde.

Vanye

von Rainer W. (rawi)


Lesenswert?

Philipp M. schrieb:
> Mich interessiert eigentlich nur ob meine Herangehensweisen richtig wäre
> um die Position zu regeln ohne Motorstrom zu kennen.

Die Position eines Schrittmotors hat mit dem Strom überhaupt nichts zu 
tun. Der Strom stellt lediglich sicher, dass der Motor nicht ausrastet, 
d.h. dass der Motor dem angelegten Feld folgt, ohne dass der Lastwinkel 
über 90° ansteigt.
Um die Schrittmotorposition zu kennen, musst du nur den Schrittzähler 
auslesen  Wenn der Schrittmotor auf Grund dynamischer oder statischer 
Last Schritte verliert, hast du sowieso verloren.

von Vanye R. (vanye_rijan)


Lesenswert?

> Um die Schrittmotorposition zu kennen, musst du nur den Schrittzähler
> auslesen

Das ist richtig wenn du einen Schrittmotor mit etwas Abstand 
betrachtest. Und das machen ja auch alle anderen Menschen so weil dann 
ein Schrittmotor keine Regelung sondern eine Steuerung ist. Im Gegensatz 
zu deutlich komplexeren Linearmotoren. Aber wenn man nur scharf genug 
reinschaut dann wird man irgendwann sehen das ein Schrittmotor zwischen 
zwei Schritten beschleunigt und abbremst. Das waere dann natuerlich 
Teile einer Funktion.

Vanye

von Rainer W. (rawi)


Lesenswert?

Philipp M. schrieb:
> Hmm ich denke die Übertragungsfunktion  habe ich ja prinzipiell mit dem
> PT1 Verhalten. Die Motorfrequenz folgt ja prinzipiell dem vorgegebenen
> Verhalten.

Spätesten bei Betrachtung der Sprungantwort stimmt das nicht mehr, weil 
der Schrittmotor eine Beschleunigungsrampe fahren muss, bei höherer 
Frequenz nimmt das Drehmoment außerdem kräftig ab, insbesondere wenn der 
Motor nicht stromgeregelt betrieben wird.

von Wolfgang K. (woko)


Lesenswert?

Hallo, für die Bahnplanung, Rampengenerierung gibt es ganz 
unterschiedliche Lösungen, oft ein Aufsummieralgorithmus. Mit einem 
Regler geht's vermutlich auch, darauf wär ich nicht gekommen 😉. Der kann 
dann aber auch überschwingen und man hat keine Einheiten (m/s, m/s2). 
Aber warum nicht, viele Wege führen nach Rom...

von Harald A. (embedded)


Lesenswert?

Rainer W. schrieb:
> bei höherer
> Frequenz nimmt das Drehmoment außerdem kräftig ab, insbesondere wenn der
> Motor nicht stromgeregelt betrieben wird.

Er will sogar den Worstcase: Halbschrittbetrieb an H-Brücke(?) ohne 
Stromregelung (also mit Nennspannung). Man kann sich anhand der 
Induktivität ausrechnen, ab welcher Freuquenz der Stromanstieg nicht 
mehr ausreicht, vor allem beim unstetigen Halbschrittbetrieb. Der Punkt 
kommt SEHR schnell.
Ich denke, da fehlen vor lauter Regelungstheorie ein paar Grundlagen zum 
sinnvollen Betrieb eines Schrittmotors.

: Bearbeitet durch User
von Walter L. (Gast)


Lesenswert?

PT1 fkt. für GS-Servomotoren nicht für Sch...Motoren.
Es muss auch bekannt sein, was positioniert werden soll. Dann könnte man 
evtl. helfen.
VG Walter

von Harald A. (embedded)


Lesenswert?

Wenn der „Ball on a beam“ ne Minute Zeit hat für die Reaktion der 
Klappen könnte es was werden.

von Michael B. (laberkopp)


Lesenswert?

Philipp M. schrieb:
> Es geht um den Versuch Ball on a beam.

Da erscheint mit rin voice coil Antrieb des Balkens klüger, wie ein 
Leerlaufregelventil meines alten Autos, ein DC Motor der sich nur um 90 
Grad dreht.

Oder wenigstens ein DC Servomotor.

Aber ein Schrittmotor ? Bedeutet doch positionsdiskrete Ansteuerung. Na 
ja, auch nicht anders als ein Boiler dessen Heizstab nur Stufen kann, 
und mit dem man trotzdem alle möglichen Endtemperaturen erreichen will. 
Wie regelst du da die Heizleistung ? Gar nicht, der Temperaturregler 
wählt die passende Stufe, der Boiler macht dann schon.

von J. S. (jojos)


Lesenswert?

Die maximale Geschwindigkeit und Beschleunigung kann das System 
eventuell selber ausmessen: immer schnellere Pendelbewegungen machen und 
dabei kontrollieren ob die Referenz noch an der richtigen gezählten 
Position kommt. Darauf muss der Regelausgang dann limitiert werden.
Hört sich ja sehr nach Übungsaufgabe an wenn die HW gegeben ist.

: Bearbeitet durch User
von Philipp M. (igodphil)


Angehängte Dateien:

Lesenswert?

Rainer W. schrieb:
> Spätesten bei Betrachtung der Sprungantwort stimmt das nicht mehr, weil
> der Schrittmotor eine Beschleunigungsrampe fahren muss, bei höherer
> Frequenz nimmt das Drehmoment außerdem kräftig ab, insbesondere wenn der
> Motor nicht stromgeregelt betrieben wird.

Was soll bei der Sprungantwort nicht mehr stimmen, wenn die 
Zielkreisfrequenz durch bloßes PT1 Verhalten nachgebildet wird. PT1 
verhält sich zu Beginn ja auch wie eine Rampe und nimmt dann 
exponentiell ab. Daher verstehe ich diesen Einspruch nicht.
Dazu mal eine Messung des Motors. Gelb die theoretische Sprungantwort 
und orange die Drehzahl des realen Steppers. Stimmt exakt überein. Daher 
erkläre mir gerne was nicht mehr übereinstimmt?

von Philipp M. (igodphil)


Lesenswert?

Rainer W. schrieb:
> Wenn der Schrittmotor auf Grund dynamischer oder statischer
> Last Schritte verliert, hast du sowieso verloren.

Das ist klar, daher wurde empirisch ermittelt bis zu welcher Frequenz 
dies nicht der Fall ist und das Stellglied in seiner Frequenz und Winkel 
begrenzt.

von Philipp M. (igodphil)


Lesenswert?

Harald A. schrieb:
> Ich denke, da fehlen vor lauter Regelungstheorie ein paar Grundlagen zum
> sinnvollen Betrieb eines Schrittmotors.

Würde ich auch gar nicht abstreiten, nur ist das doch vollkommen 
unrelevant für meine Frage... Es geht doch rein ums Verständnis. Ob der 
Stepper nun mit einer Rampe bis zur Position hart angefahren wird oder 
PT1 Verhalten für seine Beschleunigung hat mit nem geschlossenen 
Regelkreis für die Position, wo ist da der Unterschied?

von Philipp M. (igodphil)


Lesenswert?

J. S. schrieb:
> Hört sich ja sehr nach Übungsaufgabe an wenn die HW gegeben ist.

Jaein, ich entwickle diesen Versuch im Rahmen meine Bachelorarbeit und 
unter anbetracht der verbleibenden Zeit lässt sich die Hardware leider 
nicht mehr austauschen. Rückblickend würde ich heute auch einen anderen 
Motor wählen beziehungsweise einen anderen Treiber als eine simple 
H-Brücke. Dafür ist nur leider jetzt nicht mehr genügend Zeit. Daher 
bringen eure ganzen Änderungsvorschläge zur Hardware auch nur noch 
bedingt etwas auch wenn ich sie durchaus nachvollziehen kann.

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


Lesenswert?

Hallo Philipp,

ich fürchte du gehst das Problem von der falschen Seite an...

Philipp M. schrieb:
> Harald A. schrieb:
>> Du
>> hast ein Open-Loop System ohne Rückmeldung, richtig?
>
> Nein da die Positionsregelung nur ein unterlagerter Regler ist um die
> Gesamtdynamik zu beschleunigen, ist es closed Loop.

Nein, davon das du es so nennst, ist es kein closed loop. Ein Regelkreis 
entsteht erst, wenn du den Istwert zurückführen kannst. Und dafür muss 
man ihn üblicherweise messen.

> Rainer W. schrieb:
>> Was benutzt du als Positionssensor, um deinen Istwert für die Regelung
>> zu bestimmen?
>
> Es wird lediglich zu Beginn die Mittelposition durch zwei Endlagentaster
> ermittelt und danach wird per Software die Position ermittelt. Heißt pro
> Step 360°/400.

...und das scheint mir hier nicht der Fall zu sein. Oder machst du 
irgendeine andere Magie, Beobachter o.ä.? Mal doch mal ein 
Blockschaltbild auf.

Mit freundlichen Grüßen
Thorsten Ostermann

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


Lesenswert?

Hallo Philipp,

Philipp M. schrieb:
> Harald A. schrieb:
>> Ich denke, da fehlen vor lauter Regelungstheorie ein paar Grundlagen zum
>> sinnvollen Betrieb eines Schrittmotors.
>
> Würde ich auch gar nicht abstreiten, nur ist das doch vollkommen
> unrelevant für meine Frage... Es geht doch rein ums Verständnis.

Und für das Verständnis benötigt man Grundlagen. Dir fehlt das 
Verständnis offensichtlich.

Mit freundlichen Grüßen
Thorsten Ostermann

von Philipp M. (igodphil)


Lesenswert?

Thorsten O. schrieb:
> Nein, davon das du es so nennst, ist es kein closed loop. Ein Regelkreis
> entsteht erst, wenn du den Istwert zurückführen kannst. Und dafür muss
> man ihn üblicherweise messen.

Schau mal den gesamten Verlauf bitte durch. Etwas weiter oben ist der 
Gesamte Regelkreis abgebildet. Der Winkel wird nur indirekt 
gemessen/bestimmt indem die Schritte gezählt werden und anhand der steps 
per revolution lässt sich nach Initialisierung der Position ja sehr 
leicht bestimmen. Dabei wird davon ausgegangen, dass keine Schritte 
verloren gehen und das Stellglied soweit begrenzt wird, dass es nicht 
außer Tritt kommt.

Thorsten O. schrieb:
> ...und das scheint mir hier nicht der Fall zu sein. Oder machst du
> irgendeine andere Magie, Beobachter o.ä.? Mal doch mal ein
> Blockschaltbild auf.

Die Initialisierung wird selbstverständlich vor dem Start des 
Regelkreises durchgeführt.

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


Lesenswert?

Hallo Philipp,

Philipp M. schrieb:
> Thorsten O. schrieb:
>> Nein, davon das du es so nennst, ist es kein closed loop. Ein Regelkreis
>> entsteht erst, wenn du den Istwert zurückführen kannst. Und dafür muss
>> man ihn üblicherweise messen.
>
> Schau mal den gesamten Verlauf bitte durch. Etwas weiter oben ist der
> Gesamte Regelkreis abgebildet. Der Winkel wird nur indirekt
> gemessen/bestimmt indem die Schritte gezählt werden und anhand der steps
> per revolution lässt sich nach Initialisierung der Position ja sehr
> leicht bestimmen. Dabei wird davon ausgegangen, dass keine Schritte
> verloren gehen und das Stellglied soweit begrenzt wird, dass es nicht
> außer Tritt kommt.

Genau, und das nennt man open-loop oder Steuerung. Das ist das Gegenteil 
vom closed-loop. Du brauchst keinen Positionsregler, sondern einen 
Sollwertgenerator.

Mit freundlichen Grüßen
Thorsten Ostermann

von Philipp M. (igodphil)


Lesenswert?

Thorsten O. schrieb:
> open-loop oder Steuerung.

Zeig mir bitte wo in der Grafik der Winkel als Open Loop angefahren 
wird. Ich bin ja durchaus Lernwillig, nur sehe ich bei weitem nicht wo 
dort der Winkel Open Loop sein soll.

von Stephan (stephan_h623)


Lesenswert?

Ich würde den äußeren Regler erst mal weitgehend ohne Berücksichtigung 
des Antriebs auslegen:
- Eingang: Position, Geschwindigkeit, Winkel der Rampe
- Ausgang: Sollwinkel der Rampe laut Regelcharakteristik

Dann den Schrittmotor ansteuern und das ganze mal testen.

Nachfolgend hängts von den mechanischen Eigenschaften, der maximalen 
Störung und der Geschwindigkeit / Genauigkeit der Sensorik ab.

Denn: sind Geschwindigkeit und Position mit hoher Genauigkeit und 
Frequenz bekannt ist der aktuelle Winkel der Rampe unwichtig.
Bei nur seltenen / ungenauen Werten - oder wenn die Geschwindigkeit 
nicht gemessen wird - geht's dagegen drum die Auswirkungen durch die 
Winkeländerung vorherzusagen und beim Winkel evtl. "vorzuhalten". Dann 
wird evtl. noch der konkrete Verlauf der Winkeländerung benötigt um die 
Geschwindigkeit zu errechnen bzw. zumindest den Messwert per 
Kalman-Filter o.Ä. zu verbessern.

Leider gibt es für den Antrieb keine verwertbare Sprungantwort (der 
Stepper ist nicht linear). Zumindest nicht für "schnellen" Betrieb. 
Evtl. reicht aber die geringe Stellgeschwindigkeit für einen Single-Step 
in der Praxis aus: Ausprobieren welche Frequenz aus dem Stand ohne 
Schrittverlust maximal geht und dann ggf. diese Periodendauer zu 60% auf 
ein Totzeitglied und zu 40% auf ein PT2-Glied aufteilen. Praktische 
Ansteuerung dann nur etwa mit der halben Frequenz (limitierte 
Stellgeschwindigkeit).

Auf nem kleinen Controller lässt sich aber eigentlich easy die aktuelle 
Winkelgeschwindigkeit des Steppers und eine dynamische Kennlinie mit 
verarbeiten. Macht man halt 5 Iterationen und steuert das dann 
entsprechend. Da darf dann auch die Schrittfrequenz zwischen 100 und 
4000 Hz variieren.
Kann man sogar noch unterschiedliche Geschwindigkeiten für "auf und ab" 
und je nach Position des Balls berücksichtigen.

Auflösung der Mechanik ist auch noch so ne Sache. +-30 Grad am Stepper 
sind noch gut linearisierbar. Sind dann vielleicht +-10 Grad an der 
Ebene. Aber +-30 Grad sind halt nur 67 Halbschritte. Flummi bleibt da 
liegen, Metallkugel wegen der Durchbiegung auch, Tischtennisball wird 
problematisch.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Philipp M. schrieb:
> nur sehe ich bei weitem nicht wo
> dort der Winkel Open Loop sein soll.

Dein Schrittmotor befindet sich außerhalb der Regelschleife --> open 
loop!

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


Lesenswert?

Hallo Philipp,

Philipp M. schrieb:
> Thorsten O. schrieb:
>> open-loop oder Steuerung.
>
> Zeig mir bitte wo in der Grafik der Winkel als Open Loop angefahren
> wird. Ich bin ja durchaus Lernwillig, nur sehe ich bei weitem nicht wo
> dort der Winkel Open Loop sein soll.

Erklär mir bitte mal, wie du da den Istwert zurückführst, ohne ihn zu 
messen. Tatsächlich setzt du implizit Sollwert=Istwert und führst damit 
den Sollwert(!) zurück. Das ist dann aber kein geschlossener Regelkreis.

Mit freundlichen Grüßen
Thorsten Ostermann

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Philipp M. schrieb:
> Dabei wird davon ausgegangen, dass keine Schritte
> verloren gehen und das Stellglied soweit begrenzt wird, dass es nicht
> außer Tritt kommt.

Lol.
So viel Theorie am Anfang und dann - "es wird davon ausgegangen"?
Das Einzige, wovon du mit Sicherheit ausgehen kannst ist, dass aus
dem Ganzen auf diese Art nie etwas vernünftiges wird.

Aber wenn du unbedingt im Betrieb die "genaue" Position raten willst:
Ein paar Striche auf der Antriebsscheibe, eine Reflexlichtschranke
und du brauchst nicht mehr von irgendetwas "auszugehen", du kannst
es messen, Grenzbereiche ermitteln und diese Werte später verwenden.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Philipp M. schrieb:
> Dabei wird davon ausgegangen, dass keine Schritte verloren gehen und das
> Stellglied soweit begrenzt wird, dass es nicht außer Tritt kommt.

Mit dem begrenzten Stellglied ist es dann vorbei mit dem linearen 
Regler.

von Johnny B. (johnnyb)


Lesenswert?

Philipp M. schrieb:
> Jaein, ich entwickle diesen Versuch im Rahmen meine Bachelorarbeit und
> unter anbetracht der verbleibenden Zeit lässt sich die Hardware leider
> nicht mehr austauschen. Rückblickend würde ich heute auch einen anderen
> Motor wählen beziehungsweise einen anderen Treiber als eine simple
> H-Brücke. Dafür ist nur leider jetzt nicht mehr genügend Zeit.

Ich kann nur dringend empfehlen, diese Erkenntnisse möglichst genau zu 
dokumentieren. Auch mit einer technisch nicht so guten Lösung lässt sich 
eine super Note erzielen, wenn genau erklärt werden kann, warum sich der 
gewählte Ansatz nicht bewährt hat und was/wie man es besser machen 
könnte.

von Stephan (stephan_h623)


Lesenswert?

Irgendwo müssen ja ein paar Hürden liegen. Sonst is ja zu einfach. ;)
Wobei der Teufel vermutlich wie meistens in den gar nicht so wichtigen 
Details liegt.
Das System zu ner ordentlichen Funktion zu bringen sollte nicht zu 
kompliziert sein. Das meiste is Dokumentation und das ganze formale 
Zeugs.

von Uli S. (uli12us)


Lesenswert?

Wenn du unbedingt eine Rückführung haben willst, dann nimm halt einen 
Steppermotor mit integriertem Treiber, der kann dann tatsächlich in 
Grenzen den Motorstrom nach der Belastung anpassen. Die Dinger sind 
insgesamt nicht grossartig teurer wie Stepper und dazu passender 
Treiber, zumindest wenn das einer sein soll, der wirklich was taugt, 
also nicht diese TB6600.
Und Zeit ist kein Argument, hier in Deutschland bestellt hast du die 
Teile 3 Werktage später im Briefkasten.

von H.Joachim S. (crazyhorse)


Lesenswert?

Eigentlich war es ja genau der einzige Sinn der Schrittmotoren diese aus 
der Regelung rauszunehmen, um den Sensor und die Verarbeitung des 
Ist-Signals zu sparen. Der Motor selbst als solcher ist Mist. 
Wirkungsgrad, Geschwindigkeit, Drehmoment, Dynamik - alles mehr als 
mittelmässig. Der Einzige Vorteil, wenn man die Sache nicht 
überstrapaziert: theoretische und praktische Postion stimmten ohne 
Rückmeldung überein. Leider ist es eben nicht immer so.
Aufgrund der Nachteile stirbt der SM so langsam aus.

: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Uli S. schrieb:.
> Und Zeit ist kein Argument, hier in Deutschland bestellt hast du die
> Teile 3 Werktage später im Briefkasten.

Das ging mir auch durch den Kopf. Bei Amazon kannst Du entsprechende 
„Shields“ (ich weiß, Thorsten mag den Begriff nicht) binnen 24h an die 
Burg bekommen. Die gibt es dank aller möglichen xyz-Tische 
millionenfach.
Und so ein Treiber mit Step und Dir Eingang macht die Sachen nicht 
komplizierter sondern tendenziell einfacher. Wenn es tatsächlich ein 
bidirektionaler Motor ist dauert der Austausch des Treibers 30min. Was 
ein Problem sein könnte ist die Spannung des Motors. Für den 
Chopperbetrieb sollte die eher klein sein, da die Betriebsspannung des 
Treibers natürlich Grenzen hat.

von Vanye R. (vanye_rijan)


Lesenswert?

>  Leider ist es eben nicht immer so.
>  Aufgrund der Nachteile stirbt der SM so langsam aus.

Na, das sehe ich nicht so. Der Schrittmotor hat eine Menge Nachteile,
aber auch ein paar Vorteile. Der wird bis zum juengsten Tag erhalten 
bleiben.

Ich kenne z.B eine medizinische Anwendung wo man mit einem Schrittmotor 
Medikamente dosiert, dir also genau X-Schritte irgendwas wichtiges in 
dein Blut pumpt, und parallel dazu noch einen Encoder dran hat um zu 
ueberpruefen ob der der Motor richtig dreht. So bekommt man eine 
ueberpruefung des Motors wo es wichtig ist.

Und dann wollen wir mal nicht vergessen, die Teile haben sich deshalb so 
verbreitet weil sie schlicht billig sind.

Vanye

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.