Berechnung des Bremszeitpunktes einer Schrittmotorsteuerung

OP #2413994
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
Angehängte Dateien:
#2414017
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.
OP #2414020
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
#2414022
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.
Gast #2414058
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.
#2414699
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"
OP #2417446
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

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