Bastelseite Display + Antriebe Sensoren C++ | |
Ein Motor mit vielen kleine Schritten
Ein Schrittmotor ist normalerweise ein würfelförmiges Gebild mit einer Welle und 4 Anschlüssen
Diese gibt es in verschiedenen Baugrößen, Stromstärken
Sein Innenleben ist dafür umso aufwendiger: ein Rotor wird durch ein gesteuertes, schrittweise rotierendes, elektromagnetisches Feld der Statorspulen um einen kleinen Winkel (der Schritt) oder sein Vielfaches gedreht.
Der Schrittmotor macht für eine komplette Umdrehung 200 Schritte! Für jeden Schritt sind dies also nur 1,8 °.
Mehr Infos zum Thema Steppermotor: https://coeleveld.com/arduino-stepper-l298n/
https://www.roboter-bausatz.de/
Mit ACCEL Stepperhttps://www.makerguides.com/l298n-stepper-motor-arduino-tutorial/
Mit ENA A/B: https://create.arduino.cc/projecthub/ryanchan/how-to-use-the-l298n-motor-driver-b124c5
Da ein Schrittmotor nur über elektronische Steuerungen regelbar wird, benötigt er entweder einen Chip oder eine komplette Platine als Motortreiber.
Vom Arduino direkt wird der Motortreiber angesprochen, der die Befehlsfolge verstärkt an die zwei Spulen des Motors in richtiger Kombination weitergeben kann.
Die kleineren Schrittmotoren (5 Volt-Ausführung!) werden meist noch vom Netzteil des Arduinos mit versorgt. Da wird die Platine an die Platine des Motortreibers Arduino und der Steppermotor direkt angeschlossen.
Bei den größeren Motoren wird eine zusätzliche Spannung benötigt. Bei mir findet dafür ein Akku Verwendung: ein Lithium-Ion Polymer RC-Pack mit 11,1 Volt und 2,8 Ah. Genügend "Dampf" für einige Tests am PC ...
Folgende Farben habe ich für den Anschluß verwendet:
Arduino | Farbe | L 298 N | Farbe | Motor | Farbe | Akku |
---|---|---|---|---|---|---|
Pin 8 | Hellblau | IN 1 | ||||
Pin 9 | blau | IN 2 | ||||
Pin 10 | rot | IN 3 | ||||
Pin 11 | grün | IN 4 | ||||
Motor A | blau | 1 | ||||
Motor A | orange | 2 | ||||
Motor B | rot | 3 | ||||
Motor B | gelb | 4 | ||||
GND | schwarz | Minus | schwarz | schwarz | Minus | |
Plus | rot | rot | Plus |
Der Akku dient nur zur Stromversorgung des Steppermotors über den Anschluß der L 298 N-Platine.
Der Arduino erhält eine eigene 9 Volt-Batterie zur Speisung. Lediglich werden nur die schwarzen Masse-Anschlüsse (GND) miteinander verbunden. Keine roten Pluskabel verbinden!
Vom Akku darf das rote Pluskabel nur zur Platine des L 298 N führen!
Öffnet den Sketch in einem eigenen TAB: stepper-1.ino Und hier der Sketch dazu:
/* stepper-1.ino * * Funktionserklärungen an einem Beispiel * für die Arbeitsweise eines Steppermotors */ #include <Stepper.h> // Bindet die Funktions-Bibliothek mit ein #define STEPS 200 // 200 steps / Schritte für eine Umdrehung Stepper stepper(STEPS, 8, 9, 10, 11); // Anschlüsse am Arduino void setup() { int i; // Voreinstellung alles auf LOW = Stillstand des Motors bei Beginn digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); Serial.begin(9600); } void loop( ) { Serial.println(" ------------------------------------------"); Serial.println("Geschwindigkeit auf '100' gesetzt."); // Anzeige auf seriellem Monitor stepper.setSpeed(100); // Setzt die Geschwindigkeit auf "100" delay(2000); // Pause von 2 Sekunden Serial.println("200 Steps = 1 Umdrehung nach rechts"); // Anzeige auf seriellem Monitor stepper.step(200); // Motor dreht rechts herum -> 200 steps = 1 Umdrehung delay(1000); // Pause von 1 Sekunde Serial.println("-200 Steps = 1 Umdrehung nach links"); // Anzeige auf seriellem Monitor stepper.step(-200); // Motor dreht links herum, wegen "-" vor den 200 steps delay(1000); //pause Serial.println(" ------------------------------------------"); Serial.println("Geschwindigkeit auf '90' gesetzt."); stepper.setSpeed(90); delay(2000); // Pause von 2 Sekunden Serial.println("200 Steps = 1 Umdrehung nach rechts"); stepper.step(200); delay(1000); // Pause von 2 Sekunden Serial.println("-200 Steps = 1 Umdrehung nach links"); stepper.step(-200); delay(1000); //pause Serial.println(" ------------------------------------------"); Serial.println("Geschwindigkeit auf '80' gesetzt."); stepper.setSpeed(80); // Setzt die Geschwindigkeit auf "30" delay(2000); // Pause von 2 Sekunden Serial.println("100 Steps = halbe Umdrehung nach rechts"); stepper.step(100); delay(1000); // Pause von 2 Sekunden Serial.println("-100 Steps = halbe Umdrehung nach links"); stepper.step(-100); delay(1000); //pause Serial.println(" -------------------------------------------"); Serial.println("Geschwindigkeit auf '125' gesetzt."); stepper.setSpeed(125); // Setzt die Geschwindigkeit auf "30" delay(2000); // Pause von 1 Sekunde Serial.println("400 Steps = 2 Umdrehungen nach rechts"); stepper.step(400); // Motor dreht rechts herum -> 200 steps = 1 Umdrehung delay(1000); // Pause von 1 Sekunde Serial.println("-400 Steps = 2 Umdrehungen nach links"); stepper.step(-400); // Motor dreht links herum, wegen "-" vor den 200 steps delay(1000); //pause Serial.println(" -------------------------------------------"); }
Dies erscheint im Seriellen Monitor:
------------------------------------------ Geschwindigkeit auf '100' gesetzt. 200 Steps = 1 Umdrehung nach rechts -200 Steps = 1 Umdrehung nach links ------------------------------------------ Geschwindigkeit auf '90' gesetzt. 200 Steps = 1 Umdrehung nach rechts -200 Steps = 1 Umdrehung nach links ------------------------------------------ Geschwindigkeit auf '80' gesetzt. 100 Steps = halbe Umdrehung nach rechts -100 Steps = halbe Umdrehung nach links ------------------------------------------- Geschwindigkeit auf '125' gesetzt. 400 Steps = 2 Umdrehungen nach rechts -400 Steps = 2 Umdrehungen nach links -------------------------------------------