|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Lukas Jelonek
Datum: Do, 09.03.2006 11:31:22
Hallo allerseits,
mir ist aufgefallen, dass die Motoren beim Wechsel von
Geschwindigkeit >0 auf 0 unterschiedlich reagieren.
Das rechte Rad stoppt und dreht noch ein klein wenig Rückwärts und
das linke Rad rollt aus.
Dabei sollten bei einem STOP ja beide Räder stehen bleiben (oder doch
ausrollen?).
Dieses unterschiedliche Verhalten liegt in der "mcu/motor-low.c" in
der Funktion bot_motor(). Hier wird
jeweils abgefragt, ob die Geschwindigkeit < 0 ist, aber da die
Motoren invertiert sind reagieren diese
unterschiedlich. Der rechte Motor dreht bei 0 Rückwärts(?) und der
linke Motor dreht bei 0 Vorwärts(?).
Um für beide Motoren gleiches Verhalten zu erreichen muss man die 0
eindeutig einer Richtung
zuordnen. Wenn wir nun wollen, dass der Motor ruckartig
stehenbleibt, dann funktioniert der
angehängte Patch, der die 0 einfach zum Rückwärtsfahren vom rechten
Motor zuordnet (siehe Patch).
Wenn der Motor ausrollen soll, dann müssen wir die 0 einfach nur dem
linken zuordnen.
mfg Lukas Jelonek
Index: motor-low.c
===================================================================
RCS file: /ctbot/ct-Bot/mcu/motor-low.c,v
retrieving revision 1.4
diff -u -r1.4 motor-low.c
--- motor-low.c 27 Feb 2006 14:59:30 -0000 1.4
+++ motor-low.c 9 Mar 2006 11:43:16 -0000
@@ -77,7 +77,7 @@
else
BOT_DIR_L_PORT &= ~BOT_DIR_L_PIN;
- if (right < 0 ) // Einer der Motoren ist invertiert, da er ja in
die andere Richtung schaut
+ if (right <= 0 ) // Einer der Motoren ist invertiert, da er ja in
die andere Richtung schaut
BOT_DIR_R_PORT |= BOT_DIR_R_PIN;
else
BOT_DIR_R_PORT &= ~BOT_DIR_R_PIN;
|
|
|