Forum: Mikrocontroller und Digitale Elektronik Analogservo PWM Ansteuerung


von Matthias (Gast)


Lesenswert?

Hallo,
zurzeit möchte ich für ein Projekt Analogservos vom Type CS238MG 
ansteuern. Leider habe ich dazu keine Datenblätter gefunden, die auf die 
Ansteuerungsmöglichkeiten hinweisen. Standardmäßig erzeugt man ja ein 
PWM-Signal mit 20ms-Periodendauer und 1-2ms Pulsbreite.

In der Praxis funktieren die Servos auch bei Ansteuerung mit geringerer 
Periodendauer, wie ich ausprobiert habe. Nun habe ich jedoch im Internet 
gelesen, dass man Analogservos mit höheren Taktraten ruinieren kann. Ist 
das wirklich so und wenn ja warum?

Wie groß darf denn ungefähr die Abweichung von der 20ms-Periodendauer 
sein, damit meinen Analogservos nichts passiert?

Kann ich auch die Pulsbreite kleiner als 1ms (bzw. größer als 2ms) 
nehmen, solange der Servo die Position noch erreicht, ohne das mit der 
Zeit Schäden auftreten?

Für Antworten bin ich sehr dankbar!

von Hans J. (step_up_mosfet)


Lesenswert?

Die ganz einfachen analogen Servos brauchen eine gewisse Auszeit sonst 
machen sie Fehler.
Die Soll-Position muss auch erst mal angefahren werden, das dauert schon 
etwas.
Weshalb möchtest du die Stellgröße so schnell ändern?

Kaputt gehen sollten sie davon eigentlich nicht, es ist aber z.B. 
ungünstig wenn der Motor immer wieder nachregeln soll und sich ständig 
hin und her bewegt, diese kleinen Motoren erzeugen auch Hitze und wenn 
die nicht weg kann verschleißt der Motor sehr schnell.

von Falk B. (falk)


Lesenswert?

@ Matthias (Gast)

>Wie groß darf denn ungefähr die Abweichung von der 20ms-Periodendauer
>sein, damit meinen Analogservos nichts passiert?

Ich vermute mal, dass zwischen 10-50ms kaum was passiert.

>Kann ich auch die Pulsbreite kleiner als 1ms (bzw. größer als 2ms)
>nehmen,

Warum?

von Hans J. (step_up_mosfet)


Lesenswert?

Falk Brunner schrieb:
>>Kann ich auch die Pulsbreite kleiner als 1ms (bzw. größer als 2ms)
>>nehmen,

Bei den analogen Servos und meinen digitalen geht das jedenfalls, 
dadurch können sie sich nicht nur um 90° drehen sondern um ca. 180°, man 
muss aber aufpassen (vorher ausprobieren) dass sie nicht an die 
Begrenzung anschlagen und dann nie die Soll-Stellposition erreichen, 
dann versucht der Motor einen Wert zu erreichen der nicht erreichbar ist 
und geht irgendwann kaputt.

Bei einer Periode von 20ms bekommt man 8 Kanäle rein. 8*2ms = 16ms
Das ist dann eine Pausenzeit von 4ms die dafür ausreicht, ich lege aber 
nicht meine Hand ins Feuer dass das mit jedem Servo geht.

: Bearbeitet durch User
von Matthias (Gast)


Lesenswert?

Danke für eure zeitnahen Antworten!

Hans Jelt schrieb:
> Weshalb möchtest du die Stellgröße so schnell ändern?

Ich möchte, dass der Mikroprozessor die Servos "parallel" zum 
eigentlichen Programm ansteuert und dafür nutzte ich einen Timer im Fast 
PWM Mode oder im Phase Correct PWM Mode mit der interne Clock (1MHz). Da 
es nur festgelegte prescale Faktoren (1, 8, 64, 256, 1024) gibt, sind 
auch nur bestimmte Periodendauern erreichbar, u.a. 32,64 ms oder 16,38 
ms.

Wenn ich mir mit diesen (von 20ms verschiedenen) Periodendauern meine 
Servos auf Dauer schrotten würde, dann müsste ich wohl eine andere 
Ansteuerungsmethode wählen. Aber laut falk sollte es wohl doch kein 
Problem sein...

von Kein Name (Gast)


Lesenswert?

Keine Panik. Modellbauservos sind erstaunlich robust gebaut. Wenn du die 
falsch ansteuerst, summen und zittern diese Servos. Bevor die kaputt 
gehen, kannst du in aller Ruhe den Strom wieder abstellen.

von Hans J. (step_up_mosfet)


Lesenswert?

Aha ...

Mal ein andere Vorschlag.

Du könntest eine ISR eines Timers nutzen und die Zeit so einstellen dass 
sie entweder nach der entsprechenden Zeit von 1 bis 2ms wieder 
aufgerufen wird oder du rufst sie mehrfach auf.

> Aber laut falk sollte es wohl doch kein Problem sein...
Bei den meisten Servos kann man T auch extrem groß machen, das stört die 
angeblich nicht wirklich, aber zu klein ist scheinbar Mist.


Stell dir vor du setzt den Pin PA0 auf high, stellst deine ISR auf die 
entsprechende Zeit ein und wenn die Zeit abgelaufen ist setzt du PA0 
wieder auf Low.
Das kannst du nun mit so vielen Pins nacheinander machen wie an deinen 
AVR/PIC oder sonstwas ranpassen und somit viele Servos quasi 
gleichzeitig steuern.

So verbrauchst du nicht viel Rechenzeit und bis bei der Pin-Auswahl auch 
noch etwas flexibler.
Vielleicht ist sowas schon in der Codesammlung, aber das ist ja auch 
nicht schwer selber zu schreiben.

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
Noch kein Account? Hier anmelden.