Forum: Mikrocontroller und Digitale Elektronik ATmega8/STK500 Servo pfeift


von Attila (Gast)


Lesenswert?

Hallo!

Ich habe mittels TIMER2 und PWM (Phase correct mode) geschafft ein 
digital Servo (Hitec HS 5085MG) anzusteuern.

Allerdings pfeift dieses die ganze Zeit. Woran könnte das liegen? Ich 
habe ein anderes Servo angeschlossen was zwar nicht pfeift aber 
unrgelmässig "knistert" Hat jemand eine Idee?

Dank!

von Michael H. (michael_h45)


Lesenswert?

zeile 42 im code natürlich.

von Attila (Gast)


Angehängte Dateien:

Lesenswert?

Bitteschön anbei der code

von Michael H. (michael_h45)


Lesenswert?

oh VIELEN DANK!

unglaublich...

von Attila (Gast)


Lesenswert?

Hallo Michael!

Was ist denn falsch an der Sache jetzt?

von Rolf Magnus (Gast)


Lesenswert?

Attila schrieb:
> Ich habe mittels TIMER2 und PWM (Phase correct mode) geschafft ein
> digital Servo (Hitec HS 5085MG) anzusteuern.
>
> Allerdings pfeift dieses die ganze Zeit. Woran könnte das liegen?

Möglicherweise daran, daß es ein Digitalservo ist. Die machen das gerne, 
weil sie ihre Motor-Ansteuerung entsprechend hoch takten.

> Ich habe ein anderes Servo angeschlossen was zwar nicht pfeift aber
> unrgelmässig "knistert" Hat jemand eine Idee?

Welchen Prozessor-Takt hast du denn? Daraus ergibt sich, wie groß deine 
Puls- und Pausenzeiten sind. Üblich sind 1 bis 2 ms Puls und ca. 20 ms 
Pause.

In deinem  Code steht außerdem:
> // links 16=0x22 rechts 48=0x72

Tatsächlich ist es umgekeht: 22=0x16 und 72=0x48.

von Attila (Gast)


Lesenswert?

Hallo Rolf!

Du hast natürlich Recht! Ich hab die Zahlen vertauscht.

Der Takt ist 8 MHZ.

Auch auf die Gefahr hin mich als echter Anfänger zu outen: Das ist ja 
ein 8 bit timer. Somit hat man 255 Werte max. Wenn aber doch 1ms etwa 50 
"Einheiten" entspricht (72-22 zwische Servo links und Servo rechts) dann 
müsste doch 255 etwa 5ms lang sein? Daher bekommt mein Servo alle 5 ms 
einen Puls.

Ist das richtig? Und wenn ja: Ist das vielleicht zu schnell weil es ja 
etwa 20ms pro Zyklus sein soll?

Vielen Dank!

von Rolf Magnus (Gast)


Lesenswert?

Attila schrieb:

> Der Takt ist 8 MHZ.
>
> Auch auf die Gefahr hin mich als echter Anfänger zu outen: Das ist ja
> ein 8 bit timer. Somit hat man 255 Werte max. Wenn aber doch 1ms etwa 50
> "Einheiten" entspricht (72-22 zwische Servo links und Servo rechts) dann
> müsste doch 255 etwa 5ms lang sein? Daher bekommt mein Servo alle 5 ms
> einen Puls.

Warum rechnest du denn rückwärts? Du hast einen Takt von 8 Mhz und einen 
Prescaler von 256. Der Timer läuft nach 256 Timer-Takten über, also 8 
Mhz / (256 * 256) = 122 mal pro Sekunde, bzw ca. alle 8 ms. Deine 
gefundenen Grenzen von 22 und 72 entsprechend dann einer Pulsdauer von 
0,7 bis 2,3 ms, was schon ein relativ großer Bereich ist, wo aber 
erstmal nichts dagegen spricht.

> Ist das richtig? Und wenn ja: Ist das vielleicht zu schnell weil es ja
> etwa 20ms pro Zyklus sein soll?

Die Pausendauer ist normalerweise nicht so wichtig, wenn sie nicht 
gerade extrem klein oder extrem groß ist. 8 ms müßten an sich ok sein. 
Deine Beschreibung klang eigentlich, als hätte dein Impuls einen Jitter, 
aber da du den Hardware-Timer verwendest, kann das nicht sein. Ein 
anderer Grund könnte mangelnde Entstörung des Prozessors sein. Wenn der 
mit dem Servo an der selben Spannungsquelle hängt, kann der Motor vom 
Servo den Prozessor stören und Fehler/Resets auslösen, falls man nicht 
die nötigen Abblock-Kondensatoren verbaut hat oder den Reset-Pin nicht 
richtig beschaltet.

von Attila (Gast)


Lesenswert?

Hallo Rolf!

Vielen Dank für deine Antworten und Hilfe.

Ich hätte bevor ich das Thema hier eingestellt habe mal meine 
handelsübliche Fernsteuerung anschliessen sollen. Da pfeift das Servo 
nämlich auch. Kurzes googlen ergab: Es ist normal!

Nun ja vielleicht hilft es einem anderen der das gleiche "Problem" hat 
beim durchsuchen des Forums.

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.