Atmega1284p 6-fach Frequenzmessung uC - OSII

Gast #2740821
Lesenswert?

Hallo,

Ich baue zurzeit an einer Lüfterregelung für den PC mit uCOS 2. Für die 
Regelung würde ich gerne das Tachosignal der Lüfter einlesen. Dazu nimmt 
man den Input Capture Pin. Jedoch hat der Atmega1284p nur 2 und ich habe 
sowieso nicht mehr soviele Portpins frei. Deshalb hätte ich mir gedacht 
das ich die Tachosignal Multiplexe?!? Hat da jemand eine Idee?? Weiters 
wirds dann interessant wie das mit dem Timing aussieht beim uC OS2.

mfg der brunzer
Gast #2740825
Lesenswert?

brunzer schrieb:
> Für die
> Regelung würde ich gerne das Tachosignal der Lüfter einlesen.

Komischer Ansatz. In meinen Augen wäre die eigentliche Arbeit des 
Lüfters, eine bestimmte Temperatur zu halten.
Also würde ich eher die Temperatur messen und regeln als die 
Drehgeschwindigkeit.
Gast #2740829
Lesenswert?

Ja sicha die Temperatur lese ich ein und die Drehzahl will ich auch 
einlesen.
Hätte mir schon gedacht das Tachosignal mit einem Tiefpass zu einer 
Gleichspannung machen und dann mit ADC einlesen und dann rückrechnen, 
aber ich denke das das zu ungenau wäre...
Aber die eigentliche Frage ist wie ich meine 6 Tachosignal am Capture 
Pin multiplexen kann..

mfg
Gast #2740835
Lesenswert?

Hallo,

zähl doch per Software. Nimm PCINTs und wenn der ausgelöst wird schaust 
welcher Pin sich geändert hat und zählst die entsprechende Variable hoch 
und dann nimmst du einen langsameren Timer mit zb 1/10sec oder 1sec 
Laufzeit und kuckst was in der Variable steht und schon hast du deine 
Umdrehungen pro 1/10sec bzw sec

Wenns langsamer sein kann dafür aber genauer dann kannst du auch länger 
warten

Gruß Karl
Gast #2740861
Lesenswert?

Ok, gute idee, jedoch weißt du wie ich das mache mit dem uC OS?
weil meine Idee wäre einen eigenen Task machen der 1Sekunde aktiv ist 
und die Drehzahl einließt. Dazu müsste ich den "taskswitchtimer" 
anhalten.. jedoch weiß ich nicht wie das geht..

Das OS mach ich deswegen weil
1. Kommunikationstask zum PC
2. LCD-task für Datendiagramm usw.
3. Regler_task
4. Drehzahl task
5. Temperatur task
6. RGB LED Pwm..

mfg
der brunzer
#2742235
Lesenswert?

Naja... ich kenn dein uC OS ja nicht, aber eigentlich wäre das nach 
gesundem Menschenverstand halt eine Aufgabe für ein C-Programm. ISR 
erstellen, darin zählen und schließlich in der zeitunkritischen 
Hauptschleife irgendwas mit dem Ergebnis das dir der ISR-Zähler liefert, 
entsprechend ausführen.
Warteschleifen ohne For-Anweisung sondern mit dem 16-bit Timer/Counter1 
erstellen kannst du?

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