Mehrere servos an ATMega8

Gast #95576
Lesenswert?
• ▲
▼
Also die Überschrift sagt schon alles aus... Ich möchte mehrere Servos
(so viele wie möglich) an einen Mega8 hängen und alle individuell
ansteuern.
hat jemand ein fertiges C - Programm (oder ausschnitte) dafür?
Ich habe Probleme, Zeitkritische Vorgänge (1, 1.5, 2 ms HIGH - Signal)
in C zu programmieren.
Danke!
Gast #95577
Lesenswert?
• ▲
▼
Wieviel Servos sind es denn?
Der Mega8 hat "nur" zwei PWM-Kanäle bzw. 3 Timer. Wo genau liegt dein
Problem, verstehst du nicht, wie eine PWM zu implementieren bzw. ein
Timer zu initialisieren ist?
Wie programmierst du? avrgcc, assembler, ...

Gruss, Alex
Gast #95578
Lesenswert?
• ▲
▼
Ich verwende GCC
Ich benötige mehr als 2 Ausgänge. In der 1. Ausbaustufe 8 Servos
(später 16) Also müsste ich alles mit Software schicken, ohne die PWM -
Ports zu verwenden.
Das Problem ist, das dafür auch niht genügend Timer vorhanden sind!
Gast #95579
Lesenswert?
• ▲
▼
Welche Auflösung brauchst du bei den Servos?
100 Schritte dürften reichen, oder?
Dazu nehme man einen Timer, der alle 10 µS einen Interrupt auslöst.
In der dazughörenden Interrupt Service Routine zählt man der Menge der
Servos entsprechend viele Variablen und eine von 2000 (20.000 µS)
herunter. Sobald diese Variable auf 0 heruntergezählt wurde, werden die
Servo-Variablen mit neuen Werten initialisiert, und sämtliche Ausgänge
eingeschaltet. Der zur Servo-Variable korrespondierende Ausgang wird
dann ausgeschaltet, sobald die Variable auf 0 heruntergezählt worden
ist.

Den ganzen Spaß muss man noch irgendwie initialisieren, aber so müsste
das funktionieren.
In der Hauptschleife werden dann die Initialwerte für die
Servo-Variablen bereitgestellt.

Aufwand:
1 Timer
2*n Byte-Variablen für die Servos
1 Int-Variable für die Periodendauer.

Gruß Rahul

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