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?
rob_gold schrieb: > Speedsensor-Ausgang den Pin nur auf ca. 2,5V > herunterzieht. Wie hast du das gemessen?
> 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 ?
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.
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?
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 ... ???
Mit 1k oder 120k als Pullup (in dem Falle extern) funktioniert es übrigens auch nicht.
Kann es vielleicht sein, dass dein uC-Pin nicht auf Input, sondern auf Output konfiguriert ist?
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.
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)?
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.)
rob_gold schrieb: > Was wäre denn Deiner Meinung nach der beste Wert für den Pullup-R dein problem liegt nicht am pullup.
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?
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.
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???
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.
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?,...
rob_gold schrieb: > Ja. Und ab welche Pulslänge erkennt dein (unbekanntes) Multimeter ein Minimum richtig?
> 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.
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. ...
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...
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.
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).
Jens schrieb: > Mal eine ganz andere Frage, hängt am Tachosignal vielleicht noch > irgendetwas anderes dran z.B. das MoBo Nein, leider nicht.
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"?
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. > > ... ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.