PC-Lüfter ansteuern

Begonnen von Takeshi, 29. April 2024, 13:41:30

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Takeshi

Ich möchte einen PC-Lüfter mit einer eigenen Schaltung mit Mikrocontroller ansteuern. Aber ich finde erstaunlich wenig Informationen darüber, wie genau das PWM-Signal aussehen muss und wie das Tacho-Signal zu interpretieren ist. Weiß da einer was?

Zunächst zum PWM-Signal: Auf einer Seite habe ich gefunden, dass jemand mit einem Arduino eine PWM mit 3,3 V auf den Pin gegeben hat, Frequenz unbekannt. Im PC gemessen sind es aber 5 V mit 25 kHz. Möglicherweise interpretieren einige Lüfter auch 3,3 V schon als High und deshalb ging es da, aber das sagt einem natürlich auch kein Lüfterhersteller. Oder der Lüfter erzeugt selbst 3,3 oder auch 5 V und ich muss mit einem Open-Drain-Ausgang da drauf? Zur Frequenz konnte ich echt gar nichts finden.
Und wird mit dem Einschaltverhältnis einfach 1:1 die 12 V geschaltet, oder regelt der Lüfter mit einer internen Regelung die Drehzahl entsprechend dm Einschaltverhältnis und der eigenen maximalen Drehzahl?

Zum Tacho-Signal: Das hatte rund 25 Hz und ebenfalls einen Pegel von 5 V und einem ungefähren Einschaltverhältnis von 50 %. Spätestens hier wird es kritisch, wenn das aus dem Lüfter herauskommt und ich das auf einen Mikrocontroller mit 3,3 V gebe und der Eingang nicht 5-V-tolerant ist. Ich werde das sicherheitshalber herunterteilen.
Wird die Drehzahl über die Frequenz übermittelt? heißt das, der drehte bei mir 25 Umdrehungen pro Sekunde? Das wäre zumindest am logischsten.

Vermutlich werde ich einfach eine Menge ausprobieren müssen, um das wirklich zu verstehen, das sehe ich schon kommen.

Takeshi

Da ich keine Antwort gefunden habe, habe ich eben selbst ein wenig probiert, angesteuert und gemessen. Dazu verwendet habe ich einen Lüfter von be quiet!, den "Pure Wings 2" (BL039). Ob andere Lüfter sich identisch verhalten, weiß ich nicht.

Tacho-Signal

Zunächst einmal das Tacho-Signal. Der Lüfter ist mit 1500 rpm angegeben.

Ohne externe Beschaltung hat der Pin gar kein Signal. Mit einem Pull-Up-Widerstand ist es dann da. Die Amplitude ergibt sich logischerweise durch den Pull-Up-Widerstand. Der Tastgrad ist immer 50 %, die Frequenz variiert mit der Drehzahl. Bei voller Drehzahl hat das Signal 48,3 Hz. Das entspricht 2900 Pulsen pro Minute. Ich nehme also an, die halbe Frequenz des Signals entspricht der Drehzahl des Lüfters. Weil dieser Lüfter kein Signal aktiv ausgibt, der Lüfter aber garantiert den Standards entspricht, muss auf dem Mainboard ein Pull-Up gefordert sein, selbst wenn andere Lüfter aktiv ein Signal ausgeben sollten. Ob eine Amplitude von 12 V erlaubt ist, keine Ahnung. Aber 5 V scheinen möglich zu sein (das macht mein Mainboard). Darunter geht so gut wie alles, weil der Lüfter ja einen Open-Drain-Ausgang hat und der nahe 0 V herunterkommen wird.

PWM-Eingang

Am PWM-Anschluss liegt ohne externe Beschaltung eine DC-Spannung von 2,8 V an. Diese doch sehr unübliche Spannung in Zusammenhang mit der vorherigen Erfahrung mit dem Tacho-Signal ging ich sofort davon aus, dass hier ebenfalls mit einem Pull-Up und Open-Drain-Ausgang gearbeitet wird und das daher auch so umgesetzt, mit dem Ergebnis, es funktioniert wie erwartet. Damit ist aber noch nicht sicher geklärt, wie der PWM-Anschluss wirklich angesteuert werden muss, auch wenn das für den ein oder anderen an der Stelle schon eine klare Sache wäre. Am PC beträgt die Amplitude nämlich ebenfalls 5 V. Es könnte sein, dass der Lüfter den Mittelwert der Spannung bildet, der Mittelwert zwischen 0 und 5 V schwanken kann und einer Ansteuerung von 0 bis 100 % entspricht. Dann wären die 2,8 V nur 56 %.

Dass der Lüfter einen Pegel von 5 V toleriert, hat mir das Mainboard schon gezeigt. Also habe ich mir das Tacho-Signal und den Eingangsstrom angeschaut, dann auf den PWM-Eingang eine Gleichspannung gegeben und die Spannung zwischen 3 V und 5 V variiert. Keine Änderung im Eingangsstrom, keine Änderung im Tacho-Signal und von der direkten Wahrnehmung her drehte der Lüfter auch nicht schneller. Also passiert bei einer DC-Spannung über den 2,8 V gar nichts. Unter 2,8 V passiert auch erst einmal nichts, bis auf 1,2 V. Dann sinkt die Drehzahl rapide auf 350 Umdrehungen pro Minute ab. Ab 1,5 V geht sie wieder auf 1450 hoch. Der Eingang lässt sich also nicht mit einer Gleichspannung ansteuern, sondern deutet das Signal als PWM mit variabler Amplitude und einem Tastgrad von 0 und 100 %.

Als Nächstes folgte ein Test mit PWM mit 1 kHz direkt auf dem Pin. Bei einem Tastgrad von 60 % beträgt die Tacho-Frequenz 31 Hz (930 rpm), unabhängig von der Amplitude der PWM. Von 0 bis 23 % dreht der Lüfter mit 350 rpm, danach steigt die Geschwindigkeit bis 98 % an, danach macht er die volle Drehzahl. Der Lüfter reagiert bereits auf Frquenzen ab 15 Hz, bei 1 MHz habe ich aufgehört, weil selbst das schon sinnfrei wäre. Ich würde irgendwas von 1 bis 10 kHz nehmen.

Der Eingangsstrom hat immer eine Frequenz von 22 kHz überlagert, heißt der Lüfter wird intern mit 22 kHz angesteuert und nicht mit dem PWM-Signal. Das IC im Lüfter wertet ergo den Tastgrad der PWM aus und steuert

Ich nehme also an, es muss erlaubt sein, den PWM-Eingang des Lüfter aktiv anzusteuern (Push-Pull-Ausgang). Vermutlich ist aber auch eine Ansteuerung nur mit einem Open-Drain-Ausgang in der Spezifikation vorgesehen. Das würde zum Tacho-Signal passen und ergibt auch dahingehend Sinn, dass die Ansteuerung unabhängig vom Spannungspegel ist. Es ist egal, ob die ICs mit 5 V, 3,3 V oder sogar nur 1,8 V arbeiten, sie müssen lediglich intern einen MOSFET schalten. Wie, das ist dem Lüfter egal. Wahrscheinlich schalteten die Lüfter drüher den Motor direkt mit der angelegten PWM. Weil nicht alle MOSFETs bei 3,3 V schalten, aber bei 5 V eigentlich schon, ist für eine aktive Ansteuerung wahrscheinlich ein Pegel von 5 V vorgesehen.

Also kurz zusammengefasst: Ansteuerung direkt mit PWM definitiv möglich, mit 5 V auf jeden Fall, mit 3,3 V vermutlich bei jedem aktuellen Lüfter, wenn das nicht sogar im Bereich der Spezifikation ist. Über Open-Drain geht wahrscheinlich auch immer, aber darauf würde ich mich nicht verlassen.

Anakin94

Viel Input, ich fand es aber richtig interessant zu lesen.
Danke jedenfalls. :)
SCPH-102 - OneChip Stealth + NTSC Fix
SCPH-102 PM-41(2) - OneChip Standard
SCPH-30004 V3 - Matrix Infinity v1.93 (Blue Dot)
SCPH-30004 V4 - Matrix Infinity v1.93 (Green Dot)
SCPH-30004R V6? - FMCB v1.965re
SCPH-50004 V10 - Romeo-Fix @5V + Crystal 1.2
SCPH-70004a V12 (EG+GS) - SubZero Fix - Modbo 750 v1.99 (2021)
SCPH-70004b V13 (EE+GS) - Matrix Infinity v1.93 (Green Dot)
SCPH-70004b V13 (EE+GS) - Modbo 760 v1.93 mit Z (2009)
SCPH-90004a V17a 8B
SCPH-90004a V17b 8C 2.20
SCPH-90004a V17b 8C 2.30 - MechaPwn
SCPH-90004a V17c 9C - Mars Pro GM-806HD