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
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