www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC Fahrtregler


Autor: Wackel Dackel (pitzelpatzel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich bin PIC Anfänger und will das Servosignal von einem Empfänger 
"auswerten" und für die Steuerung der PWM nutzen.

Meine Idee ist es mit dem Gateeingang von Timer 1 die Impulsbreite zu 
messen.

Mein Problem ist nur, der Timer 1 hat ja einen 16bit Wert und die ECCP 
Einheit für die PWM hat nur 10bit Wert.

Wie kann ich die gemessene Impulsbreite von 16bit in 10bit "umrechnen"?

Ich verwende den PIC16F684 mit ECCP, er erscheint mir sehr gut geeignet 
für einen Fahrtregler.

Für Tipps und Ansätze wäre ich dankbar.

MfG

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Den Wert 6 Bit nach rechts schieben?
Sofern bei 2ms die 16 Bit überhaupt voll werden, sonst entsprechend 
weniger verschieben, damit bei MAX auch die 10 Bit genutzt werden.

MfG

Autor: Wackel Dackel (pitzelpatzel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja der Timer wird ja bei max. 2ms nicht voll, je nach Vorteiler, 
trotzdem müsste der gemessene Wert Vollgas beim  PWM Modul ergeben.

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Dann eben den maximalen Wert mit dem entsprechendem Faktor verrechnen.

Bzw. - da Vollausschlag in Gegenrichtung 1ms ist (Seien sollte), müsste 
der Timer-Wert zuvor noch um den Wert von 1ms reduziert werden, den 
übrigen Rest dann mit X multiplizieren, daß Du auf Deinen Maximalwert 
kommst.
Muß man aber schauen, wie groß die Sprünge sind und ob man damit 'leben' 
kann.

PWM_Wert=(Timer_jetzt - Timer_1ms)x(4096 : (Timer_2ms - Timer_1ms))

Könnte man bestimmt noch kürzen, aber das ist schon etwas her ...

MfG

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
äääh ...

10 Bit sind 1024 ... die obige 4096 sollte deshalb in 1024 geändert 
werden.
Sorry

MfG

Autor: Wackel Dackel (pitzelpatzel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nagut hatte gehofft das es ne andere Möglichkeit gibt, da der kleine PIC 
ja kein Hardware Multiplikation kann.

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

PIC ... hatte ich ja ganz überlesen.

Dann müssen wir das 'schriftlich' erledigen.

Welchen Zählerstand hat der Timer bei Min / Max?
Um es einfach zu machen, wäre z.B. 1024 bei Min und 2048 bei Max als 
Beispiel gut.
Die Differenz wäre 1024 'Ticker'.
Unser PWM müsste also pro 'Ticker' 1 dazu bekommen.

Bei einem Unterschied von 512 müssten wir pro 'Ticker' 2 addieren.

Bei einem Unterschied von 2048 0,5 (wieder schwierig), hier müsste eine 
Rechnung PWM=Ticker:2 angewendet werden.

Bei ungeraderen Brüchen muß entsprechend aufwändig gerechnet werden, 
z.B. SPRUT hat das glaube bei seinem Drehzahl-Messer interessant 
rumgerechnet.
(www.sprut.de)

MfG

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.