Hallo IgelIgel,
so, ich habe die Anschlagswerte auf die Norm (1ms..2ms Impuls) gesetzt:
#define LEFT_TOUCH 1000 // Left servo touch (~1.0ms)
#define RIGHT_TOUCH 1000 // Right servo touch (~2.0ms)
... und die task auf die Schnelle so verändert, dass sich das Servo ganz langsam auf seine 3 Hauptpositionen (Links/Mitte/Rechts) bewegen kann:
Ergebnis:Code:void task_SERVO(void) {static uint8_t pos; // ----------------------------------------------------------------------- // Your test code for positioning the servo here: if (getStopwatch1() > 5000) { // Change position every ~5s if (pos == 0) { while (position > 1) { position -= 2; setSERVO(position); setCursorPosLCD(0, 0); writeStringLCD_P("Servopos.: "); writeIntegerLCD(position, DEC); writeStringLCD_P(" "); mSleep(10); } } // Position of servo if (pos == 1) { while (position < MIDDLE_POSITION) { position += 2; setSERVO(position); setCursorPosLCD(0, 0); writeStringLCD_P("Servopos.: "); writeIntegerLCD(position, DEC); writeStringLCD_P(" "); mSleep(10); } } if (pos == 2) { while (position < RIGHT_TOUCH) { position += 2; setSERVO(position); setCursorPosLCD(0, 0); writeStringLCD_P("Servopos.: "); writeIntegerLCD(position, DEC); writeStringLCD_P(" "); mSleep(10); } } if (pos == 3) { while (position > MIDDLE_POSITION) { position -= 2; setSERVO(position); setCursorPosLCD(0, 0); writeStringLCD_P("Servopos.: "); writeIntegerLCD(position, DEC); writeStringLCD_P(" "); mSleep(10); } } pos++; if (pos > 3) {pos = 0;} setStopwatch1(0); } // ----------------------------------------------------------------------- }
Das Servo bewegt sich ganz ruhig von links nach rechts und umgekehrt. Laut Oszi liegt der Impuls zwischen 1 und 2 ms, also ok.
Wie ist das bei dir? Reagiert das Servo irgendwie merkwürdig?
Gruß Dirk







Zitieren

Lesezeichen