Hallo, wir versuchen gerade einen Servo (Hitec HS-422) an einem Microcontrollerboard (Atmel AT89C5131A) zu betreiben. Programmiert haben wir ein herkömmleches PWM Signal, mit Pulsweiten von 1-2ms und 20ms Pause wie üblich. Diese Werte haben wir durch Messung an einem Oszi auch bestätigt. Die Signalleitung vom Servo ist an einen Port de MC mit Pullup angeschlossen (5V) die Versorgungsspannung kommt von einem Batterieblock (6V) Massen sind verbunden! Problem ist nun, dass der Servo immer an den rechten Anschlag fährt und versucht noch weiterzukommen. Geschwindigkeit variiert willkürlich! Danke für eure Hilfe
Wie gesagt alles mit Oszi nachgemessen und trotzdem noch anderstherum probiert ... hilft nichts
ich hatte schon div. Probleme, wenn das Steuersignal nicht den selben Pegel hatte, wie die Vcc des Servos, also setz mal bitte auch selbige auf 5V testweise, desweiteren können deine Pulse evtl zu langsam sein, AFAIK sind 20ms die Periodendauer und die Pulslänge geht davon ab, sollte aber nicht den Unterschied machen... Servos machen ganz viel komischen Kram, wenn die Spannung unter Last wegbricht, auch bitte das überprüfen...
Die SPannungen haben wir bereits auf ein niveau gesetzt, ein Problem dass ich mir noch vorstellen könnte ist, dass der Spannungsverlauf nach ende eines High-Pegels stark abfällt und dann wieder bis zum nächsten High-Pegel mehr oder weniger stark ansteigt. Daher haben wir auch eine externe transistorschaltung gebastelt, der spannungsverlauf war danach zwar rechteckiger, der servo hat danach aber noch weniger reagiert das mit dem spannung wegbrechen halt ich für nicht wirklich relevant da wir bereits alles über ein computernetzteil haben laufen lassen, das ja eine (ziemlich) konstante spannung liefert, könnten wir allerdings mal testen
ähhh.... Computernetzteil....? Ich weiß nicht wie klein/groß euer Servo ist, aber ne Batterie mit 7805 tut's meist für's erste auch, denn Computernetzteile brauchen Mindeslasten, je nachdem, wo ihr es dran habt, oder ist das eins dieser "DIY: ATX zu Labornetzteil" Ergebnisse? Aber wieso braucht ihr ne Transistorschaltung, um die Pegel sauber zu bekommen? DA stimmt doch irgendwas nicht. Wenn ich ne PWM am µC ansehe ist sie zeimlich gut, wenn ich das Ergebnis hinter nem Transistor anschaue, ist es schlechter!
Kuni schrieb: > das mit dem spannung wegbrechen halt ich für nicht wirklich relevant da > wir bereits alles über ein computernetzteil haben laufen lassen, das ja > eine (ziemlich) konstante spannung liefert, könnten wir allerdings mal > testen Im ersten Post schreibst Du etwas von 6V-Batterie !? Mein Tip: Nimm für µC und Servo die selbe Versorgungsspannung und greife das Signal direkt am Pin ab. Lass Transistoren, Batterien und solche Sachen weg. Auf diese Art haben es vor Dir schon geschätzte 100000 (hunderttausend) andere auch geschafft, einen Servo an zu steuern. Im Zweifelsfall benutz eine der 100 Softwaren, welche zu dem Thema im WWW zu finden sind. Wenn das dann funktioniert, dann kannst Du wieder den Akku und die Batterie und was weiss ich dazu basteln. MfG ulli
Habt Ihr das Servo schon mal an einer funktionierenden Schaltung getestet? Wenn das Teil nicht neu ist, ist es ja vielleicht geschrottet :-( Es grüßt RainerK
Ein (oder mehrere) Oszillogramme würden mehr als 1000 Worte sagen. Wie sieht euer Signal am Servo aus? Wie die Servobetriebsspannung? Alles andere ist Gerate.
Genau, zeig mal die Oszillogramme und am besten auch euren Schaltplan. Ich hatte auch mal mit Servos herumgespielt und dabei direkt den PWM-Pin des Controllers mit dem Eingang des Servos verbunden (ohne Transistor) und es funktionierte super. Also wenn eure PWM Spannung nicht gut aussieht oder sich verändert, sobald ihr den Servo anklemmt ist da schon etwas faul. Ciao, Rainer
Das mit den Oszillogrammen hol ich noch nach, also wir haben den servo an einer originalfernsteuerung bzw. am originalempfänger getestet. ging. dann haben wir die originalschlatung durchgemessen, uns die werte notiert und unser programm dementsprechend geschrieben dann haben wir unsere schaltung mit dem programm getestet und es funktionierte nicht... dann mit Oszi nachgemessen stimmte alles so. das ist stand der dinge die spannungsversorgung unseres versuchsboards kommt von USB also 5V - 500mA. dann haben wir zunächst versucht alles über diese 5 V laufen zu lassen also servo rote leitung an +5V (direkt durchgeschaltet von USB, läuft also NICHT über den µC) , schwarze leitung an 0V und gelbe leitung an Port 1, der entsprechend Spannungsdifferenzen von 5V liefern sollte. Funktioniert nicht. Unsere vermutung: USB liefert nicht genug Saft obwohl bei gleichzeitigem messen keine schwankungen zu erkennen waren und auch sonst nichts passiert ist. unsere Reaktion: vom servo die rote leitung an rote leitung des Servo-Akku (Speziell für servoanwendungen im Modellbaubereich) schwarze leitung des Akkus, µC 0V und schwarze leitung vom servo zusammengelegt (gemeinsame Massen und so) und gelbe Servoleitung wieder auf Port 1 des Servos funktioniert auch nicht. Anbei eine Skizze der Osziwerte. allerdings ist zu beachten, dass diese werte über ein soundkartenoszi gemessen sind, sinvolles ablesen der spannung ist also nur bedingt möglich deswegen ist es eben auch nur eine skizze unserer messungen. Die zeiten sind der originalfernsteuerung entnommen, mit 20ms pause haben wirs auch schon probiert.
Kuni schrieb: > Unsere vermutung: USB liefert nicht genug Saft obwohl bei gleichzeitigem > messen keine schwankungen zu erkennen waren und auch sonst nichts > passiert ist. Na dann zeig ein Oszibild der Spannungsversorgung AM servo. Was ist das für eine seltsame Rampe, und warum ist das Signal bei LOW negativ? Oder liegt das an der Soundkarte (die kann wahrscheinlich nur AC). Die Rampe ist auf jeden Fall kompletter Blödsinn. Ein richtiges Oszi ist bei solchen Basteleien eigentlich Grundausstattung.
Kuni schrieb: > Anbei eine Skizze der Osziwerte. OK. Wenn man den Spannungen nicht trauen kann und dieser 'Unterschwinger' unter Umständen nicht real ist, dann sieht das nicht schlecht aus. > Die zeiten sind der originalfernsteuerung entnommen, mit 20ms pause > haben wirs auch schon probiert. Vergiss die 20ms. Die sind das Unwichtigste am ganzen. Die ganze Information steckt im positiven Puls, dessen Breite ist wichtig. Entweder hat das Servo schon einen weg, oder eure Zeiten stimmen nicht. Da Servos aber normalerweise sehr robust sind, tippe ich eher auf die Zeiten. Selbst wenn euer Oszi Bild sagt, dass sie in Ordnung wären.
Also ich hatte schon Probleme, daß das Servo Störspannungen in die Versorgung des uC gebracht hat. Daher plädiere ich für zwei getrennte, gleich große Spannungsversorgungen - natürlich mit gemeinsamer Masse. Wenn Ihr eine mit dem Servo funktionierende Fernsteuerung habt, wieso messt Ihr dann nicht einfach mal nach, was dort heraus kommt? Pulse können auch bis 4ms gehen. Und: Ich würde auch mal die Polarität umdrehen, denn solche Servos gibt es auch! Gruß Jobst
Jobst M. schrieb: > Und: Ich würde auch mal die Polarität umdrehen, denn solche Servos gibt > es auch! Bei verpolter Versorgung würde das Servo sich garnicht rühren. Wenn ich es richtig verstanden habe, dann dreht das Servo immer in eine Richtung und möchte eigentlich auch noch weiter drehen. Das sieht SEHR nach falscher Impulslänge aus. Wenn das Servo gar keinen Impuls bekommt, dann bleibt es einfach stehen wo es gerade steht (und zittert vielleicht noch ein bisschen). Jetzt bring doch einfach mal ein vernünftiges Oszi-Bild her. Und zwar ein Bild, auf welchem auch die Beschriftung der Zeitachse zu sehen ist. Und ein Schaltplan hilft bei so etwas auch enorm ! Auf dem Bild von der Soundkarte sind die wichtigsten Daten (nämlich die Zeiten) nicht zu sehen und die Spannungen können auch niemals stimmen (wo soll denn da eine negative Spannung her kommen ?) - kurz gesagt: Dieses Bild ist garnichts wert. MfG Ulli
ulli schrieb: > Jobst M. schrieb: >> Und: Ich würde auch mal die Polarität umdrehen, denn solche Servos gibt >> es auch! > > Bei verpolter Versorgung würde das Servo sich garnicht rühren. Okay - ich meinte auch nicht, das er die Versorgung verpolen soll (so dusselig kann man ja schon fast gar nicht denken), sondern den Impuls invertieren. Es gibt Servos mit positivem und welche mit negativem Puls ... Allerdings habe ich dieses Textstück bei meinem ersten Beitrag irgendwie nicht mitbekommen: Kuni schrieb: > Die zeiten sind der originalfernsteuerung entnommen, mit 20ms pause > haben wirs auch schon probiert. Damit hat sich das dann auch schon erledigt. Gruß Jobst
Wie hast Du denn die PWM programmiert? Laß das mal mit der PWM und schreibe ein ganz einfaches Programm:
1 | for(;;){ |
2 | pin = 1; |
3 | warte_1_5ms(); |
4 | pin = 0; |
5 | warte_20ms(); |
6 | }
|
Die Wartefunktionen mußt Du noch schreiben. Peter
Scheint ja auch extrem geheimer Quellcode zu sein, dass er ihn nie gepostet hat... Die Testversion von Peter muss auf alle Fälle funktionieren, sonst ist am System was faul. Ich betreibe am AT89C5131 bei Versorgung über den USB-Port 8 Servos im Leerlauf gleichzeitig am Port 2. Nur unter Last sollte die Spannungsversorgung mehr Strom können. Eine Gruppe meiner Techniker hat mal einen 6-beinigen Laufroboter mit 18 Servos gebaut. Die haben im Peak (Mikro-Digitalservos mit Metallgetriebe) über 6A gezogen. unn tschuess B.
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.