Forum: Mikrocontroller und Digitale Elektronik Bremsrampe berechnen


von Mach F. (machfax)


Lesenswert?

Hallo zusammen

Ich habe einen Motor mit einem Encoder von 2000Impulsen / Umdrehung.
Den Speed regle ich im Moment in der Einheit rpm. Ich habe eine 
Bremsrampe in der Einheit rpm/s.

Ich möchte jetzt die Bremsrampe genau dann einleiten, damit der Motor 
auf einer bestimmten Position stehen bleibt bzw. die Rampe auf 0 ist.
Gegeben habe ich die aktuelle Geschwindigkeit in rpm und die Bremsarmpe 
in rpm/s. Ebenfalls weiss ich dass eine Umdrehung vom Motor 2000 Impulse 
vom Encoder beträgt und ich kenne die aktuelle EncoderPosition und die 
Zielposition. Wie muss die Formel jetzt aussehen, um die Encoderposition 
zu errechnen, wo ich die Rampe ienleiten muss?
Soweit ich verstanden habe, muss ich integrieren, aber ich komme da 
leider nicht weiter, bitte um Hilfe.

Ich habe also zum Besipiel aktuelle Position = 0
Zielposition = 50000
Speed = 1000rpm
Bremsrampe = 1000rpm/s

Jetzt will ich wissen, bei welcher Position ich die Bremsarmpe 
aktivieren muss, bzw. vieviele Counts vor der Zielposition.

Vielen Dank für Inputs. Ach ja, die Programmiersprache vom uP ist C.

von rp6conrad (Gast)


Lesenswert?

Das ergebt sich aus den Formule für den abgelegten Weg bei konstante 
Beschleunigung (Bremsen = negative Beschleunigung):
s= s_anfang + v_anfang*t +1/2 a.t²
Jetzt muss du noch erst t (zeitspanne) ausrechnen, wie lange dauert es 
bis die Geschwindigkeit 0 ist : t=v/a
Den Weg darfs du in mm oder in tics verwenden, aber alle parameter 
naturlich gleich (Weg=tics, Speed = tics/sek, Beschl = tics/s²)

von Mr. X (Gast)


Lesenswert?

Do mi schrieb:
> Ich habe einen Motor mit einem Encoder von 2000Impulsen / Umdrehung.
Komischer Encoder - die meisten mit vergleichbarer Auflösung haben 2048 
Imp/Umdrehung

von Michael (Gast)


Lesenswert?

Do mi schrieb:
> Bremsrampe = 1000rpm/s
Das nenne ich mal eine heiße Einheit für die Beschleunigung.
Warum nicht gleich rpmps ;-)

von Mach F. (machfax)


Lesenswert?

Hallo

Ok, Danke.

Das heisst

rp6conrad schrieb:
> s= s_anfang + v_anfang*t +1/2 a.t²

a.t^2 was ist das genau? Die Beschleunigung oder?

Ja es ist ein Encoder mit 500I/U und ich nehme beide Spuren mit beiden 
Flanken ergibt dann 2000/U...

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


Lesenswert?

Gemeint ist a*t², also Beschleunigung mal Zeit zum Quadrat. Die Formel 
sollte eigentlich jeder Abiturient mal im Physikunterricht gehört haben. 
Spätestens beim Einsetzen der Einheiten müsste es aber klar werden.

Mit freundlichen Grüßen
Thorsten Ostermann

von Mach F. (machfax)


Lesenswert?

rp6conrad schrieb:
> s= s_anfang + v_anfang*t +1/2 a.t²

s_anfang ist der Weg, wo der Motor aktuell steht?

von Wolfgang (Gast)


Lesenswert?

Do mi schrieb:
> s_anfang ist der Weg, wo der Motor aktuell steht?
Wenn du mit "aktuell" den Zeitpunkt mit t=0 meinst - ja.

von Mach F. (machfax)


Lesenswert?

Wolfgang schrieb:
> Wenn du mit "aktuell" den Zeitpunkt mit t=0 meinst - ja.

ok, alles klar und als resultat habe ich dann die counts oder den weg 
der zurückgelegt wird, bis ich auf Geschwindigkeit 0 bin, korrekt?

von Mach F. (machfax)


Angehängte Dateien:

Lesenswert?

Ich habe das mal in ein Excel getippt.

Jedoch stimmt da was nicht, denn wen ich mit einer Geschwindigkeit von 
2000rpm und einer Beschleunigung von 1000rpm/s rechne, erhalte ich einen 
Weg s von 100Umdrehungen, bis der Motor still stehen soll, das stimmt 
aber überhaupt nicht. Was ist daran falsch?

Danke

von Mach F. (machfax)


Lesenswert?

Ich habe mal gemessen und mit einer Rampe von 5000 im Excel und Speed = 
2000 müsste das Resultat in Counts ca. 1260 sein.
Ich erhlate aber 40000...

von Johannes M. (johannesm)


Lesenswert?

Ich würde dir empfehlen erstmal bei den ganzen Einheiten aufzuräumen. 
Wie weiter oben schon gesagt rpm/s ist schon ziemlich kurios und dem 
Verständniss bzw. der Nachvollziehbarkeit nicht wirklich zuträglich.

von Mach F. (machfax)


Lesenswert?

Johannes M. schrieb:
> Wie weiter oben schon gesagt rpm/s ist schon ziemlich kurios und dem
> Verständniss bzw. der Nachvollziehbarkeit nicht wirklich zuträglich.

Ja aber wenn ich eine Geschwindigkeit in rpm habe und eine 
Beschleunigung in rpms passt doch, oder nicht? Ich meine bei einer 
Beschleunigung von 5000rpms wird der Speed in 1 Sekunde um 5000rpm 
erhöht.
Sorry aber ich sehe da im Moment nicht in welche "bessere" Einheit ich 
das wandeln sollte?

von Michael (Gast)


Lesenswert?

Do mi schrieb:
> Ja aber wenn ich eine Geschwindigkeit in rpm habe und eine
> Beschleunigung in rpms passt doch, oder nicht?
Spätestens wenn du anfängst, über die Zeit zu integrieren, um den 
Gesamtwinkel bis zum Anhalten zu berechnen, wird das unübersichtlich.

von Mach F. (machfax)


Angehängte Dateien:

Lesenswert?

Hallo

Ich habe vergessen, dass ein Getriebe mit einer Untersetzung von 1:21 
zwischen Motor und der Kurbel liegt...

Im Anhang das angepasste Excel.
Der C-Code sieht folgendermassen aus:
g_ulStopIncrements = (((ul_Getriebe  g_ulMeasuredSpeed  
g_ulMeasuredSpeed) /60) / UI_PARAM_DECEL)
                            + (((ul_Getriebe  UI_PARAM_DECEL  
((g_ulMeasuredSpeed * g_ulMeasuredSpeed) /60))
                            /  (UI_PARAM_DECEL*UI_PARAM_DECEL))/2);


Danke an alle für die Hilfe!!!

von Claus M. (energy)


Lesenswert?

Ich hoffe die Formatierung im Sourcecode sieht nicht genauso schäbig 
aus...

von Mach F. (machfax)


Lesenswert?

Claus M. schrieb:
> Ich hoffe die Formatierung im Sourcecode sieht nicht genauso schäbig
> aus...

nein ;-)

g_ulStopIncrements = (((ul_Getriebe  g_ulMeasuredSpeed  
g_ulMeasuredSpeed) /60) / UI_PARAM_DECEL)
+ (((ul_Getriebe  UI_PARAM_DECEL  ((g_ulMeasuredSpeed * 
g_ulMeasuredSpeed) /60))
/ (UI_PARAM_DECEL*UI_PARAM_DECEL))/2);

von Mach F. (machfax)


Lesenswert?

rp6conrad schrieb:
> Das ergebt sich aus den Formule für den abgelegten Weg bei konstante
> Beschleunigung (Bremsen = negative Beschleunigung):
> s= s_anfang + v_anfang*t +1/2 a.t²
> Jetzt muss du noch erst t (zeitspanne) ausrechnen, wie lange dauert es
> bis die Geschwindigkeit 0 ist : t=v/a
> Den Weg darfs du in mm oder in tics verwenden, aber alle parameter
> naturlich gleich (Weg=tics, Speed = tics/sek, Beschl = tics/s²)

Hallo

Bei schnellen Beschleunigungen stimmt mir diese Formel nicht. Ist diese 
wirklich korrekt? (bei schnellen Beschleunigungen resultiert mir als 
Resultat ein zu hoher Wert so dass der Motor zu früh stoppt)

Danke

von rp6conrad (Gast)


Lesenswert?

Die Formule stimmt, konnen sie in jeden Fysicbuch lesen. Aber wie sicher 
sind sie van die exacte Verzogerung und ist diese konstant ueber die 
ganse Bremsung ? Wen sie Bremsen ueber eine Kurzschluss von Motor, ist 
die Verzogerung sowieso nicht konstant. Wenn sie wirklich exact Bremsen 
muss an eine bestimmte Position, muss du eigentlich eine PID 
Regelstrecke programmieren. Dafur ist dan auch eine PWM Regelung von 
Motor notwendig, und encoder messung.

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


Lesenswert?

Hallo,

> Ja aber wenn ich eine Geschwindigkeit in rpm habe und eine
> Beschleunigung in rpms passt doch, oder nicht? Ich meine bei einer
> Beschleunigung von 5000rpms wird der Speed in 1 Sekunde um 5000rpm
> erhöht.
> Sorry aber ich sehe da im Moment nicht in welche "bessere" Einheit ich
> das wandeln sollte?

Lies mal bei Wikipedia den Eintrag zu "SI-Einheiten". rpm/s enthält z.B. 
für die Zeit sowohl Minute als auch Sekunde. Besser ist es, alles in 
Sekunden umzurechnen. Es sagt ja niemand, dass in der Applikation die 
Eingabe nicht in RPM sein darf, nur intern muss man halt auf 
einheitliche Größen umrechnen.

Mit freundlichen Grüßen
Thorsten Ostermann

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.