Lüftersteuerung mit ATtiny

Wie versprochen nun mein erstes ATtiny Projekt

Ziel

Wenn die Temperatur von dem Wechselrichter der Solaranlage eine bestimmte Temperatur überschreitet soll ein Lüfter hinzugeschaltet werden, der die Kühlrippen belüftet.

Funktionsweise

Das ganze ist ein ganz einfacher Temperaturgesteuerter Regelkreis. Eigentlich sogar ein einfacher Temperaturschalter. Warum das also mit einem Microcontoller steuern? Gute Frage. macht eigentlich keinen Sinn. Wenn man nur einen Hammer hat sieht halt alles aus wie ein Nagel. Egal – Das ist sozusagen das ‚Hello World‚ der Microcontroller Steuerung. Der Aufbau ist eigentlich ganz einfach. Ein Pin muss mit dem Temperatursensor verbunden werden, ein anderer gibt ein Steuersignal an ein Relais, das einen Lüfter steuert. Das Programm schaltet den Relais-Ausgang auf An wenn die Temperatur zu hoch ist. Der Aufbau sieht so aus:

2015-06-15 TemperatureBoard

Als Temperaturfühler verwende ich den DS18S20. Das ist eigentlich schon zu High-Tech für den Anwendungsfall, aber der war gerade greifbar. Den Ventilator schaltet dann ein Relais vom Typ SIL05-1A72-71L. Aufgebaut auf einer Lochrasterplatine sieht das dann so aus:
2015-06-15 Platine
Auf jeden Fall kompakter als ein Arduino Uno. Gegenüber dem Pro Mini der Vorteil dass alle Anschlüsse auf einem Board sind.

Coding

Bleibt noch das Programm. Das kompizierteste ist das Auslesen des Temperatursensors über den 1-Wire Bus. Das wird hier beschrieben. Eigentlich gibt es dafür auch eine fertige Bibliothek, aber benötigt zu viel Spiecher für den ATtiny 85.

#include <OneWire.h>

OneWire ds(0); // on pin 10 (a 4.7K resistor is necessary)
int relay = 1;
int threshold = 480; //30 Degrees =480
int temp;

void setup(void) {
  pinMode(relay, OUTPUT);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    ds.reset_search();
    delay(250);
    return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);

  delay(900);

  present = ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  for ( i = 0; i < 9; i++) {
    // we need 9 bytes
    data[i] = ds.read();
  }
  temp=(data[1]*256)+data[0];
  if (temp>threshold) {
    digitalWrite(relay, HIGH);
  } else {
    digitalWrite(relay, LOW);
  }
  delay(3000);
}

Ergebnis

Und was bring es? Vor 3 Tagen ohne Lüfter stieg die Temperatur auf bis zu 64 Grad. Über 60 Grad war sie fast 4 Stunden lang. Heute war es sehr sonnig und der maximale Ertrag lag bei über 4050W. Die Temperatur ist bis auf 61 Grad angestiegen, aber nur kurzzeitig für 15 Minuten. Vorher und nachher lag sie unter 60Grad. Das ist sicher nicht viel aber stimmt mich insgesamt positiv. Durch die Temperatursteuerung muss der Lüfter auch nur dann laufen wenn er wirklich gebraucht wird. Gerade bei einer sonnenabhängigen Erwärmung ist das stark von den Jahreszeiten abhängig. An einem sehr guten Tag im Januar wird der Lüfter höchstens 8 Stunden benötigt, bei trüben Wetter viel weniger. Im Sommer hingegen in der Regel 12 Stunden auch wenn es nicht ganz so sonnig ist.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.