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

 
 
 
 

Anschlussplan

 

3 Pin Lüfter

anschluss 3.2 3pin     schaltplan 3.2 3pin
 
 
 

4 Pin PWM Lüfter

 anschluss 3.2 4pin     schaltplan 3.2 4pin
 
 
 
 

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.
 
 
Das war es auch schon  fertig
 
 
 
 
        downloadbutton arduino
 
 
 
 
 

Seitennavigation
 
arrow button prev                arrow button up               arrow button next

Einen Kommentar verfassen

Als Gast kommentieren

0
  • Keine Kommentare gefunden