c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

[ct-bot] BOT_SPEED_STOP lässt rechtes Rad ausrollen

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;