PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
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 funktionieren Interrupts am Arduino
Funktion von PullUp und PullDown Widerständen
Funktion von Spannungsteilern
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:
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.
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); }
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.
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:
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?
WeiterlesenDer 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
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved