@radbruch:
Das hat denke ich weniger mit Wärme oder Anhauchen zu tun, als mit Reibung plus Kettenspannung, die während einer Umdrehung nicht konstant ist!
Du betreibst den RP6 bei Deinen eigenen Fahrroutinen mit konstanten PWM Werten vermute ich mal, also wird nicht bei Bedarf automatisch hochgeregelt. Die Motoren brauchen zum Anfahren immer etwas "mehr Saft" als im Betrieb - das gilt auch beim Umschalten der Laufrichtung!
Und das kann sich auch für Vorwärts und Rückwärts anders verhalten und hängt wie gesagt auch von der Kettenspannung ab. Kann also jedesmal leicht unterschiedlich sein.
Wenn die Motoren dann erstmal laufen, dann laufen sie auch mit deutlich niedrigeren PWM Werten.
Der obige Fehler wird durch diese beiden Bedingungen hier:
Code:
// Links:
if((adcMotorCurrentLeft < 150) && (mleft_speed == 0)
&& (mleft_des_speed != 0) && (mleft_ptmp > 150))
emergencyShutdown(ENCODER_MALFUNCTION_LEFT);
// Rechts:
if((adcMotorCurrentRight < 150) && (mright_speed == 0)
&& (mright_des_speed != 0) && (mright_ptmp > 150))
emergencyShutdown(ENCODER_MALFUNCTION_RIGHT);
in der task_motionControl() Funktion erzeugt (Zeile 586).
Wenn ich mir nun gerade nochmal das Logfile von Kirsten anschaue - letzte Zeile:
"
TERMINAL: T: 100 |VL: 167 |VR: 000 |PL: 090 |PR: 150 |IL: 047 |IR: 082 |UB: 08.26V
"
Da hat der Regler schon einen PWM Wert von 150 für Rechts eingestellt, allerdings ist die gemessene Geschwindigkeit noch immer 0.
Im nächsten Messzyklus dürfte der PWM Wert dann größer geworden sein, so dass die Bedingung oben erfüllt war.
Da gleichzeitig der gemessene Strom noch recht klein ist (=Motor nicht blockiert), wird die Bedingung oben wahr und die Fehlermeldung wird ausgegeben. Das der gemessene Strom auf einen nicht blockierten Motor hinweist, kann allerdings daran liegen das die ADCs alle dann der Reihe nach ausgewertet werden wenn gerade nichts anderes zu tun ist und das kostet Zeit.
Der einzige Zweck dieser Routinen liegt eigentlich darin, falsch eingestellte bzw. defekte Encoder zu erkennen.
Ich glaube in diesem Fall schiessen die Routinen etwas übers Ziel hinaus und reagieren zu schnell bei dieser Situation beim Anfahren.
Das kann ich hier bei meinen Testbots zwar gerade nicht wirklich reproduzieren, aber ich schaue mal ob ich das Verhalten beim Anfahren etwas verbessern kann.
MfG,
SlyD
Lesezeichen