HJBB49
15.01.2011, 17:03
Nibo2 Test Seitensensoren
Entwicklungsumgebung:
Windows XT, AVR Studio 4 V4.18, nibolib-20101210
Nachdem meine Versuche mit copro_ticksRel (..) nicht viel gebracht hatten, habe ich es mit copro_setSpeed (vl, vr) versucht.
Aber auch hier ergeben sich grundsätzliche Schwierigkeiten bei der MotorRegelung.
Programmablauf:
main()
...
copro_setSpeedParameters(15, 20, 10); // ki, kp, kd
...
Endlosschleife
- ir_rc5 () manuelle Steuerung über IR-Fernbedienung
Daten der Seitensensoren in X-Y Vektoren umwandeln
modus aus den X-Y Vektoren ermitteln
modus: vor, zurück, links, rechts (insgesamt 25 Modi)
Daten anzeigen (LCD und Funk)
go == 1?
modus auswerten (switch)
delay (msec)
- copro_update ()
Testen der Grenzwerte für die verschiedenen Modi per IR-Bedienung,
vl, vr, mydelay lassen sich per Tasten inc/decrementieren
Steuerung vor, zurück, links, rechts läuft nach folgendem Schema ab (je nach Taste):
sound_tone(20, 3000);
go = 0;
copro_setSpeed (vl, vr);
delay (mydelay);
// copro_setSpeed (0,0);
copro_stop ();
Hierbei tritt jedoch folgendes Phänomen auf:
Nach mehrmaligem Drücken der Tasten vor (zurück, links, rechts) wird irgendwann die Befehlssequenz
delay(mydelay)
copro_stop ()
nicht mehr ausgeführt und der Nibo läuft immer weiter!!
Kennt jemand dieses Problem und hat evtl. eine Erklärung / Lösung?
Meiner Meinung nach ist die Motor Kontrolle nicht optimal gelöst.
Es müßte ein Busy-Flag geben, welches angibt wann die MotorRegelung abgeschlossen ist, um dann das Programm weiter abzuarbeiten.
flag = copro_setSpeed (vl, vr, delay) delay = 0 -> normal corpro_setSpeed
desgleichen
flag = copro_setTargetRel (tl, tr, v)
mfg hjjb49
Entwicklungsumgebung:
Windows XT, AVR Studio 4 V4.18, nibolib-20101210
Nachdem meine Versuche mit copro_ticksRel (..) nicht viel gebracht hatten, habe ich es mit copro_setSpeed (vl, vr) versucht.
Aber auch hier ergeben sich grundsätzliche Schwierigkeiten bei der MotorRegelung.
Programmablauf:
main()
...
copro_setSpeedParameters(15, 20, 10); // ki, kp, kd
...
Endlosschleife
- ir_rc5 () manuelle Steuerung über IR-Fernbedienung
Daten der Seitensensoren in X-Y Vektoren umwandeln
modus aus den X-Y Vektoren ermitteln
modus: vor, zurück, links, rechts (insgesamt 25 Modi)
Daten anzeigen (LCD und Funk)
go == 1?
modus auswerten (switch)
delay (msec)
- copro_update ()
Testen der Grenzwerte für die verschiedenen Modi per IR-Bedienung,
vl, vr, mydelay lassen sich per Tasten inc/decrementieren
Steuerung vor, zurück, links, rechts läuft nach folgendem Schema ab (je nach Taste):
sound_tone(20, 3000);
go = 0;
copro_setSpeed (vl, vr);
delay (mydelay);
// copro_setSpeed (0,0);
copro_stop ();
Hierbei tritt jedoch folgendes Phänomen auf:
Nach mehrmaligem Drücken der Tasten vor (zurück, links, rechts) wird irgendwann die Befehlssequenz
delay(mydelay)
copro_stop ()
nicht mehr ausgeführt und der Nibo läuft immer weiter!!
Kennt jemand dieses Problem und hat evtl. eine Erklärung / Lösung?
Meiner Meinung nach ist die Motor Kontrolle nicht optimal gelöst.
Es müßte ein Busy-Flag geben, welches angibt wann die MotorRegelung abgeschlossen ist, um dann das Programm weiter abzuarbeiten.
flag = copro_setSpeed (vl, vr, delay) delay = 0 -> normal corpro_setSpeed
desgleichen
flag = copro_setTargetRel (tl, tr, v)
mfg hjjb49