| ACT Schrittmotor mit DM420 Treiber
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 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 SchaltplanDer Schaltplan Die TestschaltungTestschaltung 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); } } // *****************************************************************************
|
Google-Suche auf MEINE-SCHALTUNG.de : |