Stepper ansteuern über Servo-Controller

Gast #4643986
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?
(Firma: Vescomp) #4644110
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.
Gast #4644522
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?
(Firma: Vescomp) #4644599
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
Gast #4644740
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.
Gast #4644750
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.
Gast #4644757
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
(Firma: Vescomp) #4644765
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.
(Firma: mechapro GmbH) Persönliche Seite #4646168
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren