Forum: Mikrocontroller und Digitale Elektronik AVR für Servo Input und Output


von Atrigos (Gast)


Lesenswert?

Hi!
Ich stehe vor einem kleinem Modellbau-Projekt. An einen ARM Cortex M3 
(mbed), der Fluglagen und vieles mehr berechnet, soll ein AVR 
vorgelagert werden, der sich um die Servo-Signal Ein- und Ausgabe 
kümmert.
Problem ist nämlich das Timing. Wenn der ARM noch Sensoren ausliest, 
kann er gleichzeitig schlecht nebenbei noch auf Empfängerimpulse warten 
und Servodaten ausgeben.

Der AVR soll mit UART an den ARM angeschlossen werden.
Einlesen sollte mit Port Change Interrupt gehen.
Ausgabe mit Hardware-PWM, um nicht das Timing durch Kommunikation oder 
anderes zu verfälschen.

Der AVR liest also ein, gibt auf Befehl die aktuellen Werte weiter, 
bekommt Stellwerte und gibt entsprechend wieder aus. Das ganze soll ein 
Modul werden, dass ich auch bei anderen Projekten benutzen kann.

Weitere Anforderungen sind:
- 3.3V Spannungsversorgung
- Noch lötbar. TQFP ist noch möglich.
- So zwischen 20-30 Pins, mehr wird fast zu groß.
- Hardware-PWM für 8 Pins, Auflösung ca. 7 Bit.

Welcher AVR kommt hier in Frage?

von Karl H. (kbuchegg)


Lesenswert?

Atrigos schrieb:

> - Hardware-PWM für 8 Pins, Auflösung ca. 7 Bit.

Eine HW-PWM reicht.

> Welcher AVR kommt hier in Frage?

so ziemlich jeder, der die benötigte Anzahl an Pins hat.

von Atrigos (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Eine HW-PWM reicht.

Ich dachte, die HW-PWM sind an ganz bestimmte Pins gebunden. Bei den 
gänigegen kleineren 8-Bit sind das doch meist nur 2-4 Pins.
Oder irre ich mich etwa?

von Karl H. (kbuchegg)


Lesenswert?

Atrigos schrieb:
> Karl Heinz Buchegger schrieb:
>> Eine HW-PWM reicht.
>
> Ich dachte, die HW-PWM sind an ganz bestimmte Pins gebunden. Bei den
> gänigegen kleineren 8-Bit sind das doch meist nur 2-4 Pins.
> Oder irre ich mich etwa?

Man kann ein Dutzend Servosignale problemlos mit 1 Timer erzeugen. Dazu 
braucht man noch nicht einmal HW-PWM (so gesehen hab ich eine falsche 
Angabe gemacht). Per Software mit einem Compare-Match im Timer ist das 
für den AVR ein Kinderspiel.

Modellbauservo Ansteuerung

von Stefan (Gast)


Lesenswert?

Modellbau Servos erwarte Impulse mit 1-2ms Dauer alle 20ms. Daher kannst 
Du locker 5 Servos mit nur einem einzigen Teimer ansprechen, und zwar 
immer abwechselnd (quais gemultiplext). Da die Timer des AVR zwei 
Compare Register haben, kannst Du sogar 10 PWM Ausgänge mit nur einem 
Timer realisieren.

Der Trick besteht darin, die nicht PWM Ausgänge der Timer zu verwenden, 
sondern die Compare- und Overflow Interrupts. In der Interrupt-Routine 
stellst Du dann die 10 Ausgänge um...

Konkretes Beispiel: http://stefanfrings.de/servocontroller/index.html

Dieses Programm wird per I2C angesteuert, Du kannst es sicher leicht auf 
UART umschreiben.

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.