Hager-Schalter


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Regentonne
mit Schrittmotor und Mikrocontroller

Regentonne mit Schrittmotor


Es gilt eine einfache Steuerung für die Verwaltung des Regenwassers zu erstellen. Das Regenwasser, das vom Dach einer Gartenlaube aufgefangen wird, wird zunächst zu einem Regenwasserverteiler geführt. In diesem Verteiler befinden sich zwei Abflussrohre, die nach Bedarf geöffnet oder geschlossen werden können. Mit einem der Abflussrohre gelangt das Regenwasser zu einer Regentonne. Mit dem anderen Abflussrohr wird das Wasser zu einem Regenwasserkanal geführt. In diesem Verteiler wird somit beim Regen entschieden, wohin das Regenwasser fließen soll. Der Rohrverschluss ist so konzipiert, dass jeweils nur ein Abflussrohr geöffnet werden kann. Im Normalzustand ist der Regentonne Zufluss stets geschlossen. Beim Regen kann er manuell geöffnet werden. Es ist wichtig, dass diese Entscheidung nicht sofort und automatisch getroffen wird. Manchmal ist es notwendig abzuwarten, bis der Schmutz, Laub oder Ähnliches vom Dach weggespült wird, bevor das Wasser in die Regentonne umgeleitet wird.
Nachdem der Regentonne Zufluss geöffnet wurde, kann der automatische Ablauf aktiviert werden. Die Aufgabe der Schaltung reduziert sich hier auf die Überwachung des Wasserstandes in der Regentonne. Sobald die Regentonne voll ist, wird der Zulauf zu ihr wieder gesperrt. Gleichzeitig wird das Abflussrohr zu dem Regenwasserkanal geöffnet und das Regenwasser entsprechend umgeleitet.

Schrittmotor

Schrittmotor

Für das Schließen und Öffnen des Zuflusses der Regentonne ist der Schrittmotor ACT 17HS4417 zuständig. Da mit einem Schrittmotor genaue Positionierung kein Problem darstellt, arbeitet der Motor nur mit einem Positionsschalter, der als Referenzpunkt dient. Bevor der automatische Ablauf aktiviert wird, wird manuell der Referenzpunkt angefahren. So wird sichergestellt, dass der Motor vor dem Start der Automatik die richtige Startposition erreicht hat.

Motortreiber

Motortreiber

Man kann einen Treiber für einen Schrittmotor auch selbst konstruieren. Viel einfacher ist es jedoch, ein fertiges Modul für diese Aufgabe einzusetzen. Der DM420 kann Motoren bis zu 2,8 A Stromaufnahme ansteuern.

Treiber DM420

Positionsschalter

Positionsschalter

Mit einem induktiven Näherungsschalter von Turck wird ein Referenzpunkt markiert. Er sorgt dafür, dass nach jeder Neuanschaltung der Steuerung die richtige Ausgangsposition angefahren werden kann.

Turck Initiator

Niveauschalter

Niveauschalter

Der Wasserstand in der Regentonne wird mit einem einfachen Niveauschalter überwacht. Sobald der gewünschte Wasserstand erreicht wurde, wird der Zufluss zu Regentonne wieder geschlossen.

Niveauschalter

Mikrocontroller

Mikrocontroller

Die gesamte Signalkoordination wird von dem Mikrocontroller Arduino Nano gemanagt. Insgesamt verwaltet das Programm drei Eingänge und vier Ausgänge. Das bedeutet, dass noch ausreichend IOs zur Verfügung stehen, um das Programm um weitere Funktionen zu erweitern.

Arduino

Spannungsregler

Spannungsregler

Je nachdem, welche Komponenten zur Verfügung stehen, muss man innerhalb einer Schaltung unter Umständen mit mehreren Spannungen arbeiten. In diesem Fall kommen zwei Spannungen zum Einsatz. Die Spannungsversorgung beträgt 12 VDC. Der Spannungsregler stellt zusätzlich die Spannung von 5 VDC bereit. Diese wird für den Mikrocontroller und seine Signale benötigt.

Spannungsregler LM2596

Schaltplan

Schaltplan

Schaltplan

Testschaltung

Testschaltung


Testschaltung Verdrahtung


Programm (Sketch)

// ********************************************************************************************
// Regentonne: Steuerung des Wasserflusses
// ACT Motor 17HS4417 / Treiber DM420
// Arduino Nano, IDE 2.1.1
// ********************************************************************************************

int PUL = 2;                                          // Pulse
int DIR = 3;                                          // Drehrichtung
int ENBL = 4;                                         // Freigabe
int Taster_Start = 6;                                 // Programm Start
int Niveauschalter = 5;                               // Wasserstand
int Positionsschalter = 7;                            // Position Regentonne
int Info_LED = 8;                                     // Anzeige LED
bool Taster_betaetigt;                                // Merker Taster betätigt
bool Auto_aktiv;                                      // TRUE = Automatischer Ablauf aktiviert

void setup() {
    pinMode (PUL, OUTPUT);
    pinMode (DIR, OUTPUT);
    pinMode (ENBL, OUTPUT);
    pinMode (Info_LED, OUTPUT);
    pinMode (Taster_Start, INPUT_PULLUP);
    pinMode (Niveauschalter, INPUT_PULLUP);
    pinMode (Positionsschalter, INPUT_PULLUP);
    digitalWrite (ENBL, HIGH);
}
                                                      // Unterprogramm Motordrehung
void Motor_drehen (int Schritte, int Zeit, int Richtung) {
    digitalWrite(DIR, LOW);                           // Richtungsbestimmung
    if (Richtung) { digitalWrite(DIR, HIGH); }
    for (int i = 0; i < Schritte; i++) {              // Schritte abarbeiten
        digitalWrite(PUL, LOW);
        delayMicroseconds(Zeit);
        digitalWrite(PUL, HIGH);
        delayMicroseconds(Zeit); 
    }
}
                                                      // Hauptprogramm
void loop() {
                                                      // Verschluss nicht in Posotion
    if (digitalRead(Taster_Start) == HIGH) {          // LED blinkt
        if (digitalRead(Positionsschalter) == LOW) {
            if (not Auto_aktiv) {
                digitalWrite (Info_LED, HIGH);
                delay(50); 
                digitalWrite (Info_LED, LOW);
                delay(1000);
            }
        }
    }

    if (digitalRead(Taster_Start) == LOW) {           // Zufluß Regenntonne öffnen
        if (digitalRead(Positionsschalter) == LOW) {
                Taster_betaetigt = true;                
                Motor_drehen (1, 800, LOW); 
        }
    }

    if (digitalRead(Taster_Start) == HIGH) {          // Taster losgelassen
        Taster_betaetigt = false; 
        delay (100);
    }

    if (digitalRead(Taster_Start) == LOW) {           // Automatik Aktivierung
        if (digitalRead(Positionsschalter) == HIGH) {
            if (not Taster_betaetigt) {
                Auto_aktiv = true; 
                digitalWrite (Info_LED, HIGH);
            }
        }
    }

    if (Auto_aktiv) {                                 // Regentonne voll, schließen
        if (digitalRead(Niveauschalter) == HIGH) {
            digitalWrite (Info_LED, LOW);
            Motor_drehen (3200, 800, HIGH);
            Auto_aktiv = false;
        }
    }
}

// ********************************************************************************************        
         

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz