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
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
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.
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.
@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
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...
Manfred meint, ob du auch Masse Servo und Masse MC verbunden hast, da es natürlich nur mit der Datenleitung nicht funktioniert...
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.
@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
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?
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.
Versuch mal einen sauberen Reset wenn er wieder rumzappelt. Und nicht mit C's sparen. Max
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
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
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
> 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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.