hansdampf06

Datenlogging des Tachosignals von externen 12-V-Lüftern mit RaspPi etc

Hallochen Gemeinde,

in einem Projekt soll bei mehreren spannungsgeregelten 12-V-Lüfter (3-pin) die Drehzahl kontinuierlich aufgezeichnet werden. Daher spricht alles dafür, dies mit einem Raspberry Pi oder einem vergleichbaren Einplatinencomputer oder ... zu realisieren.

Es gibt zwar ganz viele 3-pin-(PC-)Lüftersteuerungen wie beispielsweise Lamptron FC5 V2, die unabhängig von dem Einbau in einem PC betrieben werden könn(t)en. Über deren Display kann auch pro Kanal die aktuelle Drehzahl mit dem Auge abgelesen werden, aber mangels USB-/LAN-Anschluss ist das einer konstanten Datenaufzeichnung nicht zugänglich.
Ferner gibt es (PC-bezogene) Steuerungen, die auch an eine proprietäre Software (über Cloud) gebunden werden können. Aber eine Klicki-Bunti-Oberfläche wird nicht benötigt, zumal nicht ohne weiteres ersichtlich ist, inwieweit die hier interessierenden Drehzahldaten außerhalb der proprietären Software kontinuierlich aufgezeichnet werden können.
Es genügt völlig, wenn auf Systemebene über einen Gerätetreiber etc. die Daten ausgelesen und gegebenenfalls die Regelwerte für die Spannung geschrieben werden könnten.
So gibt es beispielsweise PCA9685-16-Kanal-Treiber-Boards. Diese gehen im Ansatz in die richtige Richtung. Aber beim jeweiligen Kanal kann das Tachosignal nicht ausgelesen werden, zumal mit den 3-pin-Anschlüssen pro Kanal kein Tachosignal zurückgeliefert werden kann, weil der dritte Pin das PWM-Signal an den Lüfter weitergibt. Außerdem scheinen diese Boards eher für die Ansteuerung von Servomotoren gedacht zu sein als für die Ansteuerung von bürstenlosen Motoren wie bei 3-pin-12-V-Lüftern. Mithin ist die Datenaufzeichnung über diese Boards nicht möglich.

Ein interessanter Ansatz könnte das OpenFAN-Modul mit 10 Kanälen sein. Hier sind laut der Eigenbeschreibung interessante Steuerungsmöglichkeiten gegeben. Problematisch für meinen Anwendungsfall sind einmal die Ausrichtung auf 4-pin-PWM-Lüfter, was die Ergänzung eine entsprechenden Treiberbeschaltung (Transistor/MOSFET) pro Kanal erfordern würde. Das ist mit der Situation bei den PCA9685-Boards vergleichbar, weil bei den PCA9685-Boards ohnehin zumeist noch eine Treiberbeschaltung nötig ist. Sofern mehrere Lüfter über einen Kanal angesteuert werden würden, würde dies ebenfalls eine Treiberbeschaltung für den betreffenden Kanal erforderlich machen.
Außerdem ist dieses Modul nicht skalierbar, wenn mehr als 10 Kanäle benötigt werden. Derzeit sind 18 Lüfter anzusteuern und es könnten noch ein oder zwei hinzukommen, wenngleich durchaus überlegenswert sein könnte, bei bestimmten Lüftern mehrere auf einen Kanal zu bündeln. Jedoch kann dann bekanntlich wieder nur bei einem der gebündelten Lüfter das Tachosignal erfasst werden.
Leider hat dieses Modul nur einen WiFi-Netzwerkzugang und keinen auf Drahtbasis. Die USB-Schnittstelle scheint jedenfalls nur dazu zu dienen, die Firmware-Updates aufspielen zu können, es sei denn, die API-Beschreibung meint mit dem Locally-API-Serverzugriff, dass das Modul über USB an einem Computer angeschlossen ist und auf diesem Computer der API-Server läuft. Das ist für mich nicht ganz klar verständlich. Sollte es aber doch so sein, so könnte der Computer eben auch ein RaspberryPi & Co. sein.
Gäbe es dieses Modul direkt für 3-pin-Lüfter und mit LAN-Schnittstelle, so wäre es auf den ersten Blick wohl ein Favorit.
(Zur Info: Das Modul gibt es auch in einer Mini-Ausführung für die Ansteuerung von nur einem (PWM-)Lüfter.)

Ein ähnlicher Ansatz wie das vorgenannte Modul könnte ein OCTO Fan Controller in Verbindung mit den Linux-Tools lm-sensors / fancontrol sein. Diese Tools würden ja das Datenlogging der Drehzahlen bieten. Das genaue Zusammenspiel mit dem OCTO, um die Spannung / Drehzahl zu verändern, ist für mich aber noch offen. Wahrscheinlich kommt es darauf gar nicht an, wenn stattdessen das Tool liquidctl dem ersten Anschein nach alles bieten könnte. Wegen der PWM-Auslegung der Kanäle besteht abermals der Bedarf der Treiberbeschaltung.
Die große Frage bei dem OCTO ist, ob er auch ohne die AquaComputerSuite lauffähig ist und die unmittelbare Ansteuerung der Lüfter reguliert.
Ein Vorteil des OpenFAN-Moduls scheint aber zu sein, dass es jedenfalls auch autonom als eigenständiges Netzwerkgerät betreibbar und zugreifbar wäre - wegen der WiFi-Funktion. Bei dem OCTO ist das nicht der Fall, weil es der USB-Verbindung zu einem Computer bedarf.
Dann könnte noch der deutlich höhere Preis des OCTO für das OpenFAN-Modul sprechen, wenngleich der OCTO zugleich Temperatur- und andere Sensoren unterstützt. Immerhin kann der OCTO hier in Deutschland gekauft werden. Physisch haben die beiden vergleichbare Dimensionen, die in etwa den Grundmaßen üblicher Erweiterungsplatinen für die Raspberry Pi's entsprechen.

Ferner gibt es unzählige Beschreibungen, wie mit einem Einplatinencomputer ein 3-pin-Lüfter gesteuert und das Tachosignal erfasst werden könnte. Für das Tachosignal wird ein interruptfähiger GPIO-Pin genutzt. Die Ansteuerung - insoweit meist ein einfacher Treiber mittels Transistor/MOSFET - von mehr als diesem einen Lüfter ist dann nicht oder nur eingeschränkt möglich, wenn das Tachosignal von jedem Lüfter erfasst werden soll. Infolgedessen müsste pro (wenigen) Lüfter(n) je ein Einplatinencomputer verwendet werden, was allein aus Platzgründen nicht darstellbar wäre.

Kennt jemand eine taugliche Erweiterungsplatine für RaspPi, Arduino & Co., die das Auslesen der Drehzahlen ermöglichen würde, möglichst für mehrere Kanäle / zugleich angeschlossene Lüfter?
Die Steuerung der Spannung für den/die 3-pin-Lüfter muss dabei nicht zwingend enthalten sein. Aber meinem Eindruck nach ist es eher immer so, dass die Auswertung des Tachosignals, sofern sie denn vorhanden wäre, eine Zusatzoption einer konkreten Ansteuerung ist.

Gibt es alternativ Erfahrungen mit dem OpenFAN-Modul oder dem OCTO Fan Controller?

Ist außerdem eine passende (fertige) Platine mit der nötigen Treiberbeschaltung für mehrere Kanäle (z.B. mit Treiber-IC) bekannt?

Im Hinblick auf die Skalierbarkeit für mehrere Lüfter wäre natürlich eine mehrfache Anbindung über die GPIO-Leiste oder über den I2C-Bus wohl vernünftig. Wiederum nachteilhaft - schon aus Platzgründen - wäre betreffend die Skalierbarkeit, wenn eine taugliche Erweiterungsplatine nur einen oder zwei Kanäle hätte.

Vielen Dank im Voraus für Euren Input und viele Grüße
HansDampf06

PS: Bitte beachtet, dass ein Austausch der 3-pin-Lüfter gegen 4-pin-PWM-Lüfter derzeit kein zu diskutierendes Thema ist!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 674050

Url: https://administrator.de/forum/raspberry-pi-datenlogging-luefter-674050.html

Ausgedruckt am: 30.07.2025 um 10:07 Uhr

silent-daniel
silent-daniel 29.07.2025 um 21:53:04 Uhr
HansDampf06
HansDampf06 29.07.2025 aktualisiert um 22:44:40 Uhr
Die beiden Links führen als zwei weitere Varianten zu dem, was ich bereits ausführte: Es gibt unzählige Fundstellen betreffend einen einzigen Lüfter - das ist in der Tat sehr einfach. Es gibt dann gelegentlich den Hinweis, nicht nur den interruptfähigen GPIO 0, sondern auch den GPIO 1 beim Arduino zu verwenden. Schließlich findet sich noch der Hinweis auf die Mega-Familie, bei der bis zu sechs interruptfähige GPIO-Pins vorhanden sein sollen. Aber dann ist schon Ende Gelände. Erst recht konnte ich betreffend diese Hinweise keine fertigen Platinen finden, sondern lediglich schematische Beschreibungen, wie es gehen sollte.

Das hilft mir nicht wirklich weiter, wenn ich das ganze skalierbar mit nur einem (Einplatinen)Computer abfackeln möchte und auch letztlich unausweichlich muss.

Bei den vorgenannten Interruptvarianten kommt noch das Problem hinzu, dass üblicherweise von einem Lüfter zwei Signale pro Umdrehung geliefert werden. Bei 2000 U/min und mehr sowie >= 16 Lüftern kann dann möglicherweise bei einem Arduino & Co. langsam die Interrupt-Luft eng werden, um stabil zu laufen. Der rettende Ansatz wird dann wohl über Multiplexer oder pollende I2C-/USB-Abfragen laufen, während der Mehr-Kanal-Controller - wie beispielsweise beim OCTO nach der Erstkonfiguration - permanent im Sekundentakt die Lüfterdaten präsentiert, so dass der Computer dies nur noch abfragen muss, sofern er denn so programmiert ist mit einem Script / Software / etc. Freilich könnte das Bereitstellen der Daten auch nichtperiodisch, sondern erst auf konkrete Abfrage erfolgen.

Und wie ebenfalls bereits geschrieben, ist für das (zusätzliche) Controllergeraffel nur wenig physischer Platz vorhanden. Selbst ein (Raspberry Pi & Co. plus) OCTO / OpenFAN und die somit notwendigerweise zentrale Zusammenführung der 16 bis 20 Lüfterkabel ist rein platztechnisch bereits eine echte Herausforderung.

Viele Grüße
HansDampf06
NordicMike
NordicMike 30.07.2025 aktualisiert um 06:21:11 Uhr
Ich würde nicht den Raspi oder Arduino die Signale per IRQ zählen lassen, sondern einen kleinen Zähler Chip, der vom Raspi per I2C auf 0 gesetzt wird und nach einer gewissen Zeit das Zählregister ausgelesen wird und danach wieder auf 0 gesetzt wird. Dieses ließe sich dann auch hübsch multiplexen. Somit hätte der Raspi fast nichts zu tun...
HansDampf06
HansDampf06 30.07.2025 um 08:01:46 Uhr
Zitat von @NordicMike:

Ich würde nicht den Raspi oder Arduino die Signale per IRQ zählen lassen, sondern einen kleinen Zähler Chip, der vom Raspi per I2C auf 0 gesetzt wird und nach einer gewissen Zeit das Zählregister ausgelesen wird und danach wieder auf 0 gesetzt wird. Dieses ließe sich dann auch hübsch multiplexen. Somit hätte der Raspi fast nichts zu tun...

Kennst Du dazu eine passende I2C-Platine? Oder einen passenden Schaltplan?

Viele Grüße
HansDampf06
MysticFoxDE
MysticFoxDE 30.07.2025 um 08:51:05 Uhr
Moin @HansDampf06,

ich habe ehrlich gesagt immer noch nicht so ganz verstanden, was du genau vor hast.
Wo sind die 18 Lüfter den überhaupt verbaut?

Gruss Alex
chiefteddy
chiefteddy 30.07.2025 um 09:20:35 Uhr
de.elv.com/p/elv-arr-bausatz-usb-ic-interface-usb-i2c-2-P160452/

Der RasPi bringt aber den I2C-Bus doch schon mit.

Jürgen
HansDampf06
HansDampf06 30.07.2025 um 09:55:05 Uhr
Zitat von @MysticFoxDE:
ich habe ehrlich gesagt immer noch nicht so ganz verstanden, was du genau vor hast.

Das steht im ersten Satz meines Eröffnungsbeitrags:
Zitat von @HansDampf06:
soll bei mehreren spannungsgeregelten 12-V-Lüfter (3-pin) die Drehzahl kontinuierlich aufgezeichnet werden

Warum die Aufzeichnung? Jeder Lüfter hat seine Nennkennzahlen. Dazu gehören Nenndrehzahl und Nennvolumenstrom. Zudem stehen Drehzahl und Volumenstrom in einem konkreten Verhältnis. Ist die Drehzahl bekannt, so ist ebenso der korrespondierende Volumenstrom nur einen Dreisatz entfernt. Ferner stehen in weiteren Relationen zu der Drehzahl der statische Druck und der überwundene Druckverlust, die Lautstärke und zugleich die aufgewendete Energie.

Mit anderen Worten: Bei Lüftern und deren Betriebsverhalten, insbesondere im ausgeglichenen Betriebspunkt, ist die Drehzahl die zentrale Betriebsgröße, um davon die anderen Betriebsgrößen ableiten zu können. Deswegen soll die Drehzahl aufgezeichnet werden, um daran weitere Auswertungen etc. anschließen zu können.
Wären es keine externen Lüfter, sondern welche, die an einem Mainboard mit einem abrufbaren Monitoring (z.B. über lm-sensors unter Linux) oder einer ähnlichen (internen) Einbausituation hängen würden, dann stünden die Drehzahlen ja zur Aufzeichnung bereit. Da das aber nicht der Fall ist, muss erst ein Monitoring der Drehzahlen intergriert werden. Und genau da setzt meine Fragestellung an.

Viele Grüße
HansDampf06
NordicMike
NordicMike 30.07.2025 aktualisiert um 09:59:55 Uhr
Eine Aufzeichnung per im BIOS auslesbare Drehzahl ist keine Option? Das geht bei Windows genau so wie bei Linux.

BIOS ist vielleicht der falsche Ausdruck. Sagen wir per SM Bus.
HansDampf06
HansDampf06 30.07.2025 um 10:10:04 Uhr
Zitat von @chiefteddy:

de.elv.com/p/elv-arr-bausatz-usb-ic-interface-usb-i2c-2-P160452/

Der RasPi bringt aber den I2C-Bus doch schon mit.

Genau. Jetzt bedarf es nur noch einer fertigen I2C-Platine, über die die Tacholeitungen der Lüfter vom RaspPi aus abgerufen werden können.
Das ginge freilich auch über USB oder eine GPIO-Steckverbindung. Für mich ist die Art der Datenverbindung zwischen Platine und RaspPi eher zweitrangig, solange ich am Ende die Tachosignale abrufen kann.

Und die mich interessierende Frage ist: Kennt jemand eine taugliche Platine? Am liebsten fertig bestückt schlicht kaufbar. Ich würde aber ebenso einen Bausatz akzeptieren. Wenn alle Stränge reißen und nur ein Schaltplan zur Verfügung stünde, würde ich selbst in diesen sauren Apfel beißen, wenn auch zähneknirschend ...

Der verlinkte ELV-Bausatz ist ja nur ein Adapter/Konverter, um I2C-Komponenten über USB nutzen zu können. Meine Fragestellung zielt hingegen auf das Finden der tauglichen USB-/I2C-/GPIO-Komponente.

Viele Grüße
HansDampf06
HansDampf06
HansDampf06 30.07.2025 um 10:17:35 Uhr
Zitat von @NordicMike:

Eine Aufzeichnung per im BIOS auslesbare Drehzahl ist keine Option? Das geht bei Windows genau so wie bei Linux.

BIOS ist vielleicht der falsche Ausdruck. Sagen wir per SM Bus.

Warum nicht? ABER: Dann muss ich die Lüfter doch irgendwie an einen SM Bus hängen, oder? Folglich bräuchte ich dafür doch irgendwie abermals ein taugliches Bauteil?! Insoweit wäre ein SM Bus unter dem Strich doch nur eine Alternative zu I2C/USB/GPIO..., wenn ich das richtig verstehe?!

Kennst Du ein solches Bauteil / Platine / Komponente, um daran die Lüfter zum Abrufen des Tachosignals per SM Bus anschließen zu können?

Viele Grüße
HansDampf06
NordicMike
NordicMike 30.07.2025 um 10:54:01 Uhr
Stecken die Lüfter nicht am Mainboard?
chiefteddy
chiefteddy 30.07.2025 um 11:22:29 Uhr
mikrocontroller.net/attachment/208351/Bildschirmfoto_2014-02-20_ ...

Hier eine Schaltung für optische Drehzahlerfassung und I2C-Bus

Jürgen
chiefteddy
chiefteddy 30.07.2025 um 11:25:53 Uhr
reichelt.de/magazin/projekte/optischer-drehzahlmesser/

Und hier gleich eine ganze Bauanleitung.

Jürgen
HansDampf06
HansDampf06 30.07.2025 um 12:30:04 Uhr
Zitat von @chiefteddy:
mikrocontroller.net/attachment/208351/Bildschirmfoto_2014-02-20_ ...

Hier eine Schaltung für optische Drehzahlerfassung und I2C-Bus

reichelt.de/magazin/projekte/optischer-drehzahlmesser/

Und hier gleich eine ganze Bauanleitung.

Danke für die beiden Links! Denn das hat mich auf die Recherche nach den verwendeten IC's geführt und dabei bin ich unter anderem auf diese I2C-Ausgabekarte und diese I2C-Eingabekarte gestoßen.

Die Ausgabekarte könnte das gravierende Problem lösen, dass 3-pin-12V-Lüfter eine PWM der Versorgungsspannung eher nicht mögen, jedenfalls aber in Abhängigkeit von der PWM-Frequenz komische Geräusche machen können. Sofern die Ausgabekarte pro Kanal nicht nur EIN und AUS, sondern auch noch die Zwischenstufen kann, wäre das schon irgendwie perfekt.

Bei der Eingabekarte ist mir noch nicht klar, ob die Tachosignale bei entsprechender Abfrage transparent durchreichbar sind oder ob letztlich nur EIN oder AUS übertragen wird. Es muss also zählbar bleiben oder ich müsste einen gezählten Wert abrufen können.

Schließlich muss ich noch verstehen, ob ich die Karten bei einem RaspPi direkt per I2C anschließen kann oder ob ich noch eines der anderen Module benötige. Mit dem USB-Modul könnte die Ein- und die Ausgabekarte jedenfalls direkt an jeden beliebigen Computer angeschlossen werden. Da es Bausätze sind, kann ich mir zum Platzsparen bestimmte Elemente wie die Klemmen "klemmen" und stattdessen die Drähte für die Anschlüsse der Lüfter direkt anlöten.

Was sehr gut ist, dass es zugleich zu diesen Karten auch noch Programmierbeispiele gibt, die einen guten Startpunkt für die eigene Umsetzung liefern. Zudem wären diese Karten zu einem sehr attraktiven Preis zu bekommen - zusammen sogar deutlich günstiger als der OCTO Controller.

Sehr schön! Jetzt kommen wir der Problemlösung schon sehr viel näher!

Als muss bezogen auf die Eingabekarte das Augenmerk / die Suche darauf ausgerichtet werden, dass die Tachosignale vom Computer zählbar oder gezählt abrufbar sind.

Viele Grüße
HansDampf06
HansDampf06
HansDampf06 30.07.2025 um 12:33:05 Uhr
Zitat von @NordicMike:

Stecken die Lüfter nicht am Mainboard?

NEIN! Sie arbeiten als externer Lüfter und unabhängig von irgendeinem elektrischen Gerät. Deswegen gibt es derzeit auch kein abrufbares Monitoring der Drehzahlen.

Viele Grüße
HansDampf06