(ESP32, PWM Lüfter mit Tacho, Interrupt, Zweipunktregler)
In dem Versuch wird die Drehzahl eines Lüfters gesteuert. Bei dem Lüfter handelt es sich um das Model Noctua
NF-A4x20 PWM. Der
Lüfter weist vier Anschlüsse auf. Zwei Anschlüsse dienen der Spannungsversorgung, die 12 VDC beträgt. Der dritte Anschluss ist
die Tacholeitung. Über die Tacholeitung ist es möglich, die aktuelle Drehzahl des Lüfters zu ermitteln. Pro eine Umdrehung
liefert der Lüfter an der Leitung zwei Signale, die gezählt werden können. Die Signale werden wir als Rückmeldung zur aktuellen
Drehzahl in unserem Steuerkreis verwenden. Über den vierten Anschluss lässt sich der Lüfter mithilfe eines PWM-Signals steuern.
Diesen Anschluss nutzen wir, um die aktuelle Drehzahl des Lüfters zu beeinflussen. Die Drehzahl des Lüfters wird im Bereich
2000 bis 5000 Umdrehungen pro Minute geregelt. Bei niedrigeren Drehzahlen verhält sich der Lüfter schon ziemlich unzuverlässig,
eine verlässliche Regelung ist hier nicht möglich. Bei ganz niedrigen Drehzahlen bleibt der Lüfter stehen. Die Regelung
selbst realisieren wir auf dem einfachsten Wege: mit einem Zweipunktregler. Ist die aktuelle Drehzahl zu niedrig, wird der
Lüfter beschleunigt. Und entsprechend umgekehrt: Ist die Drehzahl zu hoch, wird der Lüfter abgebremst. Damit unser Regelkreis
gelegentlich auch zur Ruhe kommt und sich keine Schwingungen einstellen, legen wir hier zugrunde eine Drehzahltoleranz
von +/- 100 Umdrehungen pro Minute. Das Ziel, die gewünschte Drehzahl, wird mithilfe eines Potentiometers eingestellt.
Die Vergleich- und Rechenaufgaben erledigt für uns der Mikrocontroller ESP32.
ESP32
Das Fundament unseres Regelkreises besteht aus zwei Faktoren, für die zwei GPIOs des Mikrocontrollers zuständig
sind. Mit dem Eingang GPIO 32 wird die aktuelle Drehzahl des Lüfters ermittelt. Für die Zählung der Signale, die der Lüfter
liefert, ist ein Interrupt zuständig. Dabei handelt es sich um eine Funktion, die in Echtzeit ausgeführt wird. Eine
Interrupt-Funktion wird immer in dem Zeitpunkt ausgeführt, in dem ein Ereignis eintritt und zwar unabhängig davon, was das
Hauptprogramm gerade macht. Mit dem zweiten GPIO Nummer 18 wird die Drehzahl des Lüfters beeinflusst. Hier wird ein PWM-Signal
ausgegeben, das von der internen Elektronik des Lüfters ausgewertet wird.
Der Lüfter ist ein Noctua
NF-A4x20 PWM. Er benötigt eine konstante Spannungsversorgung von 12 VDC. Seine Drehzahl kann mithilfe
eines PWM Signals gesteuert werden. An seinem Tacho-Anschluss liefert er zwei Signale pro Umdrehung, die es ermöglichen, seine
aktuelle Drehzahl zu ermitteln. Sofern man die PWM Steuerung nicht nutzen will, kann die Drehzahl des Lüfters auch durch
Änderung der Spannungsversorgung beeinflusst werden.
Lüfter Frontansicht
Rückansicht
Technische Daten: Versorgungsspannung: 12 VDC
Drehzahl: 1200 - 5000 U/Min
Steuerung: PWM
Luftstrom: 9,4 m³/h
Geräuschpegel: 14,9 dB
Leistung: 0,6 W
Stromaufnahme: 0,05 A
Anschluss: 4-Pin
Tacho: 2 Signale pro Umdrehung (LOW-aktiv)
Abmessungen: 40 x 40 x 20 mm
Lebensdauer: 150.000 h
Anschluss
Display
Auf dem zweizeiligen Display werden die aktuellen Werte der Ist- und der Solldrehzahl angezeigt.
Spannungsregler
Spannungsregler mit LM2596
Spannungsregler mit LM317
In der Form arbeitet die Schaltung mit drei Spannungen. Die Hauptversorgung des Lüfters beträgt 12 VDC. Der
Mikrocontroller arbeitet grundsätzlich mit 3,3 VDC. Das Display verlangt eine Spannungsversorgung von 5 VDC. Für die 3,3V ist
ein fertiges Modul mit einer 7-Segmentanzeige zuständig. Das Modul basiert auf dem IC LM2596. Die 5 VDC liefert ein
selbst gebasteltes Modul, das auf dem einstellbaren Spannungsregler LM317 basiert.
// ******************************************************************************************
// Lüfter Regelung mit PWM
// Drehzahlregelung eines PWM-Tacho-Lüfters mit Zweipunktregler
// Schaltung mit dem Mikrocontroller ESP32 und NF-A4x20 Lüfters (4 Pins)
// IDE 1.8.19
// ******************************************************************************************
Das Programm besteht aus zwei Teilen. Den ersten Teil bildet der Interrupt mit seiner Zählfunktion. Sobald ein
Signal von Lüfter am Eingang GPIO 32 auftaucht (Das Signal ist LOW aktiv. Mit dem Signal wird der Eingang mit Masse verbunden),
wird das Hauptprogramm unterbrochen und das Unterprogramm „Impuls_Zaehler()“ ausgeführt.
In dem zweiten Teil (Hauptprogramm) agiert unser einfacher Zweipunktregler. Es wird einmal pro Sekunde die aktuelle Drehzahl
mit der Sollvorgabe verglichen und entsprechend mithilfe des PWM-Signals der Lüfter beschleunigt oder abgebremst.
Diese einfache Regelung schafft es innerhalb von einigen Sekunden den Lüfter auf die gewünschte Drehzahl einzustellen.
Da die Signale so von dem Potentiometer als auch von der Tacholeitung ein wenig hier und her wandern, arbeite ich hier mit
Mittelwerten. Zur Bestimmung der aktuellen Ist- und Solldrehzahl werden stets die zehn letzten Messungen berücksichtigt.