Forum: Mikrocontroller und Digitale Elektronik PIC Fahrtregler


von Wackel D. (pitzelpatzel)


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

von Gast Posti (Gast)


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

von Wackel D. (pitzelpatzel)


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.

von Gast Posti (Gast)


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

von Gast Posti (Gast)


Lesenswert?

äääh ...

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

MfG

von Wackel D. (pitzelpatzel)


Lesenswert?

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

von Gast Posti (Gast)


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

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.