Verteiler von Balluff


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Wasserspiele

(PWM, Gleichstrommotor)

In dem Versuch werden fünf kleine Wasserpumpen zu einem Wasserspiel zusammen geschaltet. Bei den Wasserpumpen handelt es sich um Pumpen mit Gleichstrommotoren, die wir mit PWM Signalen ansteuern werden. Für die Erzeugung der Signale sorgt der kleine Mikrocontroller Arduino. Mit dem PWM-Signal wird die Drehzahl der Motoren beeinflusst. Dadurch wird das Wasservolumen, das die Pumpen in bestimmtem Zeitintervall fördern, bestimmt. Auf diese Weise kann jede Pumpe für Bildung einer Fontäne, bei der die Höhe des Wasserstrahles flexibel gestaltet werden kann, verwendet werden.

Wasserpumpe 5VDC


Pumpe Einlauf/Auslauf

Wasserpumpe Einlauf/Auslauf

Bei der Wasserpumpe handelt es sich um eine kleine Wassertauchpumpe, die mit einem Gleichstrommotor ausgestattet ist. Sie arbeitet mit einer Betriebsspannung von 5 VDC. Der Stromverbrauch liegt im Bereich von 200 mA. Ihre elektrische Leistung beträgt ca. 0,9 Watt. Die Pumpe kann bis zu 100 L Wasser pro Stunde fördern. Ihre Abmessungen betragen gerade 42x24 mm. Damit eignet sie sich ausgezeichnet für diverse Wohnzimmer-Experimente, ohne Gefahr zu laufen, den Fernseher, Radio oder PC samt Tastatur gleich unter Wasser zu setzen.

Wasserpumpe Abmessungen

Wasserpumpe Abmessungen

Wasserpumpen

In dem Versuch kommen gleich fünf Tauchpumpen zum Einsatz.

Transistor

Transistor BD 437

Transistor BD 437

Unsere Wasserpumpe mit ihrem bei 200 mA liegenden Stromverbrauch kann nicht direkt an einen Arduino Ausgang angeschlossen werden. Damit wäre er überlastet und folglich zerstört. Diese Aufgabe übernimmt ein Transistor. Der Transistor BD347, der hier zum Einsatz kommt, kann bis zu 4A schalten. Sollte er dauerhaft größere Ströme schalten, wäre ein Kühlkörper erforderlich.

BD 437


Spannungsversorgung

Spannungsregler

Spannungsregler

Die Schaltung benötigt zwei Spannungen. Die Wasserpumpen werden mit 5VDC versorgt. Arduino benötigt eine Spannung zwischen 7-12 VDC. Als Spannungsquellen kommen in der Schaltung zwei fertige Spannungsregler mit LM 2596 zum Einsatz. Extern werden beide Module mit 24 VDC eingespeist.

Spannungsregler mit LM2596


Musik

Lautsprecher

Die Hilfe bei einigen musikalischen Tönen leistet uns ein 3W - Lautsprecher.


Der Schaltplan

Schaltplan

Schaltplan

Mit dem Schalter S1 wird ein Pumpentest – Programm gestartet. Es werden alle Pumpen nacheinander angesteuert, um festzustellen, ob die gewünschte Funktionalität gegeben ist. Mit Schalter S2 wird eine kleine Wasserspiel-Show inklusive Musiktöne gestartet. Mit dem Potenziometer P1 kann die Lautstärke des Lautsprechers eingestellt werden. Über die Widerstände R1 bis R5 werden die Transistoren mit dem PWM-Signal angesprochen. Sie schalten dann die Wasserpumpen, die auf dem Plan mit M1 bis M5 gekennzeichnet sind. Zwei Spannungsregler reduzieren die Eingangsspannung von 24 VDC auf die 5 VDC Pumpenspannung und Arduino – Spannung, die hier 9 VDC beträgt.

Die Testschaltung

Testschaltung

Testschaltung

Testschaltung mit Wasserpumpen

Testschaltung komplett mit Wasserpumpen

Arduino

Arduino

Alle Schaltungskomponenten vereint ein Arduino-Sketch.

Arduino


Das Programm (Sketch)

Das Programm verwaltet insgesamt acht Pins des Arduino. Zwei von ihnen sind als digitale Eingänge definiert. Hier sind die beiden Taster S1 und S2 angeschlossen. Die Pins vier bis acht steuern als Ausgänge die Pumpen an. Der Pin 12 ist dann für den Lautsprecher zuständig. Die Taster-Pins sind als PULLUP Eingänge definiert. Das bedeutet, dass sie, um von dem Programm als „betätigt“ erkannt zu werden, mit der Masse verbunden werden müssen. Die digitalen Pumpen-Pins, da sie mit analogWrite () beschrieben werden, müssen nicht in SetUp explizit reklamiert werden.

Das Programm besteht aus zwei FOR-Schleifen, die mit den jeweiligen Tastern aktiviert werden können. Mit dem Taster S1 (Pin D9) wird das Pumpen-Testprogramm gestartet. Es werden nacheinander alle fünf Pumpen angesteuert. Zuerst wird der PWM-Wert in einem Takt von 50 ms erhöht. Dies geschieht mit einer weiteren (untergeordneten) FOR-Schleife. Der Startwert muss an die Motoren angepasst werden. Bei zu kleinem Wert hat die Pumpe noch zu wenig Leistung und dreht nicht. Mit dem PWM-Wert wird die Spannung der Pumpe reguliert. Bei einem PWM-Wert von 255 steht die Pumpe unter voller Spannung, die hier 5 VDC beträgt.
Anschließend wird der PWM-Wert mit einer weiteren (ebenfalls untergeordneten) FOR-Schleife verringert.

Mit dem Taster S2 (Pin D10) starten wir dann das eigentliche Show-Programm. Der Lautsprecher und die Pumpen werden für fest definierte Zeiten mit unterschiedlichen, gleichfalls fest definierten Frequenz-Werten angesteuert. Diese Werte sind in dem zweidimensionalen Array „Wassershow“ festgeschrieben. Auf diese Weise kann man eine beliebige Kombination aus Musiktönen und unterschiedlich starken Wasserstrahlen der einzelnen Pumpen erstellen.

// *****************************************************************************
// Arduino Sketch
// Wasserspiele
// Steuerung eines Gleichstrommotors mit PW
// Arduino Mega2560, IDE 1.8.13
// *****************************************************************************

                                                            // Tabelle (Array) Wassershow
                                                            // Bedeutung der Elemente:
                                                            // 0 - Ton - Frequenz
                                                            // 1 - Wartezeit in ms
                                                            // 2 - PWM - Wert Pumpe 1 
                                                            // 3 - PWM - Wert Pumpe 2
                                                            // 4 - PWM - Wert Pumpe 3
                                                            // 5 - PWM - Wert Pumpe 4
                                                            // 6 - PWM - Wert Pumpe 5 

int Wassershow [61][7] = { { 262, 1000, 150, 000, 000, 000, 000 }, 
                           { 294, 1000, 000, 150, 000, 000, 000 },
                           { 330, 1000, 000, 000, 150, 000, 000 },
                           { 349, 1000, 000, 000, 000, 150, 000 },
                           { 392, 1000, 000, 000, 200, 000, 150 },
                           { 330, 1000, 000, 000, 200, 000, 000 },
                           { 392, 1000, 000, 000, 000, 200, 000 },
                           { 330, 1000, 200, 000, 000, 000, 000 },
                           { 000, 0200, 200, 000, 000, 000, 000 },
                           { 330, 1000, 000, 000, 200, 000, 000 },
                           { 000, 0200, 000, 000, 200, 000, 000 },
                           { 330, 1000, 150, 000, 000, 000, 000 },
                           { 000, 0200, 150, 000, 000, 000, 000 },
                           { 294, 1000, 000, 000, 000, 200, 000 },
                           { 000, 0200, 000, 000, 000, 200, 000 },
                           { 294, 1000, 000, 000, 200, 000, 000 },
                           { 000, 0200, 000, 000, 200, 000, 000 },
                           { 262, 3000, 200, 000, 000, 000, 200 },
                           { 262, 2000, 220, 220, 220, 220, 220 },
                           { 262, 1500, 255, 255, 255, 255, 255 },
                           { 262, 2000, 150, 255, 150, 255, 150 },  
                           { 000, 1200, 000, 000, 200, 000, 000 },  

                           { 330, 0700, 120, 000, 000, 000, 000 },
                           { 000, 0500, 120, 000, 000, 000, 000 },
                           { 330, 0700, 000, 000, 000, 000, 120 },
                           { 000, 0500, 000, 000, 000, 000, 120 },
                           { 294, 0700, 000, 120, 000, 000, 000 },
                           { 000, 0500, 000, 120, 000, 000, 000 },
                           { 294, 0700, 000, 000, 000, 200, 000 },
                           { 000, 0500, 000, 000, 000, 200, 000 },
                           { 330, 0700, 150, 150, 250, 150, 150 },
                           { 000, 0500, 150, 150, 250, 150, 150 },
                           { 330, 0700, 000, 200, 000, 200, 000 },
                           { 000, 0500, 000, 200, 000, 200, 000 },
                           { 349, 0700, 000, 000, 100, 000, 000 },
                           { 000, 2500, 000, 000, 100, 000, 000 },  

                           { 330, 0700, 120, 000, 000, 000, 000 },
                           { 000, 0500, 120, 000, 000, 000, 000 },
                           { 330, 0700, 000, 000, 000, 000, 120 },
                           { 000, 0500, 000, 000, 000, 000, 120 },
                           { 294, 0700, 000, 120, 000, 000, 000 },
                           { 000, 0500, 000, 120, 000, 000, 000 },
                           { 294, 0700, 000, 000, 000, 200, 000 },
                           { 000, 0500, 000, 000, 000, 200, 000 },
                           { 330, 0700, 150, 150, 250, 150, 150 },
                           { 000, 0500, 150, 150, 250, 150, 150 },
                           { 330, 0700, 000, 200, 000, 200, 000 },
                           { 000, 0500, 000, 200, 000, 200, 000 },
                           { 349, 0700, 000, 000, 100, 000, 000 },
                           { 000, 1500, 000, 000, 100, 000, 000 },  

                           { 330, 0600, 150, 180, 210, 230, 255 },
                           { 000, 0300, 150, 180, 210, 230, 255 },
                           { 330, 0600, 255, 230, 210, 180, 150 },
                           { 000, 0300, 255, 230, 210, 180, 150 },
                           { 294, 0600, 150, 150, 150, 150, 150 },
                           { 000, 0300, 150, 150, 150, 150, 150 },
                           { 294, 0600, 000, 180, 255, 180, 000 },
                           { 000, 0300, 000, 180, 255, 180, 000 },
                           { 262, 0600, 180, 000, 100, 000, 180 },
                           { 262, 5000, 000, 000, 255, 000, 000 },

                           { 000, 1000, 000, 000, 000, 000, 000 } }; 
                            

int Taster_Pumpen_Test = 9;
int Taster_Wasserspiel = 10;
int Lautsprecher = 12;
int Pumpe [] = {4,5,6,7,8};


void setup() {
    pinMode (Taster_Pumpen_Test, INPUT_PULLUP);
    pinMode (Taster_Wasserspiel, INPUT_PULLUP);
    pinMode (Lautsprecher, OUTPUT);
}

void loop() {

    if (digitalRead(Taster_Pumpen_Test) == LOW) {         // Taster TEST betätigt
        for (int i=0; i<5; i++) {                         // FOR Schleife start
            for (int j=150; j<256; j++) {                 // PWM - Wert erhöhen
                analogWrite (Pumpe [i], j);               // Pumpe ansteuern
                delay (50);                               // Ein wenig warten
            }
            for (int j=255; j>99; j--) {                  // PWM - Wert verringern
                analogWrite (Pumpe [i], j);               // Pumpe ansteuern
                delay (50);                               // Wieder etwas warten
            }
            analogWrite (Pumpe [i], 0);                   // Pumpe AUS
        }
    }
    
    if (digitalRead(Taster_Wasserspiel) == LOW) {         // Taster SHOW betätigt
        for (int i=0; i<61; i++) {                        // Oben definiertes Array durchlaufen
            tone (Lautsprecher, Wassershow [i][0]);       // Frequenz für Lautsprecher
            analogWrite (Pumpe [0], Wassershow [i][2]);   // PWM - Wert für Pumpe 1
            analogWrite (Pumpe [1], Wassershow [i][3]);   // PWM - Wert für Pumpe 2
            analogWrite (Pumpe [2], Wassershow [i][4]);   // PWM - Wert für Pumpe 3
            analogWrite (Pumpe [3], Wassershow [i][5]);   // PWM - Wert für Pumpe 4
            analogWrite (Pumpe [4], Wassershow [i][6]);   // PWM - Wert für Pumpe 5
            delay (Wassershow [i][1]);                    // Wartezeit
        }
    }    
}
// **************************************************************************************        
    

Kurzvideo

Wasserspiel: Gleichstrommotor mit PWM steuern


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz