Servo reagiert komisch...

Gast #57397
Lesenswert?

Hi,
ich hab ein schmalspur Programm für eine servoansteuerung mit hilfe des
delayloops zusammengesetzt. nun, ich hab auch schonmal einen
servotester auf basis eines ne555 gelötet, der die signallänge durch
einen angeschlossenen poti regelte, daher weiß ich eigentlich, wie es
funktioniert. aber als ich das programm, auch mit verschiedenen zeiten
fürs high (0,5ms/2ms usw) und fürs low (von 5ms bis 20ms), ruckerte der
servo langsam immer in der gleiche ecke (die wo eigentlich das High am
kürzesten ist) und verblieb dort zitternd ohne viel kraft stehen. das
zittern ist auch nicht das zittern, was auftritt, wenn der servo am
RCempfänger hängt, aber kein signal bekommt, sondern nur minimale
ausschläge, aber aus der mechanit im innern gibts laute geräusche. ich
dachte schon so ein scheiß, was machst du falsch, aber als ich dann
einen 2. servo angeschlossen hatte, mit dem zunächst das gleiche
passierte, und ich das datenkabel des servo kurz rauszog und wieder
anschloss, stellte er sich normal in die gewünschte position.
also: wenn der servo von dem programmieren den avrs angeschlossen ist
gehts nicht, wenn ich ihn schnell reinstecke, wenn der avr schon
"sendet" gehts , aber wenn ich das signalkabel langsam reinstecke
(der servo ist übern steckbrett verbunden) ruckelt er auch.
warum ist das so?
Tschö,
Matthias
Angehängte Dateien:
Gast #57399
Lesenswert?

Probleme bei MC<->Servo kommen meist über die Stromversorgung. Der Servo
zieht ordentlich Strom, das kann den MC durchaus zum reset bringen, und
auch an den reset-Eingang des MC denken, der sollte über einen
Widerstand mit Vcc verbunden werden, ich nehme meist 4k7.
Versuch mal folgendes: Servo aus Akku oder Netzteil betreiben, MC aus
einer anderen Versorgung. Auf der Masseverbindung darf nicht  der
Servomotorstrom fliessen. Also, von der einen Seite Versorgung zum MC,
von dort 2 Leitungen zum Servo (Masse und Signal), die Versorgung des
Servos direkt an den Servo.

Programm sieht in Ordnung aus, habe natürlich nicht die Zyklen gezählt
Und noch was: bist du dir sicher, das dein Servo mit positivem Impuls
arbeitet? Früher zumindest gab es auch welche mit negativem Impuls
(Graupner). Keine Ahnung, wie das heute ist, meine Modellbauzeit ist
leider zu Ende.
Gast #57400
Lesenswert?

Wenn du mit positivem impuls meinst: ___---_______---_______---___

und mit negativ impuls:-----___-------__-------__-----__
, dann arbeitet er mit einem positiv impuls. es ligt auch nicht an der
stromversorgung, da ich den servo (an dem liegts auch nicht, da ich
noch einen anderen, andere firma, ausprobiert hab) schon mit batterie
hab laufen lassen, nur das datenkabel mit portB verbunden.
Gast #57405
Lesenswert?

@Matthias

Ich bin kein Modellbauer und kenne Servos daher nicht. Aus der
bisherigen Beschreibung lese ich herraus das es sich um einen PWM
Anschluß handelt. Wird das PWM Muster ausgegeben (wozu dann 3
Kabel?)oder sitzt da ein intelligenter Empfänger drin (Datenkabel?)?
Falls das PWM Muster direkt ausgegeben wird ist nicht nur das
Tastverhältnis sondern auch die Periodendauer wichtig. Wenn alles
richtig verbunden ist würde ich annehmen, daß die Periodendauer des
Signales völlig daneben liegt.

MfG  Manfred Glahe
Gast #57407
Lesenswert?

Bei servos ist die periodendsuer total unwichtig, ob das signal alls
50ms kommt, dann wirds nur langsam ruckelig, und er hat keine kraft
mehr, oder alls 5ms ist eigentlich egal. normal sind 20ms. das ist auch
bei der schaltung mit einem ne555 so. man stellt die periodendauer
ubern daumen gepeilt ein, und dann mit dem poti nur noch das verhältnis
von high zu low. die low zeit ist fast völlig egal, nur die hight zeit
ist entscheidend, sie trägt die info.und ja, so etwas wie ein
"intelligenten Empfänger" ist schon drin, der servo überprüft standig
über einen poti, in welcher lage der arm sich gerade befindet, wird er
durch außeneinwirkung verstellt, arbeitet der servo erst, und versucht
in die vorgegebene position zu gelangen.
deswegen versteh ich auch nicht, warum der so komisch rumzappelt.
Gast #57411
Lesenswert?

Ich habe genau das gleiche Problem!
hab einen ATMega128 mit 16Mhz
hab den Code mit C programmiert und der Servo macht genau dass wie
Matthias beschrieben hat.

Das komische ist, dass wenn ich den Servo an einem modellbau empfänger
hänge funktioniert er.

Wenn ich einen anderen Servo verwende der im modellbau Auto
funktioniert funktioniert der auch mit dem MC. komisch

wäre für jede Hilfe dankebar
Bene
Gast #57413
Lesenswert?

Hier ein Codausschnitt

//Globale Variablendefinition
int PWM_servo = 0;
int PWM_grenze_servo = 15;
int PWM_zyklus=200;

//Timer Overflow der alle 100us aufgerufen wird
SIGNAL(SIG_OVERFLOW2)
{
      TCNT2 = 56; //auf 100µs einstellen

if(PWM_servo < PWM_grenze_servo)
{
        PORTF |= 0x80;
}
else
{
  PORTF &= ~0x80;
}
++PWM_servo;
PWM_servo = PWM_servo % PWM_zyklus;
}

Der Timer Overflow ist auf 100us eingestellt weil ich ihn für
verschiedene andere sachen so brauche

und dann halt noch verschiedenes im main loop

am Bit 7 von PORTF hängt mein Servo drann
und versorgt wird er von einer extra Batteriequelle

mfg
bene

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren