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
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
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.