Wie funktioniert die Ansteuerung von PWM (4-Pin) PC-Lüftern?

(Firma: Funkenflug Industries) #7883287
Lesenswert?

Einfache Frage, aber die Suche gestaltet sich schwierig.

Ich möchte einfach nur einen 12V PC-Lüfter mit PWM-Eingang (4pol) mit einem ESP32 steuern und überwachen (Drehzahlüberwachung mittels Tachosignal).

Bei der Suche nach Spezifikationen findet man alles, nur nicht das, was man haben möchte. Ich möchte keine PWM auf der Versorgungsspannung erzeugen, ich will auch keinen der millionenfach angebotenen Lüfter kaufen... ich möchte einfach nur wissen, ob man die PWM aus dem GPIO eines ESP32 mit 3,3V direkt auf den PWM-Eingang des Lüfters legen darf und wie das Tachosignal aussieht, kann man das mit einem GPIO des ESP32 direkt auswerten oder braucht man dafür noch eine Hilfsbeschaltung.

Im Forum gab es ein paar Threads zu dem Thema, aber wie üblich sind die alle zu alt und die URLs zu den Dokumenten nicht mehr gültig.

Ich hoffe, für einen der Anwesenden ist das super einfach oder jemand hat die Spezifikationen auf der Platte zu liegen, darüber würde ich mich freuen.

Danke!

#7883294
Lesenswert?

Ben B. schrieb:

ich möchte einfach nur wissen, ob man die PWM aus dem GPIO eines ESP32 mit 3,3V direkt auf den PWM-Eingang des Lüfters legen darf

Nein

und wie das Tachosignal aussieht,

Bei beuden Leitungen wird auf Ausgangsseite ein ach Masse schaltender Transistor 'open collector' erwartet und auf Eingangsseite ein pull up zum gewünschten high Pegel. Der Lüfter zieht maximal bis 5.25V hoch, der Tachosusgang verträgt maximal 12.6V

Zudem spielt die PWM Frequenz eine Rolle

Das ist der Standard: https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/intel-4wire-pwm-fans-specs.pdf

#7883295
Lesenswert?

Pulsweitenmodulation

Pulsweitenmodulation (PWM) ist eine gängige Methode zur Steuerung von Computerlüftern. Ein PWM-fähiger Lüfter wird üblicherweise an einen 4-poligen Stecker angeschlossen (Pinbelegung: Masse, +12 V, Sense, Steuerung). Der Sense-Pin dient zur Weiterleitung der Lüfterdrehzahl, der Steuerungs-Pin ist ein Open-Drain- oder Open-Collector-Ausgang, der einen Pull-up auf 5 V bzw. 3,3 V im Lüfter erfordert. Im Gegensatz zur linearen Spannungsregelung, bei der die Lüfterspannung proportional zur Drehzahl ist, wird der Lüfter mit einer konstanten Versorgungsspannung betrieben; die Drehzahlregelung erfolgt durch den Lüfter anhand des Steuersignals.

Das Steuersignal ist eine Rechteckwelle mit 25 kHz, wobei der Tastgrad die Lüfterdrehzahl bestimmt. 25 kHz wird verwendet, um die Lautstärke des Signals über den menschlichen Hörbereich anzuheben; eine niedrigere Frequenz könnte ein hörbares Summen oder Heulen erzeugen. Typischerweise kann ein Lüfter mit einem Signal mit bis zu 100 % Tastgrad zwischen etwa 30 % und 100 % der Nenndrehzahl betrieben werden. Das genaue Drehzahlverhalten bei niedrigen Regelstufen (linear, Aus bis zu einem Schwellenwert oder Mindestdrehzahl bis zu einem Schwellenwert) ist herstellerabhängig. [ 9 ]

Viele Motherboards verfügen über Firmware und Software, die diese Lüfter basierend auf der Temperatur des Prozessors und des Computergehäuses regelt.

(Firma: Funkenflug Industries) #7883337
Lesenswert?

Das ist der Standard: [..]

Danke, danach hatte ich gesucht.

Also zwei open collector Ausgänge, einmal in Richtung Controller für das Tachosignal und einmal mit 5/12V PullUp seitens des Lüfters für das PWM-Signal. Heißt ich muss das PWM-Signal mit einem Transistor invertieren, keine Lust auf 5/12V am GPIO des ESP32.

Weiß jemand, ob die Lüfter bei weniger als 20% Tastverhältnis stoppen? Oder muss man zum Stoppen des Lüfters die Betriebsspannung abschalten?

#7883346
Lesenswert?

Ben B. schrieb:

Weiß jemand, ob die Lüfter bei weniger als 20% Tastverhältnis stoppen?

Hängt vom Lüfter ab. Manche gehen auf Stop unter einem bestimmten Wert, manche gehen auf Failsafe und laufen mit einer bestimmten Drehzahl ohne PWM (Langsam, mittel oder Vollgas, je nach Laune). Es gibt auch welche, die brauchen <10% zum stoppen, aber bei 0% laufen sie wieder an, wegen "da ist ein Kabel ab, besser ein bissel propellen als gar nix".

Nach oben ist es übrigens ähnlich, oft wird die volle Drehzahl schon (weit) vor 100% erreicht.

(Firma: Funkenflug Industries) #7883418
Lesenswert?

Ich überlege gerade ob ich das als Kaskode-Schaltung mit dem ESP baue, die würde das Signal nicht invertieren, aber ggf. den Anschluss nicht weit genug herunterziehen. Ob invertiert oder nicht spielt keine Rolle, es ist egal ob ich einen Wert 0..100% oder 100..0% berechnen muss.

Wenn manche Lüfte Vollgas schon weit vor 100% erreichen, dann werde ich das sowieso adaptiv probieren. Oder ich regle das Ding auf eine Solldrehzahl.

Ich muss nur noch rauskriegen, wie ich mit dem ESP32 eine genau laufende Zeitbasis hinkriege und Impulse an einem Pin zähle. Mit einem AVR kein Problem, mit dem ESP32/Arduino Neuland.

(Firma: Funkenflug Industries) #7883437
Lesenswert?

Das ist die angedachte Kaskode-Variante.

Das Tachosignal stellt der Lüfter über einen open collector Ausgang zur Verfügung. Da müsste eigentlich ein 3,3V GPIO mit internem PullUp ausreichen, das probiere ich auf jeden Fall erstmal aus (falls ich das in Arduino-Sprech hinkriege).

#7884043
Lesenswert?

Mal ein Danke für bauformbs und laberkopps Hinweise auf die Intel-Spezifikation! Kleines Dokument bringt mehr Klarheit als 1000 Suchmaschinen-Ergebnisse...

Ein Gedanke: Was, wenn man den PWM-Pin einfach mit 1.5k Ohm in Richtung Masse zieht? (Dass er offen max. 5.25 V liefert und kurzgeschlossen max. 5 mA, deutet ja auf einen internen 1k-Pullup-Widerstand hin.) Dann wären es nur noch < 3.3 V und der GPIO sollte auf jeden Fall sicher sein. Sofern der Lüfter das dann immernoch als "High" wertet, wäre das Problem gelöst.

Gangbarer Weg? Oder Vatertags-Schnappsidee? Übersehe ich was?

#7884070
Lesenswert?

Vanye R. schrieb:

Endlich spricht es mal einer aus. :-D Mein Mainboard hat dafuer extra einen Menuepunkt um die Kennlinie des Luefters zu kalibrieren/lernen. Weil es nur so einen vernuenftigen/leisen aber ausreichenden Betrieb sicherstellen kann.

Eigentlich ist die Kennlinie (so lange monoton steigend) vollkommen egal so lange der Lüfter Teil einer Regelstrecke ist mit Istwert per Temperatursensor, dann dreht er immer so hoch wie nötig aber nicht schneller um die Temperatur zu halten, trotz unterschiedlicher Umgebungstemperatur und eben auch bei anderer Kennlinie.

Aber schön dass du für ein nutzloses Werbefeature deines PC mehr Geld ausgegeben hast und dich darüber freust.

#7884101
Lesenswert?

Michael B. schrieb:

Eigentlich ist die Kennlinie (so lange monoton steigend) vollkommen egal so lange der Lüfter Teil einer Regelstrecke ist mit Istwert per Temperatursensor, dann dreht er immer so hoch wie nötig aber nicht schneller um die Temperatur zu halten, trotz unterschiedlicher Umgebungstemperatur und eben auch bei anderer Kennlinie.

Aber schön dass du für ein nutzloses Werbefeature deines PC mehr Geld ausgegeben hast und dich darüber freust.

Das ist totaler Unsinn was du schreibst. Welcher Lüfter hat eingebaute Temperatursensoren? Mir fallen nur paar spezielle Papstlüfter ein. Alle Standard PC Lüfter haben keinen. Auch Intel CPU Boxed Lüfter nicht. Die CPU Temp. wird in der CPU gemessen und auf dem Mainboard sind je nach Ausstattung weitere Temperatursensoren verteilt bzw. Anschlüsse für ansteckbare Sensoren. Im Bios stellt man ein mit welcher Drehzahl welcher Lüfter bei welcher Temperatur drehen soll. Das ist kein nutzloses Werbefeature.

#7884108
Lesenswert?

Veit D. schrieb:

Das ist totaler Unsinn was du schreibst. Welcher Lüfter hat eingebaute Temperatursensoren?

Was ist an

Veit D. schrieb:

so lange der Lüfter Teil einer Regelstrecke ist mit Istwert per Temperatursensor

so schwer zu verstehen ? Der Temperatursensor muss nicht im Lüfter sitzen. Aber wozu ist der Lüfter per PWM in der Drehzahl regelbar, wenn ihn keiner regelt ? Es wird das Mainboard sein, das aus dem Temperatursensorsignal die PWM für den Lüfter regelt. PID oder so.

Aver ich beginne zu verstehen, warum du nix verstehst

Veit D. schrieb:

Im Bios stellt man ein mit welcher Drehzahl welcher Lüfter bei welcher Temperatur drehen soll.

Komplett unsinnig. Das wäre nur ein Stell- und kein Regelalgorithmus.

#7884126
Lesenswert?

Veit D. schrieb:

Das ist totaler Unsinn was du schreibst. Welcher Lüfter hat eingebaute Temperatursensoren? Mir fallen nur paar spezielle Papstlüfter ein. Alle Standard PC Lüfter haben keinen. Auch Intel CPU Boxed Lüfter nicht.

Der Temperatursensor sitzt im Prozessor. In allen aktuellen CPUs befinden sich mehrere Temperaturfühler. Ein Mikrocontroller ("Management Engine") liest die aus und steuert die Lüfter entsprechend. Das ist der oben genannte Regelkreis.

Die Lüfter werden nicht einfach an und ausgemacht wie beim Backofen, sondern die Drehzahl wird abhängig von der absoluten Temperatur und von der Differenz zwischen aktueller Temperatur und erlaubter Temperatur geregelt. Dazu nutzt man PI-Algorithmen.

#7884146
Lesenswert?

Eigentlich ist die Kennlinie (so lange monoton steigend) vollkommen egal

Nein ist sie nicht. Der Normalfall eines heutigen PCs sind ja 1-2Luefter an der CPU, einer im Netzteil, 1-2 fuer Gehaeuse und oder Chipssatz, 1-2 an der Grafikkarte. Im Normalfall drehen die nur mit ihrer Mindestdrehzahl weil ein PC kaum noch Abwaerme erzeugt. Mein Rechner ist in diesem Moment z.B unhoerbar weil ich ja nur all paar Millisekunden einen Buchstaben druecke. Das geht wegen diesem Aufwand. Bei hoeherer Leistung geht das ganze in den Regelungsbetrieb, da waere dein Einwand korrekt wenn es nur einen Luefter gaebe. Es gibt aber mehrere die idealerweise zumindest halbwegs gleichmaessig hoch fahren sollten damit ein brauchbarer Luftstrom gewaehrleistet ist und man nicht nur eine billige Radaukiste da stehen hat.

Vanye

Persönliche Seite #7884147
Lesenswert?

Imho gibt es zur Ansteuerung nur 2 sinnvolle Möglichkeiten:

  1. direkt an den ESP anschließen. Kein Bauteil, aber das bereits erwähnte Risiko, dass der Strom vom Lüfter dem ESP nicht gefällt. Ich habe jetzt etliche ESP-Datenblätter durchsucht und dort keine Spezifikation möglicher Schutzdioden gefunden. Maximale Spannung ist Vdd+0,3V. Selbst wenn der ESP Schutzdioden hat, müsste man sicher stellen, dass die bis zu 5mA sicher verbraucht werden. Imho fachlich falsch und riskant, aber Versuch macht klug.

  2. Man spendiert ein Bauteil. Das ist dann ein N-Fet in Source-Schaltung, die Invertierung korrigiert man in Software.

Alle anderen Varianten (Diode, Kaskode, Widerstand...) funktionieren nicht unbedingt nach Spezifikation, aber vermutlich trotzdem. Sie brauchen aber alle mindestens ein Bauteil und Platinenfläche. Warum dann nicht gleich Variante 2 nehmen?

#7884217
Lesenswert?

Michael B. schrieb:

Aber schön dass du für ein nutzloses Werbefeature deines PC mehr Geld ausgegeben hast und dich darüber freust.

Es macht schon Sinn, wenn man Tempertur und PWM-Werte beeinflussen kann, denn es kann sonst zum Lüfterpumpen kommen. Und auch in diesem Fall mit dem ESP sollte man die Möglichkeit vorsehen, MinPWM, MinTemp, MaxPWM und MaxTemp vorzugeben. Der Lüfter sieht nie weniger als MinPWM, ab MinTemp steigt der PWM-Wert linear bis MaxTemp auf MaxPWM an. Je nach Prozess sollte es noch eine Übertemperaturabschaltung geben, für den Fall das MaxPWM nicht genug Kühlleistung erzeugt.

Gigabyte z.B. ermöglicht das, und das ist teilweise auch notwendig, weil die Temperatursteuerung den Lüfter anhält (anhalten kann), aber die Lüfterüberwachung weiß das nicht. Ergebnis: die ersten Minuten ist der PC an sich totenstill, da CPU unter 35°, aber es kräht ganz erbärmlich weil "Alarm, die Propeller tuns nicht". Durch die fehlende Drehzahl wird im Regler irgendein Wert maximiert, sobald die Temperatur bzw. das resultierende PWM den Lüfteranlaufwert erreicht schlägt dieser Wert zu und die Lüfter gehen alle von jetzt auf gleich auf Vollgas, die Temperatur ist aber so gerade eben an der man-merkt-das-der-Kasten-an-ist-Grenze. Also regeln alle Propeller wieder runter, teilweise wieder in den Stillstand, mit alarm. Das kann sich auch ein paar mal wiederholen. Dann stabilisiert sich die Temperatur und der Rechner rauscht leise vor sich hin, alles ok.

Ist total klasse, wenn im Büro der Tag anfängt mit 5 Minuten brääääp brääääp brääääp brääääp, dann in wooooosch brääääp brääääp wooooosch brääääp brääääp brääääp übergeht und über woooosch brääääp woooosch zum shhhhhhhhhhh wird. Kurz im BIOS MinPWM auf 20% gestellt, MinTemp auf 40°, und die Mühle ist von Anfang an leise, für den ganzen Tag.

#7884367
Lesenswert?

Daher findet man fast immer an einem beliebigen irgendwann ein "oh jesses wer war denn so dämlich?"

Genau! Das gilt fuer alle Geraete ausser denen von mir entwickelten. Die erfuellen alle meine Beduerfnisse. :-D

BTW: Ich weiss nicht was daran so schwierig ist so einen kleinen Luefter zu programmieren das es dafuer einen riesen Thread braucht. Ich musste das vor 10-15Jahren auch mal fuer irgendwas machen. Einfach kurz die Spec gezogen (haenge ich mal an) und kurze Zeit spaeter lief das...

Vanye

Angehängte Dateien:
#7884868
Lesenswert?

Soul E. schrieb:

Veit D. schrieb:

Das ist totaler Unsinn was du schreibst. Welcher Lüfter hat eingebaute Temperatursensoren? Mir fallen nur paar spezielle Papstlüfter ein. Alle Standard PC Lüfter haben keinen. Auch Intel CPU Boxed Lüfter nicht.

Der Temperatursensor sitzt im Prozessor. In allen aktuellen CPUs befinden sich mehrere Temperaturfühler. Ein Mikrocontroller ("Management Engine") liest die aus und steuert die Lüfter entsprechend. Das ist der oben genannte Regelkreis.

Die Lüfter werden nicht einfach an und ausgemacht wie beim Backofen, sondern die Drehzahl wird abhängig von der absoluten Temperatur und von der Differenz zwischen aktueller Temperatur und erlaubter Temperatur geregelt. Dazu nutzt man PI-Algorithmen.

Hatte ich etwas anderes geschrieben?

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