Forum: Analoge Elektronik und Schaltungstechnik Wie funktioniert die Ansteuerung von PWM (4-Pin) PC-Lüftern?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


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!

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Vor 20 Jahren hat Intel es klar definiert. Was heute verkauft wird, 
wurde vielleicht "optimiert"...

von Michael B. (laberkopp)


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

von Rüdiger B. (rbruns)


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.

von Udo S. (urschmitt)


Lesenswert?

Rüdiger B. schrieb:
> Rechteckwelle

Klingt stark nach KI Antwort.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


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?

: Bearbeitet durch User
von Jens M. (schuchkleisser)


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.

von Soul E. (soul_eye)


Lesenswert?

Ben B. schrieb:
> (...) Heißt ich muss das PWM-Signal mit einem Transistor
> invertieren, keine Lust auf 5/12V am GPIO des ESP32.

Wenn es preiswert sein soll, reicht eine Diode zum 
open-collectorisieren. Der Pullup ist ja im Lüfter.

von Jens M. (schuchkleisser)


Lesenswert?

Soul E. schrieb:
> Wenn es preiswert sein soll, reicht eine Diode zum
> open-collectorisieren.

Das mal mir mal bitte auf.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


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.

von Soul E. (soul_eye)


Lesenswert?

Jens M. schrieb:
> Soul E. schrieb:
>> Wenn es preiswert sein soll, reicht eine Diode zum
>> open-collectorisieren.
>
> Das mal mir mal bitte auf.
1
                  --------
2
                  |
3
                  R
4
                  R
5
                  |
6
ESP ---|<---------+---- Lüfter

Der Pullup-Widerstand ist zum Verständnis mit eingezeichnet, befindet 
sich aber im Lüfter und muß nicht separat bestückt werden.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Das löst aber nicht das Problem, daß der Lüfter u.U. 5 oder 12V mit ein 
paar mA an den GPIO eines 3,3V Controllers anlegt... Ich weiß nicht ob 
der ESP32 das so toll findet.

von Clemens L. (c_l)


Angehängte Dateien:

Lesenswert?

Ben B. schrieb:
> Heißt ich muss das PWM-Signal mit einem Transistor invertieren

Geht auch nicht-invertierend, und auch in die andere Richtung (dann 
braucht der MC-Eingang einen Pullup).

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


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).

von Stefan R. (stefan_r_bs)


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?

von Vanye R. (vanye_rijan)


Lesenswert?

> Hängt vom Lüfter ab.

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.

Vanye

von Michael B. (laberkopp)


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.

von Veit D. (devil-elec)


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.

von Michael B. (laberkopp)


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.

: Bearbeitet durch User
von Soul E. (soul_eye)


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.

: Bearbeitet durch User
von Vanye R. (vanye_rijan)


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

von Tilo R. (joey5337) Benutzerseite


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?

von Jens M. (schuchkleisser)


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.

von Michael B. (laberkopp)


Lesenswert?

Jens M. schrieb:
> weil
> die Temperatursteuerung den Lüfter anhält (anhalten kann), aber die
> Lüfterüberwachung weiß das nicht.

Offensichtlich Programmiererpfusch.

Jens M. schrieb:
> sollte man die Möglichkeit vorsehen,
> Gigabyte z.B. ermöglicht das

Besser wäre es, wenn die vernünftig programmieren würden.

von 1N 4. (1n4148)


Lesenswert?

Arctic 120mm, PWM & Tacho direkt an ESP/ESP32 funktioniert seit Jahren 
problemlos.

von Jens M. (schuchkleisser)


Lesenswert?

Michael B. schrieb:
> Offensichtlich Programmiererpfusch

Ja ach.
Die wenigsten Leute die an der Herstellung eines beliebigen Geräts 
beteiligt sind nutzen es selber.
Daher findet man fast immer an einem beliebigen irgendwann ein "oh 
jesses wer war denn so dämlich?"

von Vanye R. (vanye_rijan)


Angehängte Dateien:

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

von Veit D. (devil-elec)


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?

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.