Servo Ansteuerung mit ATMega128

Gast #168222
Lesenswert?

Hallo Zusammen

Ich vesuche schon seit ca. 3 Wochen einen Servo anzusteuern direkt über
den OC1 Ausgang. Ich verwende dazu den Phase+Frequency correct Modus und
erzeuge damit Pulse zw. 0.8 bis 1.9ms. Solange ich den Servo nicht
anschliesse funktioniert auch alles (mit KO gemessen). Sobald ich den
Servo anschliesse, resettet sich der Prozessor ständig. Meine
Stromversorgung sollte ausreichend sein (DC/DC Converter max.2A
Steckernetzteil max. 2A), ich habe auch schon eine elko(10u)+einen
weiteres C (100n) direkt beim Anschluss des Servos von + nach -
geschaltet um allfälige Störungen und Spitzenströme abzufangen. Hat
jemand eine Idee was ich falsch mache?
Gast #168223
Lesenswert?

Ich habe in einer ähnlichen Schaltung (allerdings ohne uC) auch sehr
starke Spannungsschwankungen gemessen, sobald der Servo läuft. Habe sie
ebenfalls abzufangen versucht, aber vergeblich. Die Spanung schwankt
dauernd um +- 1 V.
Gast #168228
Lesenswert?

Der Servo verursachte bei mir einfach starke Schwankungen in einer
A/D-Messung (via Parallele Schnittstelle und TLC547 A/D-Wandler). Für
meine Anwendung störte das nicht, da ich dann einfach den Mittelwert
über einige Messungen genommen habe, klappte hervorragend.

Aber ja, wenn wir gleich beim Thema sind: Wie einfach bzw. schwer ist
es eigentlich, einen Servo per Microcontroller (In meinem Fall wird es
schon bald ein ATmega8 sein freu) anzusteuern?

Gruss

Michael
Gast #168229
Lesenswert?

Ich kenne den ATMega8 überhaupt nicht aber vielleicht hat er ja auch
einen sogennanten phase+frequency correct mode im Timer eingebaut. Bei
diesem Modus zählt der Timer von 0 auf max Wert(welcher vorgegeben
werden kann) und danach vom max. Wert auf 0 usw. Mit dem max Wert kann
man die Periodendauer angeben (so ca. 20ms für einen Servo) und mit dem
compare match Wert kannst Du die Pulsbreite bestimmen, denn wenn der
Timer von 0 auf max zählt und den compare match Wert erreicht wird z.B.
OC1 gesetzt und wenn der Timer von max auf 0 zählt und und den compare
match Wert erreicht wird OC1 gelöscht usw. In diesem Modus kannst Du es
relativ einfach programmieren. Ich habe dir meinen C Code beigelegt,
kannst ja mal reinschauen (ist aber nicht so schön programmiert).

Gruss Jens.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren