Fragen eines Servo-Neulings zur passenden PWM

Gast #1095339
Hallo,

möchte gerne ein Servo (Modellbau, JR-kompatibel) mit Atmega32 ansteuern 
und hab jetzt auch schon allerlei Beiträge dazu gefunden und 
durchgestöbert.

Mir ist allerdings noch nicht ganz klar, wie ein entsprechendes 
PWM-Signal zur Servosteuerung aussehen muss.

Allgemein: benötigt wird ein PWM-Signal mit einer Pulsbreite von 20ms. 
Das Tastverhältnis bestimmt den Stellwinkel.
So weit, so gut...

Wie muss denn aber das Signal in der Realität beschaffen sein? Beginnt 
der Servo mit der Auswertung bei H oder L?
Wie muss das Tastverhältnis für Mittelstellung aussehen, Pulsbreite 50%, 
also 10ms H und 10ms L ?

Wäre super, wenn jemand ein paar Hinweise oder Tipps hätte.
Mein erstes Test-Prog hat auf jeden Fall bis jetzt nicht funktioniert, 
was wohl an einem falschen PWM-(Mis(t))verständnis liegt...
Gast
> Allgemein: benötigt wird ein PWM-Signal mit einer Pulsbreite von
> 20ms.

Du meinst die Periodendauer. Üblicherweise ist die 20ms. Aber wenn die 
z.B. nur 10ms lang ist, macht das auch nichts.

> Das Tastverhältnis bestimmt den Stellwinkel.

Nein, nicht das Tastverhältnis, sondern nur die Pulsdauer bestimmt ihn.

> Wie muss denn aber das Signal in der Realität beschaffen sein?
> Beginnt der Servo mit der Auswertung bei H oder L?

Er mißt die Impulsdauer, also die Dauer von der positiven zur negativen 
Flanke.

> Wie muss das Tastverhältnis für Mittelstellung aussehen, Pulsbreite
> 50%, also 10ms H und 10ms L ?

Nein. Die Pulsdauer für Mittelstellung liegt bei 1,5ms. Der Bereich für 
die Pulsdauer liegt grob bei 1 bis 2 Millisekunden.
Gast
Dann hab ich noch eine Frage:

gibt es eigentlich ein Spezial-Ic, mit dem man mehrere Servos 
gleichzeitig steuern kann und das man seinerseits bequem seriell per uC 
ansteuern kann, nach dem Motto "Servo1 auf Stellung 88 bitte und Servo 9 
auf Position 23"?

Das würde bei mehreren Servos Controllerkapazitäten sparen und auch 
Anschlüsse.
Gast
> gibt es eigentlich ein Spezial-Ic, mit dem man mehrere Servos
> gleichzeitig steuern kann und das man seinerseits bequem seriell per uC
> ansteuern kann, nach dem Motto "Servo1 auf Stellung 88 bitte und Servo 9
> auf Position 23"?

Das sollte mit einem AVR kein Problem sein. Das Beispiel bei Hannes
http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html
zeigt, wie man einfach Impulse für mehrere Servos erzeugen kann. Dazu 
das ganze ADC-Gerödel rauswerfen und die Positionen in einem SRAM-Array 
halten. Wenn man den AVR dann mit einem Baudratenquarz taktet, sollte es 
kein Problem sein, per UART empfangene Kommandos auszuwerten und die 
Positionen im SRAM zu aktualisieren. Da Timer1 zwei separate 
Compare-Einheiten hat, kann man ohne Weiteres zwei separate Servo-Ketten 
laufen lassen, das reicht für 16 bis 20 Servos. Mit einem Tiny2313 
sollten auf diese Art bis zu 14 Servos gleichzeitig ansteuerbar sein.

~

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.