Forum: Mikrocontroller und Digitale Elektronik Einfachste Servoansteuerung


von Rambo (Gast)


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?

von John (Gast)


Lesenswert?

Muss man bei einem PIC auch n Ausgangsbit setzen?
Sorry, hab noch nix mit PIC zu tun gehabt - aber das sollte normal schon 
passieren!

von Paul (Gast)


Lesenswert?

1
TRISDbits.TRISD1=1;
das macht Pin1 von PortD zu einem Eingang sollte aber ein Ausgang (= 
0) sein, möchte ich meinen

von Peter B. (pbuenger)


Lesenswert?

Rambo wrote:
> eine schönes 2 µs - 20µs signal
Damit können aber die wenigsten Servos was anfangen. Probiere es doch 
mal mit Milli- statt Mikrosekunden.

Gruß,
Peter

von Rambo (Gast)


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?

von Karl H. (kbuchegg)


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.

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.