PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere Servos an Wifi-Moul - Timer



MM2forever
08.02.2013, 10:40
Hallo Community,

Ich versuche seit einiger Zeit einen Robotergreifarm an meinen RP6 zu bauen.
Dafuer habe ich schon die Teile geplant und zum Fraesen aus PVC an einen befreundeten "Metaller" gegeben.

Momentan befasse ich mich damit, wie ich die 5 Servos, welche im wesentlichen den Greifarm bilden, ansteuere.

Ich dachte ich haette es schon verstanden, wie man es macht, da ich bereits 2 Servos zum laufen bekommen habe. Als ich einen dritten anschliessen wollte, wurden jedoch meine Erkenntnisse "verworfen".

Nun zu den Details:

24463

Ich habe den Port "IO_PWM/T0/T1" auf eine Experientierplatine herausegefuehrt und versorge mit 5V die Servos (Masse dieser Spannungsquelle mit Masse des Ports (pin2) verbunden).

Die PWM Steueranschluesse der beiden Servos verband ich mit PB6/OC1B (Pin 9) bzw. PB5/OC1A (Pin 7).

Der Quellcode enthaelt zur Steuerung folgendes:

Initialisierung des Pin 7 und Timer1:



void timer_init(void)
{
DDRB = (1 << PB5 );

TCCR1A = (1<<COM1A1) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<WGM12) |(1<<CS11);

ICR1 = 20000;

}


Dann veraendere ich im laufe des Programmes OCR1A im Bereich von 1100 - 4950 um den Servo auszusteuern.

Wie kann ich nun einen 2. Servo (3./4./5.) mithilfe des Timers ansteuern???

Ich hatte zunaechst versucht auch Pin 9 (OC1B) auf Ausgang zu schalten und dann den Wert von OCR1B im Bereich von 1100 - 4950 zu Beeinflussen. Zunaechst ging das auch irgendwie (Ich konnte beide Servos getrennt Steuern), aber irgendwann ging es nichtmehr (oder nur zufaellig mal).

Die Infos ueber Servoansteuerung mit PWM habe ich hierher:

http://www.mmi.rwth-aachen.de/wiki/mmi-mediawiki/index.php/Einstieg_in_PWM_auf_einem_ATMega8
http://mil.ufl.edu/5666/handouts/ATMPWM.pdf

Nur wird in diesen Beispielen immer blos 1 Servo mit PWM/Timer angesteuert.

Wie kann ich nun vorgehen?


Liebe Gruesse,

MM2forever

Max Web
08.02.2013, 16:42
Hallo,

schau Dir doch mal dieses: https://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=rp6+servo+library Projekt an.
Es sollte sich sicherlich leicht auf die M256 portieren lassen.

SlyD
08.02.2013, 17:48
Hallo,

Du musst die COM1xx Bits in den jeweiligen TCCRxx Registern richtig setzen damit die Pins auch als PWM Ausgang verwendet werden.
Schau mal ins Datenblatt auf Seite 158ff.
Und Seite 148 die Tabelle 17-2. Die WGM Bits müssen auch dazu passen.
(verhält sich je nach Modus anders)

Wenn Du mehrere Timer nutzen willst, musst Du das natürlich für jeden Timer einstellen.


MfG,
SlyD