preloader

Auf AEQ-WEB Suchen

AEQ-WEB | Blog

Arduino read FAN Speed Signal

Drehzahlmesser von Lüfter auswerten

Lüfter, wie sie in der Industrie und in Computern verbaut sind, besitzen einen Drehzahlsensor. Über diesen Sensor wird ein sogenanntes Tachosignal erzeugt, mit dem die Drehzahl und Funktionalität des Lüfters überwacht werden kann. In diesem Artikel geht es um das Auswerten des Tachosignals mit dem Arduino.

Wie funktioniert der Sensor

Der Drehzahlsensor besteht meist aus einem Hall-Sensor und einem Transistor, der das Ausgangssignal schaltet. Bei den meisten Lüftern wird der Sensor pro Umdrehung zweimal ausgelöst und gibt daher zwei Impulse auf die Signalleitung. Damit das Signal von einem Mikrocontroller oder vom Oszilloskop ausgewertet werden kann, muss auf der Signalleitung eine positive Spannung anliegen. Sobald der Sensor schaltet, wird dann die Spannung hinuntergezogen und es kommt zu einem Low-Signal. Wenn der Sensor nicht aktiv ist, liegt die volle Spannung auf der Leitung, was als High-Signal interpretiert wird. Damit es zu keinem Kurzschluss kommt bzw. der Strom möglichst gering bleibt, muss ein entsprechender Vorwiderstand im Kiloohm Bereich zwischen Signalleitung und dem Pluspol geschaltet werden. Der folgende Screenshot zeigt das Tachosignal des Lüfters:

Arduino Lüfter Drehzahl Signal von Tacho Oszilloskop

Die Schaltung

Wie bereits erwähnt wird ein Pull-Up Widerstand (R2) benötigt, um ein digitales Signal erzeugen zu können. Da die meisten Lüfter mit 12 Volt betrieben werden, ist auch die Signalspannung gleich hoch. Dies ist jedoch für einen Mikrocontroller viel zu hoch und muss so angepasst werden, dass bei der maximalen Betriebsspannung die Signalspannung je nach Mikrocontroller bei höchstens 5 oder 3,3 Volt liegt. Ein weiterer Widerstand (R1) wird in Serie zu R2 geschaltet und bildet somit den Spannungsteiler, der die Pegelspannung entsprechend reduziert. Die Tachosignalleitung wird durch den Spannungsteiler weiter zum digitalen Input des Mikrocontrollers geführt.

Arduino Lüfter Drehzahl Signal auswerten

Der Arduino muss mit der Masse von der Versorgungsspannung des Lüfters verbunden sein. Wird das Signal über Interrupts ausgewertet, muss sichergestellt sein, dass der Pin dies auch unterstützt. Beim Arduino Uno kann dafür nur Pin 2 oder 3 verwendet werden.

Arduino Tachosignal auswerten und Lüfter Drehzahl überwachen

Software

Die Software für die Auswertung ist sehr einfach aufgebaut. Wie auch beim Anemometer Projekt ist hier die einfachste Lösung, wenn man mit Interrupts arbeitet. Interrupts werden beim Arduino Uno nur auf Pin 2 & 3 unterstützt. Der Beispielcode aktiviert die Zählung von Flankenwechsel (Low auf High) mit Interrupts und zählt pro Flanke um den Wert eins hoch. Nach einer Sekunde wird die Messung beendet und die Interrupt-Funktion aufgehoben. Da vom Lüfter pro Umdrehung zwei Flanken zu erwarten sind, muss der Zähler anschließend durch zwei geteilt werden. Die Messzeit beträgt eine Sekunde. Damit daraus die Umdrehungen pro Minute (RPM) errechnet werden können, muss der zuvor geteilte Zähler mit 60 Multipliziert werden. Anschließend werden die Ergebnisse im Serial Monitor ausgegeben.

//More information at: https://www.aeq-web.com/

const int SensorPin = 2;  //Define Interrupt Pin (2 or 3 @ Arduino Uno)

int InterruptCounter, rpm;

void setup(){
  delay(1000);
  Serial.begin(9600);
  Serial.print("Counting");
}

void loop() {
  meassure();
}

void meassure() {
  InterruptCounter = 0;
  attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);
  delay(1000);
  detachInterrupt(digitalPinToInterrupt(SensorPin));
  rpm = (InterruptCounter / 2) * 60;
  display_rpm();
}

void countup() {
  InterruptCounter++;
}

void display_rpm() {
  Serial.print("Counts: ");
  Serial.print(InterruptCounter, 1);
  Serial.print(" RPM: ");
  Serial.println(rpm);
}

Arduino Lüfter Serial Monitor RPM

Der Beispielcode liefert brauchbare Ergebnisse. Der beim Test verwendete Lüfter hat eine Schwankung von rund 60 RPM. Grund dafür ist u. a. die recht kurze Messzeit. Erhöht man die Messzeit auf etwa 3 Sekunden, so ist die Schwankung aufgrund eines genaueren Mittelwertes deutlich geringer.

Achtung bei PWM

Für die Steuerung der Drehzahl wird gerne PWM verwendet. Sobald hier mit PWM gearbeitet wird, egal ob auf der Plusleitung oder an der Masse, kommt es zu Störungen am Tachosignal. Das Problem dabei ist, dass der interne Hall-Sensor auf der gleichen Spannungsversorgung liegt. Die Summe des Ausgangssignals ist dann PWM+Tachosignal. Es gebe dazu folgende Lösungen, um diese Störungen bei 3-Pin Lüftern zu kompensieren:

  • Mit der Spannung steuern anstatt mit PWM
  • PWM während der Messung kurz deaktivieren
  • Auswertung mit PWM-Generator synchronisieren und entsprechend die Pulse von der eigentlichen Flanke subtrahieren


  • Ein Projekt zur "Drehzahlüberwachung mit PWM Regelung" ist geplant.


    Share:
    thumbnail
    28.02.2017
    Arduino Anemometer bauen

    Auf dieser Seite geht es um die Konfiguration eines Anemometer Windrades mit dem Arduino Board. Welche Bauteile und Software man braucht, erfährt ihr hier

    Alex @ AEQ-WEB
    thumbnail
    02.06.2018
    Arduino Wetterstation

    Hier gibt es eine professionelle Anleitung zum Bau einer Arduino Wetterstation. Temperatur, Wind, Feuchte & Luftdruck werden per HTTP an den Server gesendet

    Alex @ AEQ-WEB