Danfoss Umrichter


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Rotierende Werbetafel
(Schrittmotor, ULN2003, Arduino)


Die Drehbewegung eines Schrittmotors besteht aus einzelnen Schritten um einen kleinen Winkel, die durch Spannungsimpulse hervorgerufen werden. Dabei handelt es sich um Spannungsimpulse, deren Anzahl, Frequenz und Reihenfolge von Bedeutung sind. Die Reihenfolge der Impulse bestimmt die Drehrichtung des Schrittmotors, die Frequenz bestimmt seine Geschwindigkeit. Die Anzahl der Impulse bestimmt den Gesamtwinkel, um den sich der Motor dreht. Bei Ansteuerung eines Schrittmotors ist darauf zu achten, dass er bei Problemen (z.B. Überlastung, zu hohe Geschwindigkeit) zu Schrittverlusten kommen kann. Trotzdem, da keine teuren Feedback-Einrichtungen notwendig sind, ist ein Schrittmotor eine echte Alternative für alle Positionierungsaufgaben. In der Schaltung kommt der Schrittmotor 28BYJ-48 zum Einsatz.

Schrittmotor 28byj_48

Schrittmotor 28BYJ-48

Die Nennspannung des Motors beträgt 5 VDC, sein Schrittwinkel 5,625° / 64. Damit braucht der Motor 2048 Schritte für eine volle Umdrehung. Als Treiber verwenden wir den IC ULN2003. Er verfügt über sieben Kanäle mit Darlington-Transistoren, die mit 500 mA belastet werden können. In der Schaltung werden nur vier Kanäle des Treibers verwendet. Alle Kanäle sind mit Freilaufdioden abgesichert, hier brauchen wir keine weiteren Schutz-Maßnahmen zu treffen. ULN2003 wird im Handel u.a. als fertiges Modul angeboten. Der Vorteil dabei ist, dass auf der kleinen Platine direkt passende Anschlüsse vorhanden sind. Zusätzlich sind die Module mit vier Leuchtdioden, jeweils eine für einen Kanal ausgestattet.

Modul_mit_uln2003.jpg

Modul mit ULN2003

Die Schaltung hat keine besonderen Aufgaben. Mit dem Taster S1 kann der Motor in eine Richtung, um die gewünschte Position zu erreichen, manuell bewegt werden. Mit dem Schalter S2 kann ein automatischer Ablauf gestartet bzw. gestoppt werden. In Automatik bewegt sich der Motor jeweils um 180 Grad in eine und anschließend in andere Richtung. Mit dem Potenziometer P1 kann die Drehgeschwindigkeit des Motors eingestellt werden. In einer praktischen Anwendung kann der Motor z.B. eine Info- oder Werbetafel mit passendem Werbetext bewegen. Auch andere Texte sind denkbar:

Werbetafel

(Eine etwas andere) Werbetafel

Der Schaltplan

Schaltplan

Schaltplan

Testschaltung

Testschaltung

Das Programm (Sketch)

Damit das Programm funktioniert, muss die Bibliothek „Stepper.h“ installiert werden. Sie kann mit Hilfe des Bibliotheksverwalters installiert werden. Infos im Internet unter https://www.arduino.cc/en/Reference/Stepper.

Bibliotheksverwalter

Bibliotheksverwalter

// *****************************************************************************
// Schrittmotor Steuerung mit ULN2003
// Arduino Nano, IDE 1.8.12
// *****************************************************************************

#include <Stepper.h>

int Schritte_pro_Umdrehung = 1024;   
Stepper myStepper(Schritte_pro_Umdrehung, 3, 5, 4, 6);
int Taster_Auto = 11;                
int Taster_Hand = 12;                
bool Auto_Start = false;             // false: Auto Rechts, true: Auto Links ...


void setup() {
  pinMode (Taster_Auto, INPUT_PULLUP);
  pinMode (Taster_Hand, INPUT_PULLUP);
}

void loop() {
                                     // Geschwindigkeitseinstellung ............
    int Poti_Wert = analogRead (A5);
    int Soll_Geschwindigkeit = ((Poti_Wert * 15) / 1023) + 1;
    myStepper.setSpeed(Soll_Geschwindigkeit);
    
                                     // Hand Betrieb ...........................
    if ((digitalRead(Taster_Hand) == LOW) && (Auto_Start == false)) {
        myStepper.setSpeed(5);
        myStepper.step(1); }
                                     // Auto-Betrieb Rechtsdrehung .............
    if ((digitalRead(Taster_Auto) == LOW) && (Auto_Start == false)) {
        myStepper.step(Schritte_pro_Umdrehung);
        Auto_Start = true; 
        delay (1000); }
                                     // Auto-Betrieb Linksdrehung ..............        
    if ((digitalRead(Taster_Auto) == LOW) && (Auto_Start == true)) {
        myStepper.step(-Schritte_pro_Umdrehung);
        Auto_Start = false; 
        delay (1000); } 
                                     // Automatik Aus ..........................
    if (digitalRead(Taster_Auto) == HIGH) {
        Auto_Start = false; }
}
// *****************************************************************************
    

Kurzvideo

Kurzvideo: Werbetafel mit Schrittmotor


Schaltungen mit Schrittmotoren


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz