Forum: Mikrocontroller und Digitale Elektronik Lüfter - Speed Sensor auswerten


von rob_gold (Gast)


Lesenswert?

Hallo,

ich will das Speed-Signal eines Lüfters mit einem uC auswerten.

Der Speedsensor hat lt. Datenblatt einen Open Collector Ausgang.

Der uC hat am Eingangspin den internen Pullup aktiviert (5V).

Wenn der Speedsensor direkt an den uC-Pin angeschlossen wird, wird das 
LOW nicht erkannt, weil der Speedsensor-Ausgang den Pin nur auf ca. 2,5V 
herunterzieht.


Was wäre nun die beste Vorgehensweise?

Noch einen BiPo als Emitterfolger dazwischen?

Oder den internen Pullup (ca. 40k) deaktivieren und einen externen 
Pullup-Widerstand (ca. 120k) ausprobieren?

von Michael H. (michael_h45)


Lesenswert?

rob_gold schrieb:
> Speedsensor-Ausgang den Pin nur auf ca. 2,5V
> herunterzieht.
Wie hast du das gemessen?

von MaWin (Gast)


Lesenswert?

> Wenn der Speedsensor direkt an den uC-Pin angeschlossen wird, wird das
> LOW nicht erkannt, weil der Speedsensor-Ausgang den Pin nur auf ca. 2,5V
> herunterzieht.

Das wäre eher ungewöhnlich,
üblicherweise schafft der das sogar bei 10k pull up.

Ist auch Masse vom Lüfter mit Masse vom uC verbunden ?

von rob_gold (Gast)


Lesenswert?

Michael H. schrieb:
>> Speedsensor-Ausgang den Pin nur auf ca. 2,5V
>> herunterzieht.
> Wie hast du das gemessen?

Zum einen habe ich geguckt, ob das LOW erkannt wird (wurde nicht, s.o.) 
und dann habe ich mit einem Multimeter geguckt, was die niedrigste 
Spannung ist, die am Pin anliegt (mit Min/Max-Funktion des Multimeters). 
Ist etwas grob, zugegeben.



MaWin schrieb:
>> Wenn der Speedsensor direkt an den uC-Pin angeschlossen wird, wird das
>> LOW nicht erkannt, weil der Speedsensor-Ausgang den Pin nur auf ca. 2,5V
>> herunterzieht.
>
> Das wäre eher ungewöhnlich,
> üblicherweise schafft der das sogar bei 10k pull up.
>
> Ist auch Masse vom Lüfter mit Masse vom uC verbunden ?

Ist aber leider so. Die Massen sind richtig verbunden. uC und Lüfter 
werden vom selben NT versorgt (der uC über einen zwischengeschalteten 
7805).


Im Datebblatt steht noch, dass der R so gewählt sein soll, dass weniger 
als 10mA durch ihn fließen.

von Michael H. (michael_h45)


Lesenswert?

rob_gold schrieb:
> Spannung ist, die am Pin anliegt (mit Min/Max-Funktion des Multimeters).
> Ist etwas grob, zugegeben.

das multimeter ist viel zu langsam, um sowas zuverlässig zu erkennen.
die messung hat keine aussagekraft.

dreh den lüfter mal per hand auf den sensor und miss dann.

> Im Datebblatt steht noch, dass der R so gewählt sein soll, dass weniger
> als 10mA durch ihn fließen.
eben... und welcher strom stellt sich bei 5V über 40k ein?

von rob_gold (Gast)


Lesenswert?

Michael H. schrieb:
> dreh den lüfter mal per hand auf den sensor und miss dann.

Gute Idee!

Michael H. schrieb:
>> Im Datebblatt steht noch, dass der R so gewählt sein soll, dass weniger
>> als 10mA durch ihn fließen.
> eben... und welcher strom stellt sich bei 5V über 40k ein?

Nach U = R * I dürften es etwa 0,125mA sein.
Das heißt dann ... ???

von rob_gold (Gast)


Lesenswert?

Mit 1k oder 120k als Pullup (in dem Falle extern) funktioniert es 
übrigens auch nicht.

von Schlumpf (Gast)


Lesenswert?

Kann es vielleicht sein, dass dein uC-Pin nicht auf Input, sondern auf 
Output konfiguriert ist?

von Michael H. (michael_h45)


Lesenswert?

rob_gold schrieb:
> Michael H. schrieb:
>> dreh den lüfter mal per hand auf den sensor und miss dann.
>
> Gute Idee!
nachgemessen?

>>> Im Datebblatt steht noch, dass der R so gewählt sein soll, dass weniger
>>> als 10mA durch ihn fließen.
>> eben... und welcher strom stellt sich bei 5V über 40k ein?
>
> Nach U = R * I dürften es etwa 0,125mA sein.
> Das heißt dann ... ???
denk mal n paar minuten konzentriert darüber nach...
MAXIMAL 10mA dürfen fließen. dein strom ist viel kleiner.

> Mit 1k oder 120k als Pullup (in dem Falle extern) funktioniert es
> übrigens auch nicht.
natürlich nicht.

von rob_gold (Gast)


Lesenswert?

Danke Schlumpf, der Pin ist richtig konfiguriert und reagiert auf 
angelegte Spannungen entsprechend.


Michael H. schrieb:
>>> dreh den lüfter mal per hand auf den sensor und miss dann.
>>
>> Gute Idee!
> nachgemessen?

Noch nicht, zum Handdrehen muss der Lüfter erst wieder ausgebaut werden


>>>> Im Datebblatt steht noch, dass der R so gewählt sein soll, dass weniger
>>>> als 10mA durch ihn fließen.
>>> eben... und welcher strom stellt sich bei 5V über 40k ein?
>>
>> Nach U = R * I dürften es etwa 0,125mA sein.
>> Das heißt dann ... ???
> denk mal n paar minuten konzentriert darüber nach...

0,125mA sind weniger als 10mA, aber etwas wenig. Bei 1k ist man mit 5mA 
schon wesentlich näher dran. 510 Ohm geht aber auch nicht (das wären 
9,8mA).


>> Mit 1k oder 120k als Pullup (in dem Falle extern) funktioniert es
>> übrigens auch nicht.
> natürlich nicht.

Was wäre denn Deiner Meinung nach der beste Wert für den Pullup-R (oder 
die Lösung des Problems)?

von Schlumpf (Gast)


Lesenswert?

rob_gold schrieb:
> Danke Schlumpf, der Pin ist richtig konfiguriert und reagiert auf
> angelegte Spannungen entsprechend.

Ach so, ich hatte das vorhin so verstanden, dass du ein LOW nicht 
erkennen kannst...

rob_gold schrieb:
> Zum einen habe ich geguckt, ob das LOW erkannt wird (wurde nicht, s.o.)

von Michael H. (michael_h45)


Lesenswert?

rob_gold schrieb:
> Was wäre denn Deiner Meinung nach der beste Wert für den Pullup-R
dein problem liegt nicht am pullup.

von Pedant (Gast)


Lesenswert?

rob_gold schrieb:
> 0,125mA sind weniger als 10mA, aber etwas wenig. Bei 1k ist man mit 5mA
> schon wesentlich näher dran. 510 Ohm geht aber auch nicht (das wären
> 9,8mA).

Was gefällt dir an deinen 0,125mA nicht? Ist das weniger als 10mA oder 
nicht? Da steht nix von "möglichst genau". Wie soll das Ding bei höheren 
Strömen den Pegel nach 0V ziehen, wenn es schon bei 0,1mA nicht 
funktioniert?
Hast du die 2,5V bei drehendem Lüfter gemessen oder woher kommt der 
Wert?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Schlumpf schrieb:
> Kann es vielleicht sein, dass dein uC-Pin nicht auf Input, sondern auf
> Output konfiguriert ist?

rob_gold schrieb:
> Danke Schlumpf, der Pin ist richtig konfiguriert und reagiert auf
> angelegte Spannungen entsprechend.

Was meinst du mit "angelegte Spannungen"? Wenn du den Pin als Ausgang 
definiert und auf "1" gesetzt hast, und du den Pin dann z.B. durch 
Kurzschließen des Selben gegen Masse auf "0" ziehst, so wirst du durch 
Auslesen von PINx den Pin auch als "0" auslesen. Sogar externe 
Interrupts würden so noch funktionieren.

--> Poste mal deinen Code.

von rob_gold (Gast)


Lesenswert?

Danke für die vielen Antworten!!!

Magnus M. schrieb:
> Was meinst du mit "angelegte Spannungen"?

Also, eine Kontroll-LED an einem anderen Port zeigt an, ob der Pin (PC3) 
auf LOW gezogen wurde.

Wird an den Pin 5V angelegt, passiert nichts. Legt man 1V an oder den 
Pin auf GND, wird die Kontroll-LED getriggert und leuchtet.

Der besagte Pin wurde wie folgt konfiguriert:

DDRC = ~( 1 << DDC3 ) ; // Pin C3 auf Eingang

PORTC |= (1 << PC3 ) ; // interner Pullup aktiv

Später die Abfrage:

if (PINC & ( 1 << PC3 )) {-die besagte LED wird dauerhaft 
eingeschaltet-}



Vielleicht ist auch mit der Speed-Ausgabe des Lüfters irgendwas nicht in 
Ordnung, kann man das irgendwie testen???

von rob_gold (Gast)


Lesenswert?

Pedant schrieb:
> Hast du die 2,5V bei drehendem Lüfter gemessen oder woher kommt der
> Wert?

Ja.

von Gerd E. (robberknight)


Lesenswert?

rob_gold schrieb:
> Vielleicht ist auch mit der Speed-Ausgabe des Lüfters irgendwas nicht in
> Ordnung, kann man das irgendwie testen???

mit dem Oszi schauen was auf dem Pin passiert?

Mit dem Multimeter kommst Du nicht weiter, das ist zu langsam.

Bekommt der Lüfter keine Versorgungsspannung, ist bei sehr vielen 
Modellen auch der Speed-Ausgang unbrauchbar. Damit hilft auch von Hand 
drehen nicht. Das Problem mit dem unbrauchbaren Speed-Signal hast Du 
übrigens bei vielen Lüftern auch wenn Du direkt PWM an den Lüfter 
anlegst um die Geschwindigkeit zu reduzieren.

von Schlumpf (Gast)


Lesenswert?

Was für eine Signalform soll denn dieser Speedsensor ausgeben?
Einen Rechteck, vermute ich mal.
Und wenn der pro Umdrehung einen Impuls ausgibt, dann ist das Signal so 
schnell, dass du es mit einem Multimeter nicht erfassen kannst (auch 
nicht mit MinHold)... Das Multimeter zeigt dir irgendwas an..

Vermutlich misst du einfach nur Mist und dein Problem ist nicht der 
Sensor, sondern deine Software, die den auswerten soll.

Wie liest du den Sensor in deiner SW ein? Pollen? Interrupt? 
Capture-Unit?,...

von Thomas (Gast)


Lesenswert?

rob_gold schrieb:
> Ja.
Und ab welche Pulslänge erkennt dein (unbekanntes) Multimeter ein 
Minimum richtig?

von Georg A. (georga)


Lesenswert?

> Bekommt der Lüfter keine Versorgungsspannung, ist bei sehr vielen
> Modellen auch der Speed-Ausgang unbrauchbar.

Eigentlich bei allen, weil der Open-Drain/C-Ausgang vom Motor-IC aus 
angesteuert wird. Einen zweiten Hallsensor baut da keiner ein, und 
selbst wenn, bräuchte der auch eine Stromversorgung...

> Das Problem mit dem unbrauchbaren Speed-Signal hast Du
> übrigens bei vielen Lüftern auch wenn Du direkt PWM an den Lüfter
> anlegst um die Geschwindigkeit zu reduzieren.

Das macht man auch nicht, weil der Lüfter dann deutliche PWM-Geräusche 
produziert. Entweder lautes "Rappeln" bei langsamer PWM oder Gepfeife 
bei schneller. Bei ganz schneller PWM geht gar nix mehr vernünftig. Wenn 
der Lüfter keinen extra PWM-Eingang hat (also diese "neuen" 4poligen 
Stecker), dann ist Gleichspannungssteuerung das einzige, was wirklich 
taugt. Die Gleichspannung kann man aber über eine PWM mit 
nachgeschaltetem Filter (Diode, Spule, C, halt wie beim Buckregler) sehr 
einfach und verlustfrei erzeugen.

BTW: Bei niedriger Versorgungsspannung (<3V) wird der Drehzahlsensor 
übrigens auch nutzlos, weil es zu starke Rückwirkungen mit der 
Ansteuerung gibt. Da kann es passieren, dass der Motor nicht dreht, man 
aber trotzdem eine scheinbar vernünftige (hohe) Drehzahl misst.

von Michael H. (michael_h45)


Lesenswert?

rob_gold schrieb:
> if (PINC & ( 1 << PC3 )) {-die besagte LED wird dauerhaft
> eingeschaltet-}

DAS passt aber ganz und gar nicht zu:

rob_gold schrieb:
> Wird an den Pin 5V angelegt, passiert nichts. Legt man 1V an oder den
> Pin auf GND, wird die Kontroll-LED getriggert und leuchtet.

...

von Jens (Gast)


Lesenswert?

Hallo!

> ich will das Speed-Signal eines Lüfters mit einem uC auswerten.

Handelt es sich dabei um einen PC Lüfter? Wenn ja, dann kannst Du das 
Tachosignal direkt auf den Mµ Pin legen und den internen Pull-Up 
Widerstand verwenden – fertig.

> Vielleicht ist auch mit der Speed-Ausgabe des Lüfters irgendwas nicht
> in Ordnung, kann man das irgendwie testen???

Ja, ganz einfach mit einer LED. Einfach eine LED (mit Vorwiderstand) 
zwischen Vdd vom Lüfter und dem Tachosignal anschließen. Wenn der Lüfter 
dreht blinkt die LED. Wenn Dir das blinken zu schnell ist, dann kannst 
Du den Lüfter auch von Hand abbremsen, dann wird das blinken auch 
langsamer...

von Michael H. (michael_h45)


Lesenswert?

hast du den thread überhaupt ganz gelesen?

von rob_gold (Gast)


Lesenswert?

Hallo,

Danke für die vielen, vielen Antworten!!!



Noch mal zur Erklärung:
Der uC soll nur feststellen, ob ein Speed Signal vorliegt.

Die Frequenz des Speed Signals muss nicht weiter ausgewertet werden.
Stromausfall am Lüfter wird auf eine andere Weise detektiert.

Der Lüfter wird übrigens nicht mit PWM sondern mit konstanten 12V 
betrieben.



Das Speed Signal selber soll durch diese Abfrage per Pollen detektiert 
werden.
1
if (PINC & ( 1 << PC3 )) {-LED wird dauerhaft eingeschaltet-}
Michael meint weiter oben, dass hier ein Fehler liegen könnte, werde das 
gleich mal checken.



Schlumpf schrieb:
> Was für eine Signalform soll denn dieser Speedsensor ausgeben?
> Einen Rechteck, vermute ich mal.

Ja, genau.



Jens schrieb:
> Ja, ganz einfach mit einer LED. Einfach eine LED (mit Vorwiderstand)
> zwischen Vdd vom Lüfter und dem Tachosignal anschließen. Wenn der Lüfter
> dreht blinkt die LED.

Danke, habe es eben so getestet:

+12V
|
10k
|
LED
|
Speed-Sign.-Anschluss (open C)

Die LED blinkt im Takt der Lüfterdrehung, der Lüfter + 
Speed-Sensorausgang ist wohl hardwaremäßig ok.

von Jens (Gast)


Lesenswert?

Hallo!

> Stromausfall am Lüfter wird auf eine andere Weise detektiert..............
> Die LED blinkt im Takt der Lüfterdrehung, der Lüfter + Speed-Sensorausgang
> ist wohl hardwaremäßig ok.

Mal eine ganz andere Frage, hängt am Tachosignal vielleicht noch 
irgendetwas anderes dran z.B. das MoBo (und die Test LED muss da dann 
auch wieder weck)? Also versuchst Du das Signal nur „an zu zapfen“? Wenn 
ja, damit hatte ich auch schon mal Probleme. Da hilft nur das 
Tachosignal direkt auf den Mµ zu legen und dann einen Mµ Port opfern und 
da das Signal wieder ausgeben (z.B. weiter zum MoBo).

von rob_gold (Gast)


Lesenswert?

Jens schrieb:
> Mal eine ganz andere Frage, hängt am Tachosignal vielleicht noch
> irgendetwas anderes dran z.B. das MoBo

Nein, leider nicht.

von Schlumpf (Gast)


Lesenswert?

Ich vermute einen Software-Fehler.

Wenn du pollst, bleibst du dann an der Stelle im Programm stehen, bis du 
ein Low gesehen hast, oder schaust du an der Stelle nur ab und zu mal 
vorbei und ziehst eine "Probe" aus dem Signal.

Als du den Test mit der LED gemacht hast, wie war das da bei einer 
Umdrehung?
Halbe Umdrehung "an", halbe Umdrehung "aus"?
Oder fast die komplette umdrehung "aus" und nur ganz kurz "an"?
Oder Pro Umdrehung mehrfach "an" und "aus"?

von Michael H. (michael_h45)


Lesenswert?

Michael H. schrieb:
> rob_gold schrieb:
>> if (PINC & ( 1 << PC3 )) {-die besagte LED wird dauerhaft
>> eingeschaltet-}
>
> DAS passt aber ganz und gar nicht zu:
>
> rob_gold schrieb:
>> Wird an den Pin 5V angelegt, passiert nichts. Legt man 1V an oder den
>> Pin auf GND, wird die Kontroll-LED getriggert und leuchtet.
>
> ...

...

von rob_gold (Gast)


Lesenswert?

Michael H. schrieb:
>>> if (PINC & ( 1 << PC3 )) {-die besagte LED wird dauerhaft
>>> eingeschaltet-}
>>
>> DAS passt aber ganz und gar nicht zu:
>>
>> rob_gold schrieb:
>>> Wird an den Pin 5V angelegt, passiert nichts.

Das stimmt, da muss mir ein Übertragungsfehler unterlaufen sein 
(Programmierrechner hat leider kein Internet).



Schlumpf schrieb:
> Als du den Test mit der LED gemacht hast, wie war das da bei einer
> Umdrehung?
> Halbe Umdrehung "an", halbe Umdrehung "aus"?
> Oder fast die komplette umdrehung "aus" und nur ganz kurz "an"?
> Oder Pro Umdrehung mehrfach "an" und "aus"?

Der Lüfter hat eine Art Abschaltautomatik, wenn er zu stark gebremst 
wird, bleibt er stehen (die LED ist dann aus). Dann wartet er ein paar 
Sekunden und dreht dann wieder an.

Pro *zig geschätzter Umdrehungen gibt er einen Puls (ca.40Hz bei +12V, 
max. Drehzahl). Das Tastverhältnis beträgt optisch geschätzt 50% (das 
Multimeter zeigt einen Duty Cycle von 50,8% an).


Ich schreibe jetzt mal ein kleines Test-Unterprogramm nur zur 
Speed-Signalerkennung und poste es dann hier.

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.