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

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.

 
 
pulse stretiching1
 
 
 
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.
 
 
pulse stretiching2
 
 

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.

 
tachosignal
 
 
 
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.
 
 
berechnung RPM
 
 
 
 
 

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

Auslesen der Drehzahl eines temperaturgesteuerten Lüfters mit einem 10kO NTC Wiederstand

4.1.3 - Drehzahl mit Temperatursteuerung

 
 
 
 
 
 

Seitennavigation
 
arrow button prev               arrow button up               arrow button next

Einen Kommentar verfassen

Als Gast kommentieren

0
  • Keine Kommentare gefunden