Capture Modul in Kombination mit PWM bei PIC16F876A

Gast #1374747
Gutes Forum

Bin gerade an meiner Diplomarbeit dran und ein Teil davon besteht darin 
die Frequenz eines Light-to Frequency Converter (Lichtsensor) mit dem 
Capture Modul des PIC16F876A zu messen. Die Taktfrequenz des PIC 
betraegt 4MHz.

Der Frequenzbereich des Lichtsensors betraegt 1- 100Khz.

Das 16 bittige Ergebnis der Frequenzmessung wird dann an das PWM Modul 
weitergegeben an die Variable PR2, welche das Tastverhaeltnis bestimmt.
Die Werte werden mittels Wertetabelle uebergeben, da PR2 nur 8 Bit 
betraegt.

Das Signal des PWM wird danach ueber einen Tiefpass demoduliert um eine 
Spannung von 0-5V zu bekommen.

Momentan sieht es so aus, dass es mir nur moeglich ist Frequenzen von 
1KHz- 10Khz mit dem Capture Modul zu messen, da die anderen Frequenzen 
so schlecht am PWM ankommen, dass sie nicht demodulierbar ist. Der Timer 
des PWM ist ohne Prescaler eingestellt um eine hohe Ausgangsfrequenz zu 
bekommen, welche momentan bei 3,9 KHz im Maximum liegt.

Habe den schlimmen Verdacht, dass es an der Taktfrequenz liegen koennte 
und deshalb nur niedrigere Frequenzen messen kann.


Wuerde mich freuen, wenn jemand eine Idee haette.


Gruesse Clemens
Gast
>Habe den schlimmen Verdacht, dass es an der Taktfrequenz liegen koennte
>und deshalb nur niedrigere Frequenzen messen kann.

Das ist gut möglich. Wenn der PIC Takt 4MHz ist,
dann läuft er intern mit nur 1MHz. Deine Messung und Ausgabe
müsste also bei 100kHz in 10 CPU Clocks fertig sein
Gast
>Das 16 bittige Ergebnis der Frequenzmessung wird dann an das PWM Modul
>weitergegeben an die Variable PR2, welche das Tastverhaeltnis bestimmt.

Öhm, Moment mal. PR2 bestimmt die PWM Frequenz und nicht das
Tastverhältnis.

1. Set the PWM period by writing to the PR2
register.
2. Set the PWM duty cycle by writing to the
CCPR1L register and CCP1CON<5:4> bits.

Irgendwie kam mir das gleich so komisch vor.
Das mit der Frequenzmessung und Ausgabe per PWM
sollte eigentlich auch funktionieren. Die PWM
muss ja nicht nach jeder Periode der 100kHz
upgedatet werden.
Gast
Hallo Holger

Ich stelle indirekt das Tastverhaeltnis ueber PR2 ein da:

Tastverhaeltnis = CCPR1L / PR2

Somit kann ich das Tastverhaeltnis durch Aenderung von PR2 beeinflussen.
Werde nun einen Frequenzteiler benutzen um das Problem zu loesen.


Gruesse

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.