Arexx RP6 V2 Build your own robot kit RP6 V2 Manual Do Utilizador

Códigos do produto
RP6 V2
Página de 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
4.6.9. Antriebs Funktionen
Der   Antrieb   des   Roboters   kann   mit   Funktionen   der   RP6Library   sehr   komfortabel 
gesteuert werden. Es gibt dort bereits Funktionen, die mithilfe der Drehgeber automa-
tisch   die   Geschwindigkeit   der   Motoren   einregeln,   den   Motorstrom   überwachen, 
automatisch   bestimmte   Distanzen   abfahren   und   noch   einiges   mehr.   Das   ist   sehr 
komfortabel,   aber   man   muss   –   wie   bei   den   anderen   Systemen   auch   -   ein   paar 
Besonderheiten beachten wenn man das benutzen will. 
Und die aktuelle Fassung ist sicherlich noch nicht optimal. Da kann noch viel verbes-
sert und hinzugefügt werden!
void task_motionControl(void)
Die Funktion 
task_motionControl 
muss man ständig aus dem Hauptprogramm aufru-
fen – sonst funktioniert diese automatische Regelung nicht! Ständig aus dem Haupt-
programm aufrufen heisst hier nichts anderes, als dass man diese Funktion in der 
Hauptschleife des Programms bei jedem Schleifendurchlauf einmal aufrufen muss. Es 
reicht, wenn die Funktion alle 10 bis 50 Millisekunden einmal aufgerufen wird. Besser 
ist es allerdings, die Funktion noch sehr viel öfter aufzurufen. Es schadet nicht, wenn 
man die Funktion noch schneller aufruft, denn das Timing wird von einem der Hard-
waretimer gesteuert. Daher ist es auch egal ob man die Funktion in gleichbleibenden 
Intervallen aufruft, oder ob man mal 1ms und mal 10ms zwischen den einzelnen Auf-
rufen benötigt. Es kostet auch nur unwesentlich mehr Rechenzeit, die Funktion oft 
aufzurufen. Sie wird nur komplett ausgeführt, wenn auch etwas zu tun ist.
Wird diese Funktion korrekt angewandt, kümmert sie sich darum die Motoren immer 
relativ genau mit den gewünschten Drehzahlen laufen zu lassen. 
Das   wird   hier   erreicht,   indem   bei   jeder   Geschwindigkeitsmessung   die   Abweichung 
ermittelt und alle gemessenen Abweichungen aufsummiert werden (also ein integrie-
render Regler). Mit diesem Fehlerwert kann dann die Spannung an den Motoren über 
die PWM Module des Mikrocontrollers angepasst werden. Ist die Geschwindigkeit zu 
niedrig, sind die Fehlerwerte positiv und die Spannung an den Motoren wird dement-
sprechend erhöht. Ist die Geschwindigkeit zu hoch, wird die Spannung verringert. Das 
pendelt sich beim RP6 dann schnell auf einen relativ konstanten PWM Wert ein (kleine 
Schwankungen sind normal). Durch diese Regelung wird die Geschwindigkeit unab-
hängig von der Akkuspannung, der Belastung (Gewicht, Untergrund, Steigung/Abhang 
etc.) und Fertigungstoleranzen eingeregelt. Würde man die PWM Kanäle nur auf einen 
festen Wert einstellen, würde sich die Geschwindigkeit abhängig von der Belastung 
und Akkusspannung sehr stark verändern und wäre auch für jeden Kanal unterschied-
lich aufgrund der immer vorhandenen Fertigungstoleranzen.
Auch die Drehrichtung der Motoren wird von dieser Funktion gesteuert, denn es wäre 
der Lebensdauer der Motoren und der Getriebe nicht gerade zuträglich, wenn man öf-
ters z.B. bei 15cm/s die Drehrichtung abrupt ändert. Wenn die Drehrichtung also ge-
ändert werden soll, wird automatisch auf 0cm/s abgebremst, die Drehrichtung geän-
dert und erst dann wieder auf die Sollgeschwindigkeit beschleunigt. 
Neben der Geschwindigkeitsregelung und Drehrichtungskontrolle, wird auch der Mo-
torstrom überwacht und die Motoren automatisch abgeschaltet wenn einer von beiden 
zuviel Strom benötigen sollte. Das verhindert, dass die Motoren überlastet werden und 
- 99 -