mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC PWM-Periode Servoansteuerung


Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute ! Hab vorhandene Beiträge zum Thema durchforstet und bin 
leider nicht ganz auf meine Frage gestoßen, deshalb stell ich sie hier!

Also ich möchte ein handelsüblichen Modellbauservo ansteuern. Die 
PWM-Periode ist sodann 20ms und die Duty-Cycle-Dauer 1-2ms.
Ich habe ein PIC 16F627 mit 4Mhz Quarz und möchte den hardwaremäßigen 
vorhandenen PWM-Erzeuger nutzen.
Nach diverser Lektüre von Microchip hab ich eine Formel gefunden um die 
PWM-Periode auszurechnen. So tat ich dies.

PWM-Periode = [(PR2)+1]  4  Tosc * (TMR2 prescale value)

20ms = [(PR2)+1]  4  1/4Mhz * 16 (höchster Teiler)

20ms = [(PR2)+1] * 16µs

20ms/16µs = (PR2)+1

1250 = (PR2)+1

1249 = PR2

also müsste ich die Zahl 1249 ins PR2 Register laden. und nu kommts da 
dieses Register nur 8 Bit groß ist kann ich die Perioden dauer gar nicht 
erreichen. die maximalste Periode die ich erreichen kann wäre 4,1ms. 
dies reicht leider nicht. erkennt ihr ein fehler in meiner rechnung? wie 
wird das den üblicherweise gemacht? wenn ich den PIC mit 1Mhz Quarz 
betreibe würd ich zumindest bis 16,4ms kommen..
Würd mich sehr um Kommentare und Anregungen freuen...

Autor: Ooohhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Vorteiler verwenden ? Den kann man sicher konfigurieren.

Autor: Erhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobi,

deine Rechnung stimmt.

Nimm am besten den Timer 1 und lass alle 20 ms einen Interrupt auslösen 
der dir dann deinen Ausgang setzt.

Ist der Ausgang gesetzt, startest du Timer 2, der nach der benötigten 
Periodendauer (1 - 2ms) den Ausgang wieder löscht.

Diese Methode benötigt zwar zwei Timer, aber alles läuft 
interruptgesteuert ab, und so hast du genügend Zeit für andere Aufgaben.

Autor: Rambo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe genau das gleiche Problem!

Kann eventuell einer mir zeigen, wie ich dann das interrupt genau 
dahinter setzte?

Danke!

Autor: Chris S. (schris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt da so einen HW-Modus, mit TMR2, daß der PWM für eine gewisse 
Zeit ausgesetzt wird, un erst danach wieder startet, aber da nur 2 
Kanäle,
habe ich immer die andere Methode bevorzugt, daß es jedoch in HW-PWM 
machbar ist, ist mir bekannt.

Autor: Rambo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir irgendwer helfen? Ich will einen Servo ansteuern aber ich hab 
keine ahnung wie ich das verhältniss richtig einstelle... es geht um die

void main (void)
{

OpenTimer2( TIMER_INT_OFF &
T0_8BIT &
T0_SOURCE_INT &
T0_PS_1_8 );
OpenPWM2(0xff);
SetDCPWM2(31); <---- welche zahl???? (Verhältnis)

}

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.