PIC Fahrtregler

OP #1103547
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
Gast #1103577
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
Gast #1103615
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren