Ja das wusste ich soweit muss mal einen anderen Ausgang probieren. Also du meinst denn ich sie mit einer höheren Frequenz ansteuer dann müsste es gehen? Mal seh'n aber die Servos sind doch richtig oder?
Ja das wusste ich soweit muss mal einen anderen Ausgang probieren. Also du meinst denn ich sie mit einer höheren Frequenz ansteuer dann müsste es gehen? Mal seh'n aber die Servos sind doch richtig oder?
Ich steuere sie halt über das m32 modul und programmers notepad:
void servo1(int pos)//rechter Servo
{
PORTC |= IO_PC4;
sleep(pos);
PORTC &= ~IO_PC4;
sleep(200-pos);
}
void servo2(int pos)//linker Servo
{
PORTC |= IO_PC6;
sleep(pos);
PORTC &= ~IO_PC6;
sleep(200-pos);
}
und aufrufen in main:
for(x=3;x<25;x++)
{
servo1(x);
servo2(x);
setCursorPosLCD(1,5);
writeIntegerLCD(x, DEC);
mSleep(350);
clearLCD();
}
so hat es vorher ja auch immer funktioniert.
Für die normalen Servos war ja sleep(200-pos) für die ~20ms Pause (18..19ms) zwischen den Impulsen gedacht.
Deine digitalen Servos schaffen auch (100-pos), (50-pos) und (10-pos) und sollten keine längeren Pausen haben.
Das ist also vielleicht das erste Hauptproblem (wenn der elektrische Anschluss stimmt!):
Deine Pause zwischen den Servo-Impulse wird durch ...
setCursorPosLCD(1,5);
writeIntegerLCD(x, DEC);
mSleep(350);
clearLCD();
... extrem verlängert,- möglicherweise kommen die digitalen Servos damit nicht klar.
Vorschläge:
1. Ich würde mal den ganzen Anzeigekram probeweise rausnehmen.
2. Auch dann werden noch die 2 Servofunktionen nacheinander abgearbeitet, so dass sich der Impuls + Pause des einen Servos zu der Pause des jeweils anderen Servos dazu addiert (2. Hauptproblem). Also haben deine Servos jetzt (ohne Anzeigezeugs) noch eine Pause nach jedem Impuls von [18-19ms eigene Pause + Impuls des anderen Servos + dessen Pause (18-19ms)]. Das müßtest du so umschreiben, dass JEDES Servo MINDESTENS alle 20ms (besser alle 5-10ms) einen eigenen Impuls bekommt.
3. In der x-Schleife gibt es viel zu wenig Zeit für die Positionsänderung: Gib den Servos pro Position mindestens 5-10 Impulse in der jeweiligen Stellung.
Gruß
Dirk
Lesezeichen