Forum: Mikrocontroller und Digitale Elektronik Stepper ansteuern über Servo-Controller


von Pepe (Gast)


Lesenswert?

Hallo.
Ich habe einen funktionierenden Servo-Controller und möchte zusätzlich 
noch Stepper ansteuern können.
Ich hatte mir dabei gedacht, dass ich einfach die Soll-Position der 
Positionssteuerung nehme und per Interrupt als Step-Up/Down an einen
Stepper-Treiber ausgebe.

Wie kann ich allerdings sicherstellen, dass ich die max. Frequenz des 
Stepper Motors nicht überschreite?

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


Lesenswert?

Pepe schrieb:
> Wie kann ich allerdings sicherstellen, dass ich die max. Frequenz des
> Stepper Motors nicht überschreite?

 Durch die 50Hz Frequenz beim Servosignal ?

von Pepe (Gast)


Lesenswert?

Bitte? Ich steh' am Schlauch...

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


Lesenswert?

Pepe schrieb:
> Bitte? Ich steh' am Schlauch...

 Wenn es ein Analog Servo ist, kommt alle 20ms ein Impuls.
 Das ist für mich 50Hz.

 Wenn dieser Impuls 1ms lang ist, steuerst du deinen Stepper so lange
 nach links, bis der Endanschlag erreicht ist. Dann ist Ruhe.
 Wenn es (Beispiel) 1,75ms ist, geht dein Stepper 3/4 nach Rechts.

 Wie schnell du den Stepper ansteuerst, ist deine Sache.
 Die Zeit von der Ruhestellung bis zum Vollanschlag kann 5ms dauern,
 aber auch 5 Stunden, bleibt dir überlassen.

 Servos sind auch nicht alle gleich schnell.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Marc V. schrieb:
> Pepe schrieb:
> Wie kann ich allerdings sicherstellen, dass ich die max. Frequenz des
> Stepper Motors nicht überschreite?
>
>  Durch die 50Hz Frequenz beim Servosignal ?

Man munkelt dass es noch eine Servo-Welt jenseits des Modellbauhorizonts 
geben soll.

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


Lesenswert?

Magnus M. schrieb:
> Man munkelt dass es noch eine Servo-Welt jenseits des Modellbauhorizonts
> geben soll.

 Da war der TO aber noch nicht.

von Harald W. (wilhelms)


Lesenswert?

Pepe schrieb:

> Ich habe einen funktionierenden Servo-Controller

Da das Wort "Servo für recht unterschiedliche Geräte benutzt wird,
solltest Du genauer beschreiben, was Du darunter verstehst.
Am besten mit Link.

von Pepe (Gast)


Lesenswert?

Ich bin nicht in der Modellbauwelt unterwegs, sondern in der 
Antriebstechnik.
Sprich ein klassischer Achscontroller mit angeschlossenem Motortreiber.

In der Firmware läuft (derzeit) eine Bahnsteuerung, welche die Position 
des Motors vorgibt und die nachgelagerte Regelung sorgt dafür, dass die 
Achse an die entsprechende Position fährt.

Jetzt möchte die Lageregelung des Motors (DC/BLDC oder was auch immer) 
durch eine Ansteuerung eines Steppers ersetzen.

Ich stelle mir vor, dass ich die Positionsänderung der Bahnsteuerung 
verwende, um die Schritte für den Steppertreiber zu erzeugen.

So weit dürfte dies auch funktionieren, wenn ich langsam genug fahre. 
Sollte aber mal die Geschwindigkeit höher werden, kann es auch 
vorkommen, dass ich pro Takt der Bahnsteuerung 2 oder mehr Schritte 
machen müsste. Die Positionen der Bahnsteuerung werden derzeit mit 1KHz 
berechnet.

Wie "verteile" ich nun die Schritte für den Stepper auf die "Takte der 
Bahnsteuerung", damit ich nicht die max. Freq. des Steppers 
überschreite?

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


Lesenswert?

Pepe schrieb:
> Sollte aber mal die Geschwindigkeit höher werden, kann es auch
> vorkommen, dass ich pro Takt der Bahnsteuerung 2 oder mehr Schritte
> machen müsste. Die Positionen der Bahnsteuerung werden derzeit mit 1KHz
> berechnet.

 Kommt wiederum auf dein Motor an.
 Üblich ist von 200 U/min bis 1200 U/min.
 Bei 200 Schritte/Umdrehung sind es von 660 Schritte/s bis
 4000 Schritte/s oder 0,66 Schritte/ms bis 4 Schritte/ms.

 Muss man halt ausrechnen.
 Vielleicht hilft dir das, wenn es unbedingt ein Stepper sein mus:

 http://www.daycounter.com/Calculators/Stepper-Motor-Calculator.phtml

von aSma>> (Gast)


Lesenswert?


von Pepe (Gast)


Lesenswert?

@Marc Vesely:
Sorry, habe ich vergessen: Ich muss positionieren, die tatsächliche 
Drehzahl ist bei mir zweitrangig. Eben bis auf die max. Frequenz, weil 
ich ja nicht möchte, dass mir Schritte verloren gehen.

Um jetzt Dein Beispiel zu nehmen: Meine Firmware berechnet alle 1ms die 
Position neu. Bei den angenommenen 4000 Schritten/s, bedeutet dies bei 
max. Geschwindigkeit, dass ich pro 1ms Takt vier Schritte fahren muss, 
damit ich der Bahnsteuerung folgen kann.

Derzeit hab ich aber auch noch keine Ahnung, welchen Stepper ich 
ansteuern muss. D.h. ich kann nicht einfach per weiteren Timer eine 
Frequenz von z.B. 4KHz für einen IRQ erzeugen, in dem ich dann die 4 
einzelnen Steps an den Steppertreiber schicke.

von Wolfgang (Gast)


Lesenswert?

Pepe schrieb:
> Sorry, habe ich vergessen: Ich muss positionieren, die tatsächliche
> Drehzahl ist bei mir zweitrangig. Eben bis auf die max. Frequenz, weil
> ich ja nicht möchte, dass mir Schritte verloren gehen.

Positionieren kannst du beim Schrittmotor mit "Schritte zählen" 
übersetzen. Solange du sicher stellst, dass die Referenz stimmt und 
niemand sich verzählt, sollte das beherrschbar sein.

Meist gehen die Schritte beim Schrittmotor nicht wegen einer 
Überschreitung der max. Frequenz - die gibt es nämlich in dem Sinne gar 
nicht - verloren, sondern wegen zu hohem Anspruch an das Drehmoment.

von Georg (Gast)


Lesenswert?

Pepe schrieb:
> In der Firmware läuft (derzeit) eine Bahnsteuerung, welche die Position
> des Motors vorgibt und die nachgelagerte Regelung sorgt dafür, dass die
> Achse an die entsprechende Position fährt.

Das ist eine Beschreibung ohne Kenntnis der tatsächlichen Funktion. In 
der Regel ist die Motoransteuerung eine Konstantstromregelung. Diese 
bekommt ihren Sollwert von einer übergeordneten 
Geschwindigkeitsregelung, diese wiederum bekommt den Sollwert der 
Geschwindigkeit von der übergeordneten Lageregelung.

Funktionskonform wäre es, den Geschwindigkeits-Sollwert umzusetzen in 
entsprechende Schritte/sec für den Stepper. Aber ein Steppermotor 
braucht auch völlig andere Leistungsendstufen als ein Servomotor. Mit 
ein bisschen Firmware-Hacking ist das nicht getan.

Georg

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


Lesenswert?

Pepe schrieb:
> Sorry, habe ich vergessen: Ich muss positionieren, die tatsächliche
> Drehzahl ist bei mir zweitrangig. Eben bis auf die max. Frequenz, weil
> ich ja nicht möchte, dass mir Schritte verloren gehen.

 Schritte werden gezählt, da kann nichts verloren gehen.

> Um jetzt Dein Beispiel zu nehmen: Meine Firmware berechnet alle 1ms die
> Position neu. Bei den angenommenen 4000 Schritten/s, bedeutet dies bei
> max. Geschwindigkeit, dass ich pro 1ms Takt vier Schritte fahren muss,
> damit ich der Bahnsteuerung folgen kann.

 Aber nur wenn 1KHz bedeutet, dass jede ms 1/1000 Umdrehung erfolgen
 muss, was höchstwahrscheinlich nicht der Fall ist.

 Ansonsten kriegst du jede ms die Soll-Position, die wird mit der
 Ist-Position verglichen und nur falls nötig, wird die Position
 korrigiert.

 Wie du die Steppern ansteuerst, ist eine ganz andere Sache.
 Wie gesagt, das muss sehr genau berechnet werden.

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


Lesenswert?

Wie soll denn überhaupt die Schnittstelle zwischen deinem vorhandenen 
Servocontroller und dem Schrittmotor sein? Du wirst ja wohl nicht 
erwarten, dass du den Motor direkt an den Controller anschließen 
kannst?! Kann der Controller über digitale oder analoge I/Os etwas 
ausgeben? Z.B. Takt-/Richtungssignale oder einen analogen 
Drehzahlsollwert?

Hat der Schrittmotor bzw. die Achse mit dem Schrittmotor einen Encoder, 
so dass du auf dem Controller eine Lageregelung machen könntest? Sonst 
fällt analog als Schnittstelle schon mal raus. Und für Takt-/Richtung 
dürfte der Lageregeltakt von 1kHz zu langsam sein, wenn du nicht langsam 
und ruckelig in Voll- oder Halbschritt fahren willst.

Nachtrag: Wenn du eine programmierbare Schrittmotorsteuerung [1] 
verwendest, bei der die Strecke pro "Schritt" aus deinem Controller 
einstellbar ist, kann das gehen. Die Beschleunigungs-Rampe für den 
Schrittmotor muss dann in der Schrittmotorsteuerung berechnet werden.

Mit freundlichen Grüßen
Thorsten Ostermann

[1] 
http://www.mechapro.de/shop/Schrittmotor-Endstufen/Einzelachsen/LAM-DS3044-Programmierbare-5-6A-Mikroschritt-Endstufe::243.html

: Bearbeitet durch User
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.