PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Lüfter-Tachosignal ...



Mr-400-Volt
07.06.2009, 20:04
Hallo, ich möchte die Drehzahl eines 12V Lüfters anzeigen und stecke da mit der auswertung fest. Der Lüfter ist wie gesagt an 12V angeschloßen, wobei das Tachosignal mit einem 10K Pullup an den ICP-Pin des Mega16 geht.
Mein Code ist folgender ...
Ich beckomme bei langsam laufendem Lüfter eine Drehzahl von ca. 13000 angezeigt, die ab und an auf ca. 800 springt. Könnte mir bitte jemand helfen ?



Config Timer1 = Timer , Capture Edge = Falling , Noise Cancel = 1 , Prescale = 256
On Capture1 Timer_icp
Enable Timer1
Enable Capture1
Enable Interrupts
.
.
.
.
.
.
.
Timer_icp:
Dim Icp_neu As Word , Periode As Word
Icp_neu = Capture1

If Icp_neu > Icp_alt Then
Periode = Icp_neu - Icp_alt
Else
Periode = Icp_alt - Icp_neu
Periode = 65536 - Periode
End If
Icp_alt = Icp_neu

'Debug_lcd = Periode

Fan = 1875000 / Periode
Fan_active = 1
Return

for_ro
07.06.2009, 20:43
Musst du nicht anstelle von
Icp_neu = Capture1
dies schreiben:
Icp_neu = Timer1

Der Timer enthält doch den Wert, den du lesen willst.

Gruß

Rolf

Mr-400-Volt
07.06.2009, 20:49
Das ändert auch nix......

markusj
07.06.2009, 22:48
Hast du tatsächlich einen Lüfter mit Drehzahlsensor? Ich hab kürzlich gewaltig danebengetreten als ich angenommen hatte, dass meine Lüfter mit dritter Strippe einen Drehzahlsensor haben.
Es war nämlich nur ein "Lüfter läuft"/"Lüfter steht"-Signal, dass sich dann in einem dauerhaften High bzw. Low-Pegel ab einer gewissen Mindestdrehzahl niedergeschlagen hat.

mfG
Markus

Edit: Wenn du den Lüfter über PWM regelst und dabei die Masse ein-/ausschaltest, kannst du das Drehzahlsignal ebenfalls in die Tonne treten, nur wenn du einen High-Side Transistor/FET verwendest funktioniert die Drehzahlmessung noch.

Ceos
08.06.2009, 08:10
Der Lüfter ist wie gesagt an 12V angeschloßen, wobei das Tachosignal mit einem 10K Pullup an den ICP-Pin des Mega16 geht.

erm du meinst nen pulldown oder ? wenn da 12V in den controller reinpulsen nimmt der dir das bestimmt irgendwann sehr übel! ich würd das signal erstmal nachmessen (mit oszi wenn geht)

Musst du nicht anstelle von
Icp_neu = Capture1
dies schreiben:
Icp_neu = Timer1

nein, wenn der ICP ne flanke detektiert, schreibt er sofort den aktuellen timerwert in das capture register, also vollkommen richtig

wie gesagt ich würde restmal das signal überprüfen, ihc kenn das von billig-einschub-tachometern für lüfter, dass die werte manchmal heftig schwanken, liegt aber meist daran dass die das signal ungepuffert auswerten, ich würd n schmitttrigger vorschalten, so bekommste das signal schonmal auf definitiv 5V runter(n spannungsteiler birgt das risiko einer spannungsspitze) und es wird ein sauberes rechtecksignal draus!

EDIT: ich muss glatt aml nachschauen, aber theoretisch müsste man über einen OPV auch ne gewisse potentialtrennung erreichen

Mr-400-Volt
08.06.2009, 17:04
Also der Lüfter wird wie folgt angesteuert:
Der AVR steuert über I2C einen DAC an, der entsprechend 0-5V an einen OPV weiter gibt. Der OPV steuert einen BD135 an, der an 12V angeschloßen ist, und den Lüfter treibt. Das Tachosignal ist ein Opencollector und an den ICP-Pin des AVR angeschloßen.Der pullup geht vom Tacjosignal an +5V.
Ab ca. 950u/min bis 1600u/min wird es richtig angezeigt. Dafor und dahinter spinnt er wieder .........

screwdriver
08.06.2009, 20:56
Die Division
Fan = 1875000 / Periode
hat in der ISR nichts verloren, dauert zu lange.

Deshalb im Hauptprogramm:

do
if fan_aktive=1 then
reset fan_aktive
disable interrupts
Fan = 1875000 / Periode 'Atomarer Zugriff auf Periode
enable interrupts
endif
print fan
loop

Übrigens, wenn Du den Overflow-Interrupt nicht benötigts lösche bitte die Zeile

enable Timer1

Mr-400-Volt
11.06.2009, 19:39
ich geb´s auf. Ist es möglich einfach nur zu erkennen, ob der lüfter läuft oder nicht ? Ohne Timer, einfach nur durch den Portpin ?

021aet04
11.06.2009, 19:51
Man gibt nicht auf!!! [-( [-(
Hast du ein Datenblatt vom Lüfteroder Typenbezeichnung vom Lüfter? Dort sollte es drinnenstehen, ob du ein Frequenzsignal oder eine Stillstandsanzeige hast.

Mr-400-Volt
11.06.2009, 19:58
Das ist ein ausgedienter CPU-Lüfter.

021aet04
11.06.2009, 20:03
Steht eine Bezeichnung drauf (bei der Motorbefestigung)?

Ceos
11.06.2009, 20:05
naja ich geb dich dann mal auch auf ... was ne einstellung wäre das denn ... dann lieber garnix schreiben echt ehy ... das iss das gleiche als wenn dich jemand zum essen einädt und dann sagt ne ich schmeiss das essen lieber weg ..

Mr-400-Volt
11.06.2009, 20:10
Da steht nur : 040602KA 1F3

Naja, wenn mann bald 2 Tage an einer Drehzahlausgabe bastelt, und es nicht hin beckommt........das frustet...............

021aet04
11.06.2009, 20:22
Hast du ein Oszi oder DMM mit Frequenzmessung?

Mr-400-Volt
11.06.2009, 20:36
DMM mit Frequenzmessung. Bei einer angezeigten drehzahl von 946 u/min habe ich eine frequenz von 31,4 Hz am ICP-Pin.

Mr-400-Volt
11.06.2009, 20:51
Hier mal der ganze Code, ist noch nicht ganz fertig.....

021aet04
11.06.2009, 22:45
Miss die Frequenz mit dem DMM und verändere die Spannung.