Zahnräder


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Heizungsüberwachung mit AUS-Reset

Eine Schaltung aus der Praxis. In einem Haus fällt die Heizung immer wieder in unregelmäßigen Zeitabständen aus. Der Heizungsbauer findet die Ursache nicht. So muss sich der Hausherr selbst helfen. Im Fall einer Störung schaltet er die Heizung einfach aus und lässt sie eine halbe Stunde ausgeschaltet. Anschließend wird die Heizung wieder eingeschaltet und bis zu nächster Störung ist alles in Ordnung. Auf diese Weise wird ein Reset durchgeführt. Da sich im Haus auch andere Bewohner befinden, der Hausherr selbst aber oft abwesend ist, kam er auf die Idee, den Vorgang des Aus- und Einschaltens der Heizung zu automatisieren. Für den automatischen Ablauf soll der Mikrocontroller Arduino sorgen. Bei jeder Störung soll die Heizung, indem sie mithilfe eines Schützes komplett von der Spannung getrennt wird, abgeschaltet werden. Nach einer halben Stunde soll der Schütz wieder abfallen und die Heizung auf diesem Wege wieder einschalten. Die Schaltung wird in einem Gehäuse untergebracht. Auf dem Gehäuse werden mehrere Meldeleuchtdioden für Anzeige der Zustände angebracht. Mit einer grünen Leuchtdiode, die in bestimmten Zeitabständen kurz aufleuchtet, wird signalisiert, dass der Mikrocontroller in Betrieb ist und richtig arbeitet. Eine rote Leuchtdiode leuchtet dann auf, wenn eine Störung auftritt und die Heizung ausgefallen ist. Mit drei blauen Leuchtdioden wird die Zeit, die während einer Störung abläuft, angezeigt. Jede blaue Leuchtdiode steht für einen 10 Min.-Intervall.
Schließlich zeigen fünf gelbe Leuchtdioden, wie viele Störungen es bis dato gegeben hat.
Eine weitere Leuchtdiode, weiß, wird parallel mit dem Relais geschaltet und zeigt an, ob das Relais angezogen hat.
Das alles, bis der Heizungsbauer endlich dahinterkommt, was die Ursache für die Ausfälle ist und eine entsprechende Reparatur durchführt.

Arduino

Arduino Nano

Die Anzahl der digitalen Pins, die Arduino Nano zur Verfügung stellt, reicht bei der gewählten Methode für diese Aufgabe nicht aus. Man kann allerdings auch die analogen Pins digital nutzen. Um das zu erreichen, wird ein analoger Pin mit der Anweisung „pinMode“ als digitaler Eingang oder Ausgang definiert. Auf diese Weise kann man bei Arduino Nano mit allen anlogen Pins verfahren. Die Ausnahme bilden die Pins A6 und A7, die ausschließlich als analoge Anschlüsse verwendet werden können.

Relais

Relais RTE2512

Das Relais, dessen Spule passend zu der Spannungsversorgung für 12 VDC ausgelegt ist, stellt zwei Wechsler-Kontakte zur Verfügung. In der Schaltung wird für die Spannungsversorgung der Heizung ein Öffner-Kontakt verwendet. Das hat den Vorteil, dass bei einem störungsfreien Lauf das Relais ausbleibt und keinen Strom benötigt. Nur im Falle einer Störung, um die Spannungsversorgung der Heizung zu unterbrechen, wird das Relais für 30 Minuten angezogen.

Transistor

Transistor

Zwischen einem Ausgang eines Mikrocontrollers und dem Endverbraucher, in diesem Fall eines Relais oder Schützes, muss ein Stromverstärker zwischengeschaltet werden. Ansonsten kann der Ausgang überlastet und beschädigt werden. In unserer Schaltung übernimmt diese Rolle ein NPN-Transistor. Der Transistor muss auf jedem Fall in der Lage sein, den Strom, der für den Verbraucher benötigt wird, zu liefern. In dem Beispiel handelt es sich um ca. 40 mA. Der Transistor BC172 verträgt eine Belastung bis zu 100mA.

Schaltplan

Schaltplan



Programm (Sketch)

// *********************************************************************************************
// Heizungsüberwachung mit AUS-Reset
// Schaltung mit Arduino Nano
// Arduino IDE 2.3.2
// *********************************************************************************************

int Heizung_Relais = 2;                                    // Heizung Schütz/Relais e/a
int LED_Blinker = 3;                                       // Blinker (in Betrieb)
int LED_Stoerung = 4;                                      // Anzeige Störung
int LED_Pause_10Min = 5;                                   // Zeitanzeige 10 Min                     
int LED_Pause_20Min = 6;                                   // Zeitanzeige 20 Min
int LED_Pause_30Min = 7;                                   // Zeitanzeige 30 Min
int Stoerungszaehler_Nr1 = 8;                              // Anzahl der Störungen (Max 5)
int Stoerungszaehler_Nr2 = 9; 
int Stoerungszaehler_Nr3 = 10; 
int Stoerungszaehler_Nr4 = 11; 
int Stoerungszaehler_Nr5 = 12;  
int Meldung_Stoerung = A0;                                 // Analogeingang digital nutzen

unsigned long Millis_Aktuell, Millis_Blinker, Millis_Sekunde;
int Sekunden, Minuten;
int Stoerungszaehler;    
bool Stoerung;                                                 

// *********************************************************************************************
void setup() {

    pinMode(Heizung_Relais, OUTPUT);                       // Ausgänge
    pinMode(LED_Blinker, OUTPUT);                          // LED Grün
    pinMode(LED_Stoerung, OUTPUT);                         // LED Rot
    pinMode(LED_Pause_10Min, OUTPUT);                      // Zeitzählung, 3 Blaue LEDs
    pinMode(LED_Pause_20Min, OUTPUT);
    pinMode(LED_Pause_30Min, OUTPUT);
    pinMode(Stoerungszaehler_Nr1, OUTPUT);                 // Anzahl der Störungen, 5 gelbe LEDs
    pinMode(Stoerungszaehler_Nr2, OUTPUT);
    pinMode(Stoerungszaehler_Nr3, OUTPUT);
    pinMode(Stoerungszaehler_Nr4, OUTPUT);
    pinMode(Stoerungszaehler_Nr5, OUTPUT);
    pinMode(Meldung_Stoerung, INPUT_PULLUP);               // Meldung von der Heizung

    Millis_Blinker = Millis_Sekunde = millis();            // Millisekunden aktuell festhalten
}

// *********************************************************************************************
void loop() {

    Millis_Aktuell = millis();                             // Mikrocontroller läuft,
    if (Millis_Aktuell > Millis_Blinker + 2000) {          // wenn die grüne LED kurz aufleuchtet
        digitalWrite (LED_Blinker, HIGH);
        delay (100);
        digitalWrite (LED_Blinker, LOW);
        Millis_Blinker = Millis_Aktuell;                 
    }

    if (not Stoerung) {                                    // Alles OK, Heizung läuft
        Millis_Sekunde = millis();
        digitalWrite (Heizung_Relais, LOW);                // Relais bleibt AUS
    }

    if (digitalRead(Meldung_Stoerung) == LOW) {            // Störung tritt auf
            Stoerung = HIGH;                               // Störungsvariable
            digitalWrite (LED_Stoerung, HIGH);             // Rote LED ein
    }
    
    if (Stoerung) {                                        // Störung / Zeitzählung 0-30 Min
        digitalWrite (Heizung_Relais, HIGH);               // Relais EIN schaltet die Heizung Aus
        if (Millis_Aktuell > Millis_Sekunde + 1000) {      // Zeitzählung
            Millis_Sekunde = millis();
            Sekunden++;                                    // Sekunden
            if (Sekunden > 60) {  
                Sekunden = 0;
                Minuten++;                                 // Minuten
            }           
        }
    }

    if (Stoerung) {                                        // Störung / Zeit-LEDs einschalten
        digitalWrite (LED_Pause_10Min, HIGH);              // 10 Min LED Ein
        if (Minuten > 10) {                                
            digitalWrite (LED_Pause_20Min, HIGH);          // 20 Min LED Ein
        }
        if (Minuten > 20) {                                // 30 Min LED Ein  
            digitalWrite (LED_Pause_30Min, HIGH);        
        }        
    }    

    if (Stoerung) {                                        // Störung / Anzahl der Störungen
        if (Minuten > 30) {                                // 30 Minuten um 
            digitalWrite (Heizung_Relais, LOW);            // Heizung wieder Ein (Relais Aus)
            Stoerung = LOW;                                // Störungsvariable zurücksetzen
            Minuten = 0;                                   // Minuten zurücksetzen
            Stoerungszaehler++;                            // Störungszähler erhöhen
            if (Stoerungszaehler > 5) {                    
                Stoerungszaehler = 1;
            }
            digitalWrite (LED_Stoerung, LOW);              // LEDs Aus
            digitalWrite (LED_Pause_10Min, LOW);
            digitalWrite (LED_Pause_20Min, LOW);
            digitalWrite (LED_Pause_30Min, LOW);
            delay (5000);                                  // Abwarten, bis Heizung hochläuft
        } 
    }

    if (Stoerungszaehler > 0) {                              // Anzehl der Störungen anzeigen
        digitalWrite (Stoerungszaehler_Nr1, HIGH);
    } else { digitalWrite (Stoerungszaehler_Nr1, LOW); }
    if (Stoerungszaehler > 1) {
        digitalWrite (Stoerungszaehler_Nr2, HIGH);
    } else { digitalWrite (Stoerungszaehler_Nr2, LOW); }
    if (Stoerungszaehler > 2) {
        digitalWrite (Stoerungszaehler_Nr3, HIGH);
    } else { digitalWrite (Stoerungszaehler_Nr3, LOW); }
    if (Stoerungszaehler > 3) {
        digitalWrite (Stoerungszaehler_Nr4, HIGH);
    } else { digitalWrite (Stoerungszaehler_Nr4, LOW); }
    if (Stoerungszaehler > 4) {
        digitalWrite (Stoerungszaehler_Nr5, HIGH);
    } else { digitalWrite (Stoerungszaehler_Nr5, LOW); }
}
// *********************************************************************************************        


Testschaltung

Testschaltung


Sofern die Heizung fehlerfrei läuft, hat der Mikrocontroller wenig zu tun. Er bringt lediglich die grüne Leuchtdiode LD1 zum Blinken, um der Welt mitzuteilen, dass er da ist und sich langweilt. Das Relais K1 bleibt nicht angezogen. Über sein Öffnerkontakt, der geschlossen bleibt, wird die Heizung mit Spannung versorgt und arbeitet. Diese Tatsache wird mit der blauen Leuchtdiode LD12 bestätigt. Die Heizung verfügt über ein Info-Kontakt, der in der Schaltung mit dem Taster S1 symbolisiert wird. Wenn eine Störung auftritt und die Heizung ausfällt, wird dieser Kontakt geschlossen.
Sobald dies geschieht, tritt der Mikrocontroller in Aktion.
Das Relais K1 wird angezogen und die Heizung auf diese Weise von der Spannungsversorgung getrennt. Die Leuchtdiode D12 geht dabei aus. Die weiße Leuchtdiode LD11 bestätigt, dass Relais unter Spannung steht. Gleichzeitig geht die erste blaue Zeit-Leuchtdiode LD3 an. Die voreingestellte Zeit von insgesamt 30 Min beginnt zu laufen. Nach 10 Minuten wird die zweite blaue Zeit-Leuchtdiode LD4, nach 20 Minuten LD5 zugeschaltet. Nach Ablauf der Zeit wird das Relais ausgeschaltet und die Heizung damit wieder eingeschaltet. Mit der Leuchtdiode LD6 wird die Tatsache festgehalten, dass die Heizung seitdem der automatische Ablauf gestartet wurde, bereits 1-mal auf Störung gegangen ist.
Jetzt wiederholt sich der Ablauf, bis erneut eine Störung auftritt.

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz