Forum: Mikrocontroller und Digitale Elektronik Servo reagiert komisch...


von Matthias Pues (Gast)


Angehängte Dateien:

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

von Peter Zimmer (Gast)


Lesenswert?

Hallo,
ich kann nur soviel sagen das dieses Problem auch bei RC emfänger
auftritt. Also vieleicht ligt es garnicht´an deinen Prog.?
Gruß
Peter

von crazy horse (Gast)


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.

von Matthias Pues (Gast)


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.

von Manfred Glahe (Gast)


Lesenswert?

@Matthias

" nur das datenkabel mit portB verbunden." die GND Verbindung ist
doch aber auch darin enthalten? Oder liegt da das Problem (wenn alles
andre nicht sein kann)?

MfG  Manfred Glahe

von Matthias Pues (Gast)


Lesenswert?

Hmm, wie meinst du das? Servos haben doch 3 kabel, normalerweise
schwarz, rot, gelb. ich denke also, daß das datenkabel(gelb) nicht auch
die groundverbindung des servos ist, sondern wie überall das
schwarze...

von crazy horse (Gast)


Lesenswert?

Manfred meint, ob du auch Masse Servo und Masse MC verbunden hast, da es
natürlich nur mit der Datenleitung nicht funktioniert...

von Matthias Pues (Gast)


Lesenswert?

wie schon gesagt, ich hab beide varianten ausprobiert, servo mit
batterie und mit der gleichen stromquelle, wie der mc. es gibt aber
keinen unterschied festzustellen.

von Manfred Glahe (Gast)


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

von crazy horse (Gast)


Lesenswert?

nö, Periodendauer ist unkritisch, funktioniert sowohl bei 5 als auch bei
20ms.
Ich habe schon mehrfach Servos mit AVR angesteuert, ist eigentlich
recht easy, wie schon gesagt, allenfalls Probleme, die mit der
Stromversorgung zusammenhingen.
Vielleicht ist einfach das Servo defekt?

von Matthias Pues (Gast)


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.

von thkaiser (Gast)


Lesenswert?

Schick doch mal Deinen Schaltplan durch, vielleicht wirds dann klar.

von Max (Gast)


Lesenswert?

Versuch mal einen sauberen Reset wenn er wieder rumzappelt.
Und nicht mit C's sparen.

Max

von Max (Gast)


Lesenswert?

Jetzt les ichs erst!
Du gibst an von 0,5 bis 2ms pos. Impuls.
Standard ist eine Periodendauer von ~20ms (weniger oder Mehr ist auch
egal) und die Impulse von 1-2ms von einem zum anderen Ende.
Bei 0,5ms wird er sich in die unterste Ecke drücken und wie ein Irrer
knattern.
Ist es das vielleicht?
Max

von Bene (Gast)


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

von Rahul (Gast)


Lesenswert?

>wäre für jede Hilfe dankebar

und unsereins für Programm-Code

von bene (Gast)


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

von Karl H. (kbuchegg)


Lesenswert?

> schon mit batterie hab laufen lassen, nur das datenkabel
> mit portB verbunden.

Ich will darauf nochmal rumreiten (meistens sind es
die einfachen Dinge).

Du musst nicht nur die Signalleitung verbinden, sondern
auch die Masse (das schwarze Kabel am Servo) mit der Masse
des µC verbinden. Sonst haben beide nicht das gleiche
Bezugspotential!

von Rolf Magnus (Gast)


Lesenswert?

@Matthias Pues:

Bist du denn auch sicher, daß dein AVR wirklich mit 4MHz läuft?

von Torsten R. (tom365)


Lesenswert?

Meine Erfahrung war das der Servomotor beim Auslaufen eine Eigenspannung 
auf der Plusleitung induziert und wenn nichts anderes an einen 78S05 
Regler als das Servo hängt kann diese ein paar Volt über normal(5v) 
liegen.
Habe der 5V Leitung eine kleine Z-Diode (6.2V) spendiert um das zu 
unterdrücken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.