Einfachste Servoansteuerung

Gast #1212190
Lesenswert?
• ▲
▼
Hy ho zusammen!

Wir programmieren in der Schule einen PIC18F4620 (über MPLAB). Wir 
möchten einen Servo über den PWM ansteuern.

Das haben wir bis jetzt:
1
void main (void)    
2
{  
3

4
OpenTimer2( TIMER_INT_OFF &
5
T0_8BIT &
6
T0_SOURCE_INT &
7
T0_PS_1_8 );
8
OpenPWM2(0xab);
9
TRISDbits.TRISD1=1;
10
SetDCPWM2(31);
11

12
}
Eigentlich sollte jetzt eine schönes 2 µs - 20µs signal herauskommen 
über den pwm2, aber da tut sich nix. Über das Oszi kommmt einfach nur 
ein Sprung auf 5 V und bleibt oben.

Kann mir eventuell wer helfen was ich falsch mache?
Gast #1212419
Lesenswert?
• ▲
▼
Sry hab mich nur verschrieben ;)

Ja das problem ist, mit timer 2 schaff ich maximal eine periode von 16 
ms, ich brauch aber 22, dh. ich muss irgendwie die frequenz runter 
bringen... wie schaff ich das?
#1212476
Lesenswert?
• ▲
▼
Rambo wrote:
> Sry hab mich nur verschrieben ;)
>
> Ja das problem ist, mit timer 2 schaff ich maximal eine periode von 16
> ms, ich brauch aber 22, dh. ich muss irgendwie die frequenz runter
> bringen... wie schaff ich das?

Den meisten Servos ist es ziemlich egal, ob ihr Steuerpuls alle 20ms 
oder alle 15ms oder alle 10ms wiederkommt. Einzig und alleine die Breite 
des Pulses zählt.
Dass nach dem eigentlichen Puls bei einer echten Fernsteuerung eine 
Wartezeit kommt, um auf die 20ms zu kommen hat übertragungstechnische 
Gründe.

Konzentrier dich auf die korrekte Erzeugung des 1-2ms Pulses. Ob danach 
im Signal 16ms oder 20ms Pause sind ist dem Servo mit einiger Sicherheit 
aber sowas von Wurscht.

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