Events

:

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    YouTube

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden

    Der Technik-Blog

    Arduino read FAN Speed Signal

    Drehzahlmesser von Lüfter auswerten

    Alex @ AEQ-WEB

    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:

    Werbung:

    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.

    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.

    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.

    Werbung:

    //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);
    }
    

    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.

    Werbung:


    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    Arduino LM358 PT1000 Sensor Converter

    Temperatur messen mit PT1000 & Arduino

    • Video
    • DE/EN

    PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?

    Weiterlesen
    Arduino PT100 Temperature Sensor Converter

    PT100 Temperatur messen mit Arduino

    • Video
    • DE/EN

    Der PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino

    Weiterlesen

    Social Media

    YouTube

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden