www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Servo fährt an Anschlag (8051)


Autor: kuni (Gast)
Datum:

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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wilder Rateversuch: Puls-Pause verwechselt (High-Low)?

Autor: kuni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt alles mit Oszi nachgemessen und trotzdem noch anderstherum 
probiert ... hilft nichts

Autor: Kuni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß niemand hilfe? :-o

Autor: dumdidumm (Gast)
Datum:

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

Autor: Kuni (Gast)
Datum:

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

Autor: dumdidumm (Gast)
Datum:

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

Autor: ulli (Gast)
Datum:

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

Autor: RainerK (Gast)
Datum:

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

Autor: U.R. Schmitt (Gast)
Datum:

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

Autor: R. W. (quakeman)
Datum:

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

Autor: Kuni (Gast)
Datum:
Angehängte Dateien:

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

Autor: U.R. Schmitt (Gast)
Datum:

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

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

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

Autor: Jobst M. (jobstens-de)
Datum:

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

Autor: ulli (Gast)
Datum:

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

Autor: Jobst M. (jobstens-de)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du denn die PWM programmiert?

Laß das mal mit der PWM und schreibe ein ganz einfaches Programm:
  for(;;){
    pin = 1;
    warte_1_5ms();
    pin = 0;
    warte_20ms();
  }

Die Wartefunktionen mußt Du noch schreiben.


Peter

Autor: Bernhard Spitzer (b_spitzer)
Datum:

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

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.