Motorcontroller-Firmware
From Nibo
Line 72: | Line 72: | ||
==PID Regler== | ==PID Regler== | ||
+ | Zur Regelung der Motoren dient folgender, modifizierter PID Regler: | ||
+ | [[image:Regler.png]] |
Revision as of 15:39, 10 July 2007
Contents |
Kommandos
Die folgenden Kommandos können über die TWI Schnittstelle zum Motorcontroller geschickt werden.
Kommando | Größe | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 |
---|---|---|---|---|---|---|
Stop | 1 | 0x00 | - | - | - | - |
SetPWM | 5 | 0x01 | PWM links | PWM rechts | ||
SetSpeed | 5 | 0x02 | Soll links | Soll rechts | ||
SetParameters | 4 | 0x03 | Ki | Kp | Kd | - |
ResetOdometry | 5 | 0x04 | Odo links | Odo rechts |
Stop
Die beiden Motoren werden sofort abgeschaltet. Der Motorcontroller befindet sich nach dem Einschalten oder nach einem reset in diesem Zustand.
SetPWM
Das Puls/Pause-Verhältnis wird für die beiden Motoren auf die übertragenen Werte festgesetzt. Die Wertebereich liegt im Interval -1024 (-100%) bis +1024 (+100%).
SetSpeed
Der PID Regler versucht die angegebenen Soll-Drehzahlen für die Motoren zu halten. Die Geschwindigkeit wird in Ticks/Sekunde angegeben, wobei 20 Ticks einer Radumdrehung entsprechen.
SetParameters
Mit diesem Befehl werden die Konstanten für den PID-Regler in das EEPROM des Motorcontrollers übertragen. Sie bleiben auch nach einem Ausschalten des Roboters erhalten.
ResetOdometry
Dieser Befehl setzt die internen Odometriezähler auf die übertragenen Werte zurück.
Zustand
Das folgende Datenpaket kann über die TWI Schnittstelle vom Motorcontroller abgefragt werden und beschreibt den aktuellen Zustand:
Größe | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
---|---|---|---|---|---|---|---|---|
8 | Odo links | Odo rechts | Geschw. links | Geschw. rechts |
16-Bit Werte
16-Bit Werte werden immer folgendermaßen übertragen:
Byte0 | Byte1 |
---|---|
Hi-Byte | Lo-Byte |
PID Regler
Zur Regelung der Motoren dient folgender, modifizierter PID Regler: