Hallo,
Ich habe mir 2 neue Servos (Modelcraft vsd 5e hs) geholt und sie angebaut.
hatte vorher auch 2 dran die aber kaputt gegangen sind. nun reagieren sie nicht einmal obwohl die alten so funktioniert haben. woran kann es liegen?
Danke schonmal
Hallo,
Ich habe mir 2 neue Servos (Modelcraft vsd 5e hs) geholt und sie angebaut.
hatte vorher auch 2 dran die aber kaputt gegangen sind. nun reagieren sie nicht einmal obwohl die alten so funktioniert haben. woran kann es liegen?
Danke schonmal
Das sind DIGITALE Servos. Wahrscheinlich hattest du vorher "normale" analoge Servos.
Gruß
Dirk
das voher waren auch digitale Servos wie diese. sie müssen doch digital sein um sie per I/O (zb. PC6) anzusteuern?
also eingebaut sind sie richtig wenn ich mit dem finger auf den kontakten rumstreiche reagieren diese auch. weis einfach nicht woran es liegen kann.
Die normalen Servos werden alle 20ms mit einem Impuls von 1..2ms angesteuert.
Die "digitalen" Servos müßten eigentlich so auch funktionieren, arbeiten aber auch mit Impulsen alle 3..4ms (bis sogar 0,4ms).
Meist verbrauchen die digitalen Servos mehr Strom als die normalen.
Bist du sicher, dass du die Signalleitung richtig an den µC-Pin gelegt hast (mögliche andere Steckerbelegung als bei deinen alten Servos)?
Gruß
Dirk
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
Hast Du mal im RNWissen nachgesehen (klick mal hier)? Da gibts etliche Ratschläge, die unbedingt befolgt werden müssen, damit Servos sauber laufen.... 2 neue Servos (Modelcraft vsd 5e hs) geholt und sie angebaut ... nun reagieren sie nicht ...
Ciao sagt der JoeamBerg
mit der spannung habe ich kein problem denn es bricht nichts zusammen und das programm läuft rauf und runter ohne eine reaktion. habe einen 10000µF Elko direkt vor den Servos ausserdem habe ich auch einige elkos auf dem m32 und der hauptplatine nachgerüstet. das sollte wirklich nicht das problem sein.
zu oberallgeier: ich habe schon mehrere Servos vorher dran gehabt aber nur diese neuen machen probleme..
leider habe ich dank der feiertage es nicht geschafft einen anderen I/O port auszuprobieren. fällt euch sonst noch etwas ein?
gruß
Lesezeichen