Forum: Mikrocontroller und Digitale Elektronik Berechnung des Bremszeitpunktes einer Schrittmotorsteuerung


von Oliver S. (os252)


Angehängte Dateien:

Lesenswert?

Hallo

Ich bin dabei, eine Schrittmotorsteuerung zu implementieren. Diese soll 
mit einer konstanten Beschleunigung realisiert werden. Dazu wird in 
einem konstanten zeitlichen Abstand die Schrittfrequenz neu berechnet, 
solange bis die Sollfrequenz erreicht ist.

Nun habe ich aber das Problem, dass ich bei der Bestimmung des 
Zeitpunktes, in dem die Verzögerung einsetzen soll, Probleme habe. Ich 
möchte gerne die gesamte, zu verfahrende Schrittzahl und die 
Geschwindigkeit vorgeben. Der Beschleunigungswert ist immer konstant.

Ich habe mir das ganze in Excel eingegeben, um Zusammenhänge besser zu 
erkennen. Das Diagramm habe ich als Bild hier angehängt.

Nun stehe ich aber immernoch auf dem Schlauch, wie man die Schrittanzahl 
berechnet, ab wann verzögert werden muss.
Ich hoffe, dieses Problem ist hier jemandem schon begegnet. Im Internet 
habe ich bereits gesucht, aber so explizit auf diese Frage leider keine 
Antwort bekommen.

Die Anwendung soll zwar auf einem FPGA implementiert werden, aber vom 
Prinzip sind die Berechnungen usw. auf FPGA und µC ja gleich.

Es wäre echt super wenn mir hier jemand auf die Sprünge helfen könnte.

MfG Olli

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich weiß mangels Hintergrundwissen nicht genau, was dein Problem ist. 
Aber ich glaube es würde dir schon helfen, wenn du einfach die diskrete 
Ableitung der Position bildest (also die Geschwindigkeit). Das geht über 
(x_alt - x_neu) / delta-zeit. Und da dann schauen, wie das Vorzeichen 
ist.

von Karl H. (kbuchegg)


Lesenswert?

Bei Atmel gibt es m.W. eine Application Note, die sich dieses Problems 
annimmt.


Das hier
> Dazu wird in einem konstanten zeitlichen Abstand die Schrittfrequenz
> neu berechnet, solange bis die Sollfrequenz erreicht ist.
wirst du allerdings über Board werfen müssen.

Der komplette Ablauf der Bewegung muss vollständig berechnet (bzw. 
durchgerechnet) werden, noch ehe der Schrittmotor seinen ersten Schritt 
macht.

von Oliver S. (os252)


Lesenswert?

Hallo,

also die Geschwindigkeit im jeweiligen Punkt berechne ich ja schon. Mit 
der von Dir beschriebenen Rechnung, mit der Vorzeichenbetrachtung 
bekomme ich ja heraus ob ich mich gerade in der positiven  oder 
negativen Steigung befinde.

Meine Frage könnte konkret eher heissen:
Wie berechne ich die Anzahl der Schritte, die benötigt wird, um von der 
maximalen Schrittfrequenz auf 0 Schritte/s (Stillstand) zu kommen.

Wenn man dann diesen Wert von der insgesamt zu verfahrenden Schrittzahl 
abzieht, hat man ja den Punkt, ab dem verzögert werden muss.

Vielen Dank für die Mühe!

MfG Olli

von Karl H. (kbuchegg)


Lesenswert?

Oliver S. schrieb:


> Meine Frage könnte konkret eher heissen:
> Wie berechne ich die Anzahl der Schritte, die benötigt wird, um von der
> maximalen Schrittfrequenz auf 0 Schritte/s (Stillstand) zu kommen.

Nun das sind genausoviele, wie zur Beschleunigung gebraucht werden.

Der interessantere Fall ist aber der, wenn der Verfahrweg zu kurz ist 
als das der Motor maximale Schrittfrequenz erreichen darf, weil er es 
sonst nicht mehr derbremsen kann.

von Karl H. (kbuchegg)


Lesenswert?


von Willi (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Der komplette Ablauf der Bewegung muss vollständig berechnet (bzw.
> durchgerechnet) werden, noch ehe der Schrittmotor seinen ersten Schritt
> macht.

Eigentlich nicht.
Man muß die Schritte der Beschleunigungsrampe mitzählen und sehen, ob 
diese Anzahl schon die Anzahl der restlichen Schritte erreicht; dann muß 
wieder gebremst werden.
Dabei ist es dann unerheblich, ob die Beschleunigungsrampe vollständig 
abgelaufen ist, oder die max. Schrittfrequenz nicht erreicht wurde und 
vorzeitig gebremst wird.

von Horst H. (horha)


Lesenswert?

Hallo,

Atmel bezieht sich in seiner application note auf diese Interseite:
http://www.eetimes.com/design/embedded/4006438/Generate-stepper-motor-speed-profiles-in-real-time
, die noch mehr ins Detail mit zusätzlichen Beschleunigungsrampen geht.
Das Programm motor.c
http://www.eetimes.com/design/embedded/source-code/4210291/Motor-c
kann man nach Registrierung herunterladen.

von spess53 (Gast)


Lesenswert?

Hi

Software gibt es doch auch zur Atmem-AppNote:

http://www.atmel.com/dyn/resources/prod_documents/AVR446.zip

MfG Spess

von Purzel H. (hacky)


Lesenswert?

Differentialgleichungen sind bekannt ?

von Horst H. (horha)


Lesenswert?

spess53 schrieb:
> Hi
>
> Software gibt es doch auch zur Atmem-AppNote:
>
> http://www.atmel.com/dyn/resources/prod_documents/AVR446.zip
>
> MfG Spess

Es ging mir mehr darum, dass dort die Herleitung und auch weitergehende 
Aspekte, wie die Erzeugung von verschiedenen Beschleunigungsrampen, 
beschrieben sind.
Aber hier im Forum Beitrag "rampenbrechnung für schrittmotor" gibt ja 
reichlich dazu.
Ab Beitrag "Re: rampenbrechnung für schrittmotor"

von Oliver S. (os252)


Lesenswert?

Hallo,

ich habe das Problem nun gelöst und möchte meine Lösung hier berichten, 
damit sich andere dort evtl dran orientieren können.

Also der Tipp von Willi hat mich auf den richtigen Weg gebracht.
Ich Beschleunige nun konstant über eine Tabelle, die die nötigen Werte 
beinhaltet. In der Beschleunigungsphase zähle ich die Schritte mit. Wenn 
nun die Hälfte der Gesamtschrittzahl in der Beschleunigungsphase 
erreicht wird, wird direkt in die Verzögerungsphase übergegangen.
Wenn die maximale Geschwindigkeit erreicht ist, macht er eben so viele 
Schritte bis Gesamtschrittzahl - Schrittzahl_der_Beschleunigung erreicht 
wurde.
Damit habe ich die erforderliche Schrittzahl nun herausbekommen, ab wann 
angefangen werden muss zu bremsen.
Dieses geht natürlich nur, wenn die Beschleunigungsrampe genau der 
Verzögerungsrampe entspricht. Das ist bei mir ja aber der Fall.

Vielen Dank für die vielen Tipps und Anregungen.

MFG

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.