Arduino-gesteuerter Drehteller mit Schrittmotor und serieller Steuerung
Komponenten und Materialien
| 28BYJ-48 Schrittmotor | × | 1 |
| X113647 Schrittmotortreiber (ULN2003A) | × | 1 |
| Pololu Universal Aluminium-Montagehub für 5-mm-Welle | × | 1 |
| Arduino UNO | × | 1 |
| Holzbasis 15 cm × 15 cm | × | 1 |
| Gummifüße (10 mm hoch) | × | 4 |
Benötigte Werkzeuge
- Laubsäge (Fretsaw)
- Bohrmaschine mit 6-mm-Holzbohrer
Projektbeschreibung
Dieses Projekt realisiert eine drehbare Plattform auf Basis eines 28BYJ-48-Schrittmotors, der über den X113647-Treiber (ULN2003A) angesteuert wird. Die Steuerung erfolgt über den seriellen Monitor oder Tera Term.
Implementierte Befehle
- R – Dauerhafte Drehung im Uhrzeigersinn
- r – Einmalige 360°-Drehung im Uhrzeigersinn
- L – Dauerhafte Drehung gegen den Uhrzeigersinn
- l – Einmalige 360°-Drehung gegen den Uhrzeigersinn
- S – Stopp
Mechanischer Aufbau
- Quadratische Holzplatte (ca. 15 × 15 cm) als Basis.
- Mittelpunkt durch Diagonalen finden, 6-mm-Loch bohren.
- Schrittmotor-Hub in das Loch stecken, Umriss aufzeichnen.
- Mit Laubsäge passgenauen runden Ausschnitt sägen, damit die Befestigungslöcher des Motors auf dem Holz aufliegen.
- Gummifüße (10 mm) für Bodenfreiheit montieren.
- Drehteller mit dem Pololu-Montagehub an der Motorwelle befestigen.
Verdrahtung
#define motorPin1 4 // Blau – 28BYJ-48 Pin 1
#define motorPin2 5 // Pink – 28BYJ-48 Pin 2
#define motorPin3 6 // Gelb – 28BYJ-48 Pin 3
#define motorPin4 7 // Orange – 28BYJ-48 Pin 4
// Rot – 28BYJ-48 Pin 5 (VCC)
// Blau – 28BYJ-48 Pin GND
#define STEPS_PER_TURN 2048
Die Beschaltung entspricht dem Standard-Schaltplan für ULN2003A-Treiber.
Code
Der Sketch nutzt die AccelStepper-Bibliothek für sanfte Beschleunigung und präzise Positionierung. Wichtige Punkte:
- Serielle Kommunikation mit 9600 Baud
- Pulsweite auf 20 µs gesetzt für zuverlässige Treiberansteuerung
- Maximale Geschwindigkeit 500 Schritte/s, Beschleunigung 400 Schritte/s²
- Zustandsmaschine für kontinuierliche vs. einzelne Drehungen
- Prüfsummen-Validierung der NMEA-Sätze (hier nicht relevant, aber im Originalcode für GPS)
#include <AccelStepper.h>
#define motorPin1 4
#define motorPin2 5
#define motorPin3 6
#define motorPin4 7
#define STEPS_PER_TURN 2048
int motorSpeed = 500;
int motorAccel = 400;
int myPos = 0;
int LeftTurnUp = 0, RightTurnDown = 0;
int Continuous = 0;
int incomingByte = 0;
AccelStepper stepper(4, motorPin1, motorPin3, motorPin2, motorPin4); // 1-3-2-4 Sequenz
void setup() {
Serial.begin(9600);
stepper.setMinPulseWidth(20);
stepper.setMaxSpeed(motorSpeed);
stepper.setSpeed(motorSpeed);
stepper.setAcceleration(motorAccel);
stepper.setCurrentPosition(stepper.currentPosition());
stepper.runToPosition();
Serial.println("Verfügbare Befehle:");
Serial.println("R = kontinuierlich im Uhrzeigersinn");
Serial.println("r = 360° im Uhrzeigersinn");
Serial.println("L = kontinuierlich gegen Uhrzeigersinn");
Serial.println("l = 360° gegen Uhrzeigersinn");
Serial.println("S = Stopp");
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
// Befehlsverarbeitung für R, L, r, l, S mit Quick-Stop und Flags
// ... (siehe Originalcode)
}
if (Continuous == 1) {
if (LeftTurnUp == 1) stepper.moveTo(10000);
if (RightTurnDown == 1) stepper.moveTo(-10000);
stepper.run();
}
if (Continuous == 0) {
if (LeftTurnUp == 1) stepper.moveTo(myPos + STEPS_PER_TURN);
if (RightTurnDown == 1) stepper.moveTo(myPos - STEPS_PER_TURN);
stepper.run();
}
}
Schaltplan (Fritzing)
Herstellungsprozess
- Schrittmotoren: Typen, Eigenschaften und praktische Anwendungen
- Integrierte Treiber vereinfachen High-Power-Schrittmotordesign
- Temperaturgesteuerter Lüfter: DIY Relais-System für Medienmöbel-Kühlung
- Raspoulette: Solar-betriebenes autonomes Hühnerklappen-System Prototyp
- DIY Autonomer Nerf-Sentry-Geschützturm – Intelligente Nerf Gun mit Schrittmotoren, Kamera und Arduino
- Umfassende Bipolar-Schrittmotor-Bibliothek für Arduino
- Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
- Automatischer Tinder & Bumble Swiper mit Arduino UNO & Schrittmotor
- Linearmotoren verstehen: Von elektrischer Energie zur präzisen Linearbewegung
- Servomotoren: Funktionsweise und Bedeutung