3.2 - Lüftergeschwindigkeit per Taster steuern
Um einen Lüfter steuern zu können, muss man seine Versorgungsspannung regulieren. Das macht man mit dem Arduino, indem man per analogWrite Befehl ein PWM Signal ausgibt. Der PWM Wert kann dabei zwischen 0 und 255 liegen, wobei 0 = 0% und 255 = 100% ist.
In diesem Teil zeige ich euch, wie man mit Hilfe von zwei Tastern den PWM Wert schrittweise erhöht, bzw. senkt, um so die Geschwindigkeit des Lüfters zu steuern.
Der Code für 3 Pin Lüfter und 4 Pin PWM Lüfter unterscheidet sich dabei nicht, der Aufbau allerdings schon. Den 4 Pin PWM Lüfter kann man ohne zusätzliche Bauteile an eine 12V Stromversorgung und den Arduino anschließen, aber für die Ansteuerung eines 3 Pin Lüfters braucht man noch einen Transistor der über den Arduino angesteuert wird, da die Ausgänge des Arduinos nicht genügend Strom und Spannung liefern um einen Lüfter anzutreiben.
Teileliste
-
Arduino IDE (Tutorial wurde mit 1.6 erstellt)
-
Arduino Uno (oder ein anderes Modell)
-
12V Netzteil (das ist nur ein Beispiel! Bitte wählt ein ausreichend starkes Netzteil je nach benötigter Leistung)
-
alternativ 12V Computer Netzteil
-
2x Taster
-
N-Chanal Transistor/Mosfet (z.B. IRFZ44N oder IRFZ34N)
- 12V PC Lüfter (3 Pin)
- 12V PC Lüfter (4 Pin PWM)
Anschlussplan
3 Pin Lüfter
4 Pin PWM Lüfter
Code
// Konstanten const int fanPin = 9; // Pin für den Lüfter const int taster1Pin = 2; // Pin für Taster 1 const int taster2Pin = 3; // Pin für Taster 2 const int schrittweite = 20; // Schrittweite pro Tasterdruck des PWM Wertes const int minSpeed = 75; // Minimale Lüftergeschwindigkeit(ca.30%,ist bei jedem Lüfter anders, müsst ihr testen) // Variablen int fanSpeed = minSpeed; // PWM Startwert des Lüfters int taster1Status = 0; // Variable zum speichern des Tasterstatus int taster2Status = 0; // Variable zum speichern des Tasterstatus void setup() { TCCR1B = TCCR1B & 0b11111000 | 0x01; // Setzt Timer1 (Pin 9 und 10) auf 31300Hz pinMode(fanPin, OUTPUT); // Setzt den Pin des Lüfters als Ausgang pinMode(taster1Pin, INPUT); // Setzt den Pin des Tasters 1 als Eingang pinMode(taster2Pin, INPUT); // Setzt den Pin des Tasters 2 als Eingang /* Der Lüfter bekommt 1 Sekunde einen Startimpuls und wird dann gedrosselt. Das ist eine Sicherheitsmaßnahme, falls der Lüfter mit 30% nicht anläuft */ analogWrite(fanPin, 255); delay(1000); analogWrite(fanPin, fanSpeed); } void loop() { taster1Status = digitalRead(taster1Pin); // tasterPin1 lesen und Status speichern taster2Status = digitalRead(taster2Pin); // tasterPin2 lesen und Status speichern // Wenn Taster 1 gedrückt ist, um den Wert von "schrittweite" erhöhen if(taster1Status == HIGH) { fanSpeed = fanSpeed + schrittweite; delay(500); } // Wenn Taster 2 gedrückt ist, um den Wert von "schrittweite" senken if(taster2Status == HIGH) { fanSpeed = fanSpeed - schrittweite; delay(500); } // Der ausgegebene PWM Wert wird auf den Bereich 75-255 begrenzt if(fanSpeed > 255) { fanSpeed = 255; } else if(fanSpeed < minSpeed) { fanSpeed = minSpeed; } analogWrite(fanPin, fanSpeed); // Gibt den PWM Wert am fanPin aus }
Nach dem setzen der Konstanten und Variablen, wird im setup die Frequenz des PWM Signals eingestellt, sowie die Ein- und Ausgänge deklariert.
In den Variablen habe ich den Startwert des Lüfters mit fanSpeed = 75 festgelegt. Das entspricht ca. 30% des PWM wertes, also ca. 4V. bei dieser Spannung läuft evtl. nicht jeder Lüfter los. Deshalb lasse ich den Lüfter beim Programmstart im setup für 1 Sek mit 100% laufen um das Anlaufmoment des Lüfters zu überwinden. Danach wird er wie geplant mit 75 angesteuert.
Der loop beginnt mit dem abfragen der Taster. Ist ein Taster gedrückt, wird die Variable fanSpeed um 20 erhöht oder gesenkt.
Wenn fanSpeed größer als 255 wird, wird sie auf 255 zurückgesetzt. Das gleiche passiert in die andere Richtung bei minSpeed. So wird ein Steuerbereich von 75 - 255, also 30% - 100% eingestellt.
Nun wird der noch Wert von fanSpeed per analogWrite() Befehl an den Lüfter ausgegeben.
Wenn fanSpeed größer als 255 wird, wird sie auf 255 zurückgesetzt. Das gleiche passiert in die andere Richtung bei minSpeed. So wird ein Steuerbereich von 75 - 255, also 30% - 100% eingestellt.
Nun wird der noch Wert von fanSpeed per analogWrite() Befehl an den Lüfter ausgegeben.
Das war es auch schon
Seitennavigation
Einen Kommentar verfassen
Einloggen um Kommentare zu verfassen
Als Gast kommentieren