PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC18F 32Mhz für Servomotor PWM 50Hz ?



Alan-Lee Perkins
29.07.2012, 20:23
Guten Abend alle zusammen,

ich bin ein Neuling in diesem Bereich und muss nun ein Projekt planen welches mir Kopfschmerzen bereitet.

Wir haben einen PIC18F45K22 welcher mit 32Mhz betrieben wird. Nun soll ich dort (erstmal) einen Servomotor anschliessen (Modelcraft RS2) ... Tja und da fängt der Fachinformatiker bereits zum jammern an :)

Mit meiner MicroC Library komme ich niemals auf die 50Hz runter (die 32Mhz müssen sein) ...


Hat von euch jemand einen Vorschlag wie ich diese(n) Servomotor(an) ansteuern kann?


Ich bin ein echter Neuling in diesem Bereich (Ich bin bereits happy wenn die LED blingt *zwinker*)


Vielen Dank!

Alan-Lee

djdune
31.07.2012, 12:07
Das kannst du recht gut mit Interrupt machen.
http://eng-serve.com/pic/pic_timer.html Damit rechne ich mir immer die Register für die Timer aus. Bei 32Mhz würde Timer 1 mit 1:4 Vorteiler und 25547 Preload ganz gut funktionieren. Kommt auf 50.01Hz, das ist dem Servo aber egal.

Wenn ich nur einen Servo anschließe und die Timer nicht anderweitig brauche, mache ich das immer etwa so (Pseudo-Code, da ich anderen Compiler verwende)

setup_timer1(1:4);
int16 ServoValue=1500 //In ms 1500=Mitte

#int_timer1_isr // interrupt routine
void timer1(void)
{
set_timer1_preload(25547);
set_port(PIN_A0);
delay_microseconds(ServoValue);
clear_port(PIN_A0);
}

Natürlich ist das nicht die Beste Lösung, aber so hat es bei mir auch immer sehr gut funktioniert.

lg