mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfachste Servoansteuerung


Autor: Rambo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
void main (void)    
{  

OpenTimer2( TIMER_INT_OFF &
T0_8BIT &
T0_SOURCE_INT &
T0_PS_1_8 );
OpenPWM2(0xab);
TRISDbits.TRISD1=1;
SetDCPWM2(31);

}

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?

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Paul (Gast)
Datum:

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

Autor: Peter Bünger (pbuenger)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rambo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.