Forum: Mikrocontroller und Digitale Elektronik Volumenstrom messen mit PIC16F819


von Yann S. (triniat)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

Ich muss für eine Projekt eine Mikrokontroller Steuerung entwickeln und 
Programmieren.
Ich benutze dazu einen PIC16F819 und Programmiere das ganze in C.
Nun zu meinem anliegen:

Ich möchte einen Volumenstromsensor auslesen welcher über eine Turbine 
TTL Impulse zurückgibt.
Meine Überlegung ist, dass ich den Timer0 als Counter konfiguriere, die 
Impulse über eine gewisse Zeit hochzähle, den Timer0 (Counter) dann 
auslese, die Impulse durch die verstrichene Zeit teile um so die 
momentane Frequenz der Turbine zu erhalte. Danach setze ich den Timer0 
wieder auf null. Die zähl Zeit will ich über den Timer1 definieren.

Meine Frage ist:

Sind dies Überlegungen so realisierbar?
Kann ich den TTL Impuls wie auf dem Schema gezeichnet mit dem pull up 
Wiederstand, an den Timer0 Eingang des PICs anhängen?
Brauche ich einen externen Quarz um die Zeit genau genug hinzubekommen 
oder reicht der internen Oszillator?

Ich Messe den Volumenstrom von Wasser. Die Spannweite liegt bei 0 – 2 
l/min.

Mein Ziel ist es möglichst wenig Rechenleistung für diesen Vorgang in 
Anspruch zu nehmen so dass das System möglichst schnelle auf externe 
Ereignisse reagieren kann und nicht durch das Auslesen vom Sensor 
blockiert wird.
Da ich noch nicht so lange mit Mikrokontrollern arbeite, weiß ich nicht 
was die optimalste Lösung für solche Messungen ist.

Wenn ihr einen anderen, besseren Weg kennt, freu ich mich auf die 
Anregungen.

TRINAT

von Stephan M. (multimeter90)


Lesenswert?

Hallo,

also erst einmal ein paar Fragen. Dein Volumenstrom beträgt maximal 
2l/min, wie hoch wäre dann die Frequenz der Turbine, also wie groß ist 
die zeit zwischen den TTL Impulsen?

Deine Möglichkeit geht natürlich, du solltest dabei den Timer so 
konfigurieren, dass er auch bei maximaler Drehzahl der Turbine noch eine 
gewünschte Auflösung bringt. Wie genau soll die Auswertung sein?


Mein Vorschlag:
Timer1 (16bit) nehmen und als counter definieren. Der zählt dir dann die 
Impulse an RC0 oder RC1.
Timer0 als Timer, mit Interrupt, sodass aller, sagen wir als Beispiel 
500ms, ein Überlauf-> Interrupt ausgelöst wird. Dann den Timer1 auslesen 
und schon hast du deine Frequenz. Die ganze Sache benötigt sehr wenig 
Rechenleistung, da der Counter in der Hardware arbeitet und somit keine 
Rechenleistung verbaucht.

Wegen der Genauigkeit: Quarz ist definitiv genauer, aber das kommt auf 
deine Anforderungen an.

von Lutz (Gast)


Lesenswert?

Besonders spannend ist die Frage, wie konstant der Durchfluß ist. Bei 
stärkeren Schwankungen (womöglich auch noch in kurzer Zeit ...) wird das 
ziemlich ungenau.D ann muß man doch schon mehr Rechenaufwand betreiben, 
z.B. auch die Impulse und Zeit absolut zählen. Wenn neben 
Geschwindigkeit auch noch das Volumen gefordert wird, muß das sowieso so 
gemacht werden.

von Erich (Gast)


Lesenswert?


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.