mikrocontroller.net

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


Autor: Matthias Pues (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Zimmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Pues (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Pues (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: crazy horse (Gast)
Datum:

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

Autor: Matthias Pues (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Matthias Pues (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schick doch mal Deinen Schaltplan durch, vielleicht wirds dann klar.

Autor: Max (Gast)
Datum:

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

Max

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wäre für jede Hilfe dankebar

und unsereins für Programm-Code

Autor: bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias Pues:

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

Autor: Torsten R. (tom365)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.