Leistungsverstaerker für Proportionalventil


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Sonnenanbeter
mit Fotowiderstand, Arduino und Schrittmotor


Sonnenanbeter


Mit „Sonnenanbeter“ konstruieren wir eine Schaltung, die als Lichtverfolger bezeichnet werden kann. Die Hauptrolle spielen hier zwei Fotowiderstände, die ihren Widerstand abhängig von der Lichteinstrahlung verändern und in der Schaltung die Rolle der Lichtsensoren übernehmen. Bei ansteigender Lichteinstrahlung verringert sich der Widerstand der Fotowiderstände. Und umgekehrt: Bei immer geringerer Lichteinstrahlung vergrößert sich der Widerstand. Genau diese Tatsache wird in der Schaltung genutzt. Die Fotowiderstände werden mit je einem festen 10 kOhm Widerstand in Reihe verschaltet. Die Spannungsverhältnisse an so gebildeten Spannungsteilern ändern sich dann abhängig vom Licht. Die Spannungen der beiden Spannungsteiler werden an die analogen Eingänge des Arduino geführt, dort gemessen und verglichen.
Die richtige Funktionalität der Schaltung hängt von der Einstellung der beiden Lichtsensoren ab. Sie werden in kleiner Entfernung voneinander positioniert und leicht nach links und rechts ausgerichtet. Natürlich sollen sie ungehindert von einer Lichtquelle bestrahlt werden können.
In dem konkreten Beispiel befinden sich die Lichtsensoren auf einem Teller, der durch einen Motor bewegt werden kann. Das Ziel der Schaltung ist es, dafür zu sorgen, dass beide Sensoren die gleiche Lichteinstrahlung erfahren. Wenn sich die Lichtquelle, z.B. die Sonne, bewegt, muss der Teller ebenfalls bewegt werden, um den alten Zustand der gleichen Lichteinstrahlung beiden Sensoren herzustellen. So entsteht der Effekt eines Lichtverfolgers.

Fotowiderstand

Fotowiderstand

Der Widerstand der Lichtsensoren, die in der Schaltung zur Messung der Lichteinstrahlung zum Einsatz kommen, pendelt zwischen ca. 10 MOhm (dunkel) und 500 Ohm (hell). Damit liefern die mit festen Widerständen von 10 kOhm gebildete Spannungsteiler Spannungen zwischen 0,23V bis 4,99V. Fotowiderstände, auch Photoresistoren oder LDR (Light Dependent Resistor) genannt, können zu sehr günstigen Preisen unter 1 Euro erworben werden.

Schrittmotor 28BYJ-48

Schrittmotor 28BYJ-48

Schrittmotor 28BYJ-48

Bei dem Motor 28BYJ-48 handelt es sich um einen Schrittmotor, der für eine volle Umdrehung 2048 Schritte benötigt. Die Drehung des Motors wird durch elektrische Impulse hervorgerufen. Mit der Anzahl der Impulse, die Reihenfolge und Frequenz werden der gesamte Winkel der Drehung, die Drehrichtung und die Geschwindigkeit des Motors bestimmt. Der 28BYJ-48 arbeitet mit 5VDC.

Motoranschluss

Motoranschluss

Technische Daten:

Nennspannung: 5VDC
Anzahl der Phasen: 4
Geschwindigkeitsänderungsverhältnis: 1/64
Schrittwinkel: 5,625° / 64
Widerstand: 50 Ohm
Wellendurchmesser: 5 mm
Abmessungen: 31 mm (Länge), 28 mm (Breite), 29 mm (Höhe)

Anschluss-Stecker

Anschluss-Stecker

Werbetafel (Positionierung mit 28BYJ-48)
Autopilot (28BYJ-48 gesteuert ohne Bibliothek)


Motortreiber-Modul mit ULN2003A

Motortreiber

Zwischen dem Motor und Arduino wird ein Motortreiber zwischengeschaltet. Das ist notwendig, da die Arduino-Ausgänge nur begrenzt belastet werden können. Bei dem Treiber handelt es sich um ein fertiges Modul, das auf dem IC ULN2003A basiert. Der Baustein verfügt über sieben Kanäle und kann pro Kanal mit 500 mA belastet werden.

ULN2003A

Arduino Uno

Arduino Uno

Die Messung der Spannungen an den Spannungsteilern und ihre Auswertung erledigt Arduino Uno. In der Schaltung werden sieben digitale I/Os und zwei analoge Eingänge des Mikrocontrollers in Anspruch genommen. Das bedeutet, dass noch viele freie Pins für eventuelle Erweiterungen zur Verfügung stehen.

Arduino


Der Schaltplan

Der Schaltplan

Der Schaltplan


Die Testschaltung

Testschaltung

Testschaltung

Das Programm

// ************************************************************************************
// Sonnenanbeter
// Schaltung mit Arduino UNO, Schrittmotor 28BYJ-48, Motortreiber ULN2003
// und zwei Fotowiderständen
// Arduino UNO
// IDE 1.8.19
// ************************************************************************************

#include <Stepper.h>                                       // Bibliothek einbinden

int Schritte_pro_Umdrehung = 1024;   
Stepper myStepper(Schritte_pro_Umdrehung, 2, 4, 3, 5);  
int Taster_Manuell_Links = 8;                              // Manuelle Steuerung LINKS
int Taster_Manuell_Rechts = 9;                             // Manuelle Steuerung RECHTS
int Schalter_Automatik = 10;                               // Schalter für Automatik
int Fotowiderstand_Rechts;                                 // Helligkeitsmessung LINKS
int Fotowiderstand_Links;                                  // Helligkeutsmessung RECHTS
int Wert_Analog;                                           // Analogeingang auslesen
int Abweichung = 0;                                        // Hysterese


void setup() {
  pinMode (Taster_Manuell_Links, INPUT_PULLUP);            // Taster Bewegung LINKS
  pinMode (Taster_Manuell_Rechts, INPUT_PULLUP);           // Taster Bewegung RECHTS
  pinMode (Schalter_Automatik, INPUT_PULLUP);              // Umschaltung auf AUTO
}

void loop() {
                                     // HAUPTPROGRAMM ..............................    
    Fotowiderstand_Links = 0;                              // Analoger Eingang wird
    for (int i = 0; i < 10; i++) {                         // 10 Mal ausgelesen
        Wert_Analog = analogRead (A1);
        Fotowiderstand_Links = Fotowiderstand_Links + Wert_Analog;  
    }
    Fotowiderstand_Links = Fotowiderstand_Links / 10;      // Mittelwert
   
    Fotowiderstand_Rechts = 0;                             // wie oben
    for (int i = 0; i < 10; i++) {                                     
        Wert_Analog = analogRead (A0);
        Fotowiderstand_Rechts = Fotowiderstand_Rechts + Wert_Analog; 
    }
    Fotowiderstand_Rechts = Fotowiderstand_Rechts / 10;

   
    if (digitalRead(Schalter_Automatik) == LOW) {          // Automatik aktiviert
                                                           // Bewegung LINKS
        if (Fotowiderstand_Links > (Fotowiderstand_Rechts + Abweichung)) {
            myStepper.setSpeed(5);
            myStepper.step(-1); 
            Abweichung = 0;
        }
                                                           // Bewegung RECHTS
        if (Fotowiderstand_Rechts > (Fotowiderstand_Links + Abweichung)) {
            myStepper.setSpeed(5);
            myStepper.step(1);
            Abweichung = 0; 
        }        
    }
                                                           // Ziel erreicht
    if (Fotowiderstand_Links == Fotowiderstand_Rechts) {
         Abweichung = 20; 
    }
                                     // Hand Betrieb - Manuell LINKS drehen ...........
    if (digitalRead(Taster_Manuell_Links) == LOW) {
        myStepper.setSpeed(10);
        myStepper.step(-1); 
        Abweichung = 0;}                                  // Abweichung für AUTO nullen

                                     // Hand Betrieb - Manuell RECHTS drehen ..........
    if (digitalRead(Taster_Manuell_Rechts) == LOW) {
        myStepper.setSpeed(10);
        myStepper.step(1); 
        Abweichung = 0;}                                  // Abweichung für AUTO nullen
}  

Kurzvideo zur Schaltung

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz