Mein Server-Rack hatte bisher nur eine Gruppen PC-Lüfter (Exhaust), welche über einen manuellen Spannungsregler auf eine fixe Drehzahl eingestellt waren. Das hat zwar funktioniert, aber entweder war es zu laut oder das Rack wurde zu warm - Zeit für eine richtige Regelung.
Als Basis für den Rack Fan Controller dient ein Raspberry Pi Pico W mit MicroPython, welcher vier Noctua-Lüfter (2x Intake, 2x Exhaust) über Hardware-PWM mit 25kHz ansteuert - hoch genug, damit das Schalten der Lüfter nicht hörbar wird. Zwei DS18B20 1-Wire Temperatursensoren messen die Temperatur im Rack sowie die Raumtemperatur, wobei aktuell nur der Rack-Sensor die Regelung beeinflusst.
Die Regelung selbst ist eine lineare Rampe zwischen einer Minimal- und einer Maximaltemperatur, wobei jede Lüftergruppe ihren eigenen Minimal-/Maximal-Duty-Cycle definieren kann - so bleibt der Exhaust zum Beispiel etwas leiser als der Intake. Damit die Lüfter nicht bei jeder kleinen Temperaturschwankung ständig hoch- und runterregeln, ist eine asymmetrische Hysterese eingebaut: Steigt die Temperatur, wird die Drehzahl sofort angepasst, sinkt sie wieder, muss sie zuerst einen gewissen Schwellwert unterschreiten, bevor die Lüfter wieder leiser werden.
Die aktuellen Werte werden per MQTT publiziert und stehen zusätzlich über ein kleines Webinterface direkt am Controller zur Verfügung. Fällt WLAN oder MQTT mal aus, regelt der Controller trotzdem eigenständig weiter - dafür ist extra gesorgt.
Für den Anschluss der Lüfter musste natürlich gelötet werden, und für das fertige Modul habe ich ein passendes Gehäuse designt und gedruckt, welches ich auf Printables hochgeladen habe. Für die Verkabelung der PWM-Lüfter mit dem Steckbrett während der Entwicklung kam übrigens dieser praktische PWM 3-/4-Pin Adapter zum Einsatz. Den ganzen Code inklusive Doku zur Verkabelung gibt es wie immer auf GitHub.
Impressionen
Der Fan Controller wurden am 26. Juli 2026 fertiggestellt.

