Ein kleiner PC-Lüfter soll abhängig von der Temperatur an- und ausgeschaltet werden. Zur Ermittlung der Temperatur wird ein Thermistor und zur Steuerung ein Arduino Uno verwendet.
In der Schaltung ist zu beachten, dass der Lüfter eine separate (höhere) Stromversorgung bekommt, als der Rest der Steuerungslogik. Durch einen Transistor wird der Stromfluss für den Lüfter geregelt.
Der erste Versuch dient nur als Test und soll den Lüfter alle 5 Sekunden ein- und ausschalten:
#define PIN_FAN 10
void setup()
{
pinMode(PIN_FAN, OUTPUT);
}
void loop()
{
digitalWrite(PIN_FAN, HIGH);
delay(5000);
digitalWrite(PIN_FAN, LOW);
delay(5000);
}
Der zweite Sketch ist die temperaturanhängige Steuerung. Es wird in bestimmten Zeit-Intervallen die Wärme durch den Thermistor gemessen und bei einer bestimmten Schwelle der Lüfter ein- bzw. wieder ausgeschaltet. In der seriellen Konsole kann dies zusätzlich überwacht werden.
#define PIN_FAN 10
#define PIN_THERMISTOR A0
#define TEMP_FAN_OFF 440
#define TEMP_FAN_ON 500
#define MEASURE_RESOLUTION 3000 // interval in milliseconds
unsigned long lastMeasureTime = 0;
int tempValue = 0;
bool fanStatus = false;
void setup()
{
pinMode(PIN_FAN, OUTPUT);
pinMode(PIN_THERMISTOR, INPUT);
Serial.begin(9600);
}
void loop()
{
if ((millis() - lastMeasureTime) > MEASURE_RESOLUTION) {
tempValue = analogRead(PIN_THERMISTOR);
Serial.println(tempValue);
if (tempValue > TEMP_FAN_ON && fanStatus == false) {
Serial.println("Fan: ON");
digitalWrite(PIN_FAN, HIGH);
fanStatus = true;
} else if (tempValue < TEMP_FAN_OFF && fanStatus == true) {
Serial.println("Fan: OFF");
digitalWrite(PIN_FAN, LOW);
fanStatus = false;
}
lastMeasureTime = millis();
}
}
zurück