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.
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²)
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
Do mi schrieb: > Bremsrampe = 1000rpm/s Das nenne ich mal eine heiße Einheit für die Beschleunigung. Warum nicht gleich rpmps ;-)
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...
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
rp6conrad schrieb: > s= s_anfang + v_anfang*t +1/2 a.t² s_anfang ist der Weg, wo der Motor aktuell steht?
Do mi schrieb: > s_anfang ist der Weg, wo der Motor aktuell steht? Wenn du mit "aktuell" den Zeitpunkt mit t=0 meinst - ja.
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?
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
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...
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.
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?
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.
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!!!
Ich hoffe die Formatierung im Sourcecode sieht nicht genauso schäbig aus...
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);
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.