7 Segnment-Anzeige


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


ACT Schrittmotor mit DM420 Treiber


Für kleine Hobby-Projekte, wo man von eingesetztem Motor etwas mehr Power und Geschwindigkeit erwartet, werden die kleinen 28BYJ-48, die so gern für diverse Experimente genommen werden, wohl Platz machen müssen. In dem Beispiel kommt der ACT - Motor 16HS2404L14.5P1-X, der deutlich stärker, schneller und zuverlässiger arbeitet, zum Einsatz.

ACT MOTOR 16HS2404L14.5P1-X

ACT MOTOR 16HS2404L14.5P1-X

Bei dem Motor handelt es sich um einen Zweiphasenmotor mit vier Anschlussleitungen. Der Schrittwinkel beträgt 1.8°, die Stromaufnahme liegt bei 400 mA. In dem Beispiel wird der Motor mit dem Treiber DM420 angesteuert. Für die komplette Steuerung des Motors werden dank dessen nur drei Leitungen benötigt: Freigabe, Drehrichtung, Pulse.

DM420

DM420

Der Treiber kann mit einer Spannung von 12 bis 36 VDC eingespeist werden. Auf der Anschlussseite befinden sich sieben DIP-Schalter für diverse Einstellungen. Mit den Schaltern SW1 bis SW3 kann der Strom eingestellt werden. Mit den Schaltern SW5 bis SW7 kann die Auflösung eingestellt werden. In dem Beispiel wird der Motor mit einer Auflösung von 400 Schritten pro Umdrehung bewegt. Die Einstellung der DIP-Schalter sieht wie folgt aus: SW5 = OFF, SW6 = ON und SW7 = ON.

Der Schaltplan

Der Schaltplan

Der Schaltplan

Die Testschaltung

Testschaltung

Testschaltung

Das Programm (Sketch)

In dem kurzen Sketch werden insgesamt zwei Taster und ein Schalter abgefragt. Mit den beiden Tastern kann man manuell den Motor nach links bzw. nach rechts drehen lassen. Mit dem Potenziometer P1, der an den analogen Eingang A0 des Arduino angeschlossen ist, wird die Geschwindigkeit des Motors eingestellt. Es werden bei den Einstellungen (SW5=OFF, SW6=ON, SW7=ON) für eine volle Umdrehung 400 Impulse (Eingang PUL) benötigt. Durch einen zeitlichen Abstand zwischen den einzelnen Impulsen wird die Geschwindigkeit des Motors beeinflusst. Während des automatischen Ablaufs werden diverse Schritt-Reihenfolgen abgearbeitet. Dabei beträgt die Summe aller Schritte pro Sequenz 400. Damit bleibt der Motor nach jeder Sequenz an der gleichen (Start-) Position stehen. Die einzelnen Sequenzen werden mit unterschiedlichen Geschwindigkeiten absolviert.

// *****************************************************************************
// Schrittmotor - Steuerung
// ACT Motor 16HS2404L14.5P1-X / Treiber DM420
// Arduino Mega2560, IDE 1.8.13
// *****************************************************************************


int PUL = 23;                                  // Pulse
int DIR = 25;                                  // Drehrichtung
int ENBL = 27;                                 // Freigabe
int Taster_Hand_Rechts = 2;       
int Taster_Hand_Links = 3;
int Schalter_Automatik = 4;           
int i, j;  

void setup() {
    pinMode (PUL, OUTPUT);
    pinMode (DIR, OUTPUT);
    pinMode (ENBL, OUTPUT);
    pinMode (Taster_Hand_Rechts, INPUT_PULLUP);
    pinMode (Taster_Hand_Links, INPUT_PULLUP);
    pinMode (Schalter_Automatik, INPUT_PULLUP);
    digitalWrite (ENBL, HIGH);
}

void Motor_drehen (int Schritte, int Pulslaenge, int Richtung, int Geschwindigkeit) {
    if (Richtung) { digitalWrite(DIR,HIGH); } 
        else 
        { digitalWrite(DIR,LOW); }
    for (i = 0; i < Schritte; i++) {
        digitalWrite(PUL,HIGH);
        delayMicroseconds(Pulslaenge);
        digitalWrite(PUL,LOW);
        delayMicroseconds(Geschwindigkeit); }
}

void loop() {
                                               // Automatik
    if (digitalRead(Schalter_Automatik) == LOW) {
         for (j = 0; j < 40; j++) {
             Motor_drehen (10, 500, HIGH, 5000); 
             delay (500); }
             delay (2000);
         for (j = 0; j < 10; j++) {
             Motor_drehen (40, 500, LOW, 15000); 
             delay (500); }
             delay (2000);
         for (j = 0; j < 4; j++) {
             Motor_drehen (100, 500, HIGH, 500); 
             delay (500); }
             delay (2000);
         for (j = 0; j < 2; j++) {
             Motor_drehen (200, 500, LOW, 10000); 
             delay (500); }
             delay (2000);
         for (j = 0; j < 10; j++) {
             Motor_drehen (400, 500, HIGH, 500); 
             delay (500); }
             delay (2000);
         for (j = 0; j < 10; j++) {
             Motor_drehen (400, 500, LOW, 500); 
             delay (500); }             
             delay (2000); 
                                               // Lauf mit Rampen
         for (j=500; j>100; j--) {
             Motor_drehen (40, j, HIGH, j); }
         for (j=100; j<500; j++) {    
             Motor_drehen (40, j, HIGH, j); }
             delay (2000);             
    }

    int Analog = analogRead (A0);              // Geschwindigkeit-Einstellung
    int Tempo = Analog * 15 + 500;
                                               // Handbetrieb Rechts
   if (digitalRead(Taster_Hand_Rechts) == LOW) {
       Motor_drehen (1, 500, HIGH, Tempo);
   }
                                               // Handbetrieb Links
   if (digitalRead(Taster_Hand_Links) == LOW) {
       Motor_drehen (1, 500, LOW, Tempo);
   }
}
// *****************************************************************************         


Kurzvideo

Kurzvideo: ACT - Motor mit DM420 - Treiber


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz