4.1 - Lüfterdrehzahl auslesen 3 Pin Lüfter
3-Pin Lüfter lassen sich sehr einfach mit einem Arduino und einem N-Kanal Mosfet (Transistor) per PWM steuern, leider lässt sich so die Drehzahl der Lüfter nicht so einfach erfassen.
Das liegt daran, dass die Elektronik, die das Tachosignal erzeugt, vom Lüfter mit Strom versorgt wird.
Wenn wir jetzt ein PWM Signal an den Lüfter anlegen, wird er sehr schnell an und aus geschalten und somit eine gedrosselte Geschwindigkeit erzielt. Dadurch wird aber auch die Elektronik des Tachosignals gestört und der Lüfter gibt kein saubers Signal mehr aus.
Ich habe lange nach einer Lösung für dieses Problems gesucht, da das Internet hier nicht viel hergibt, außer Leuten mit dem selben Problem
Dann bin ich aber bei meinen Recherchen auf ein PDF eines Herstellers für Fan Controller Chips gestoßen, dass mich auf den richtigen Weg gebracht hat.
Mir war es deshalb sehr wichtig diese Tutorial zu schreiben um für andere "Suchende" etwas Licht ins Dunkel zu bringen.
Das Zauberwort mit dem ich des Problem gelöst habe ist das sogenannte "Pulse Stretching".
Das liegt daran, dass die Elektronik, die das Tachosignal erzeugt, vom Lüfter mit Strom versorgt wird.
Wenn wir jetzt ein PWM Signal an den Lüfter anlegen, wird er sehr schnell an und aus geschalten und somit eine gedrosselte Geschwindigkeit erzielt. Dadurch wird aber auch die Elektronik des Tachosignals gestört und der Lüfter gibt kein saubers Signal mehr aus.
Ich habe lange nach einer Lösung für dieses Problems gesucht, da das Internet hier nicht viel hergibt, außer Leuten mit dem selben Problem
Dann bin ich aber bei meinen Recherchen auf ein PDF eines Herstellers für Fan Controller Chips gestoßen, dass mich auf den richtigen Weg gebracht hat.
Mir war es deshalb sehr wichtig diese Tutorial zu schreiben um für andere "Suchende" etwas Licht ins Dunkel zu bringen.
Das Zauberwort mit dem ich des Problem gelöst habe ist das sogenannte "Pulse Stretching".
Erklärung
In diesem Diagramm sieht man das Problem mit dem RPM Signal. Durch das anpulsen per PWM wird ein zerstückeltes Tachosignal ausgegeben, dass zu einer falschen Drehzahl führt.
Normalerweise zählt der Arduino die steigenden oder fallenden Flanken des Tachosignals. Über diesen Wert kann man dann die RPM berechnen.
Im untersten Bild sieht man, dass bei per PWM gesteuerten Lüftern, das Tachosignal sehr viele Flanken aufweist. Dadurch zählt der Arduino einen falschen Wert und die RPM Berechnung stimmt nicht.
Nur wenn ein PWM Wert von 255, also 100% anliegt, stimmen die gemessenen RPM.
Man kann sich hier einem Trick bedienen um das Problem zu umgehen. Es ist keine perfekte Lösung, aber die mit dem geringsten Aufwand und einem akzeptablen Ergebnis.
Man legt einfach für ein paar Millisekunden einen PWM Wert von 255 am Lüfter an und misst in dieser Zeit, die Dauer zwischen einer steigenden und einer fallenden Flanke, aslo die Zeit in der das Signal HIGH oder LOW ist. Da der Lüfter träge ist, ändert sich seine Geschwindigkeit und damit auch die Zeit zwischen den Flanke nicht merklich und man kann mit diesem Wert dann die RPM berechnen.
Man legt einfach für ein paar Millisekunden einen PWM Wert von 255 am Lüfter an und misst in dieser Zeit, die Dauer zwischen einer steigenden und einer fallenden Flanke, aslo die Zeit in der das Signal HIGH oder LOW ist. Da der Lüfter träge ist, ändert sich seine Geschwindigkeit und damit auch die Zeit zwischen den Flanke nicht merklich und man kann mit diesem Wert dann die RPM berechnen.
Das kurzzeitige anlegen von 100% PWM Wert hat natürlich kleine Auswirkungen auf die Drehzahl. Der Unterschied ist aber zu vernachlässigen. Wenn man die Drehzahl jede Sekunde abfragt oder nur alle drei Sekunden gab es bei mir nur einen Unterschied von ca. 15 RPM, also 15 Umdrehungen in der Minute.
Berechnung der Umdrehungen pro Minute
Gehen wir mal davon aus, dass wir eine Zeit zwischen der steigenden und der fallenden Flanke von Fz = 18567 Mikrosekunden gemessen haben, das sind 18,567 Millisekunden.
Ein Lüfter macht pro Umdrehung zwei Pulse im Tachosignal, das ist 4 x die Zeit zwischen den Flanken.
Hier ist jetzt die genaue Berechnung die dann im Arduino Sketch abläuft. Ich habe sie so genau wie möglich aufgeschrieben, damit ihr hoffentlich versteht, was da passiert.
Inhaltsverzeichnis
Auslesen der Drehzahl bei konstanter Lüftergeschwindigkeit
4.1.1 - Statische Drehzahl auslesen
Auslesen der Drehzahl bei einem Lüfter der per Drehpotientiometer gesteuert wird
4.1.2 - Drehzahl mit Potisteuerung
4.1.3 - Drehzahl mit Temperatursteuerung
Einen Kommentar verfassen
Einloggen um Kommentare zu verfassen
Als Gast kommentieren