Forum: Mikrocontroller und Digitale Elektronik PWM Steuerung für Servo


von T. F. (n3ssaja)


Lesenswert?

Hallo zusammen,
Ich benötige eure Hilfe. Und zwar will ich einen Lenkservo eines 
Fernsteuerautos mit einem µC ansteuern. Die Grundlagen dafür sind mir 
bekannt. Es handelt sich um das Model "Futaba S3003". Mein C-Code dafür 
sieht wie folgt aus:
1
#include <avr/io.h>
2
#include <avr/delay.h>
3
4
void steuerung(uint8_t richtung)
5
{
6
  PORTB=1;     // Signalleitung des Servo
7
  _delay_us((1+(richtung*0.5))*1000);
8
  PORTB=0;
9
  _delay_us(20*1000);
10
}
11
12
int main(void)
13
{
14
  DDRB|=0xFF;
15
  for(;;)
16
  {
17
    steuerung(1);  //0->Links;1->Geradeaus;2->Rechts
18
  }
19
  return 0;
20
}

Der Lenkservo dreht sich permanent nach rechts bis in den Anschlag. 
Dabei sollte er sich aber laut Code jetzt in der Nullstellung halten. 
Die Funktion steuerung() erzeugt mir das PWM Signal. In diesem Fall 
High-Pegel für 1,5ms und dann Low-Pegel für 20ms.
Würde mich sehr über Eure Tips freuen!

von Purzel H. (hacky)


Lesenswert?

Das Steuersignal hast du aufm Scope angeschaut ?

von hans (Gast)


Lesenswert?

Tobias F. schrieb:
> richtung*0.5

richtung ist uint8_t

richtung*0.5 daher IMMER 0

=> Signal immer 1 ms

Versuch mal:

 _delay_us(1000+richtung*500);


hans

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.