High-Performance Arduino Bibliothek für DC-Motor-Steuerung
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| NPN-Transistor (Allzweck) | × | 2 |
| PNP-Transistor (Allzweck) | × | 2 |
| Widerstand 1 kΩ | × | 2 |
| 1N4007 Diode (High Voltage/Current) | × | 4 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Hier wird eine Arduino-Bibliothek zur Steuerung von DC-Motoren vorgestellt. Sie bietet industrielle Motion-Control-Features mit 16 Funktionen für vielseitigste Steuerungsszenarien.
Funktionsumfang der Bibliothek
- Drehrichtung steuern (Vorwärts/Rückwärts)
- Geschwindigkeit regeln (0–100 %)
- Soft Start – Hochlauf von 0 % auf Sollwert in definierter Zeit
- Smooth Stop – Abbremsen von aktueller Geschwindigkeit auf 0 % in definierter Zeit
- Jog Control – Kurzer Impuls (Ruck) in eine Richtung
- DC-Brake – Sofortiger Notstopp (erfordert Hardwareseitig Dynamic Braking Resistances & passende Treiberstufe!)
Die ersten 8 Funktionen bieten Basis-Steuerung ohne Geschwindigkeitsregelung (nur digital). Für Geschwindigkeitsfunktionen (9–16) muss der Motor mit DC_Motor(pin1, pin2, 1) initialisiert werden (PWM-Pins, Speed-Flag=1).
Alle 16 Funktionen im Detail
| # | Funktion | Beschreibung |
|---|---|---|
| 1 | DC_Motor(int pin1, int pin2) | Constructor: Pins für Motorsteuerung (digital) |
| 2 | DC_Motor(int pin1, int pin2, int speed_flag) | Constructor: PWM-Pins + Speed-Flag (1=aktiv) |
| 3 | start_motor(int dir) | Motor starten: dir=1 vorwärts, 0 rückwärts |
| 4 | forward() | Vorwärts starten (volle Geschwindigkeit) |
| 5 | reverse() | Rückwärts starten (volle Geschwindigkeit) |
| 6 | dc_break() | DC-Bremse (Notstopp) – nur mit passender Hardware! |
| 7 | stop_motor() | Motor stoppen (digital) |
| 8 | jogg_full_speed(int dir) | Jog/Impuls 5 Sek. mit Vollspeed in dir |
| 9 | set_speed(int speed) | Sollgeschwindigkeit 0–100 % setzen |
| 10 | forward_with_set_speed() | Vorwärts mit gesetzter Geschwindigkeit |
| 11 | reverse_with_set_speed() | Rückwärts mit gesetzter Geschwindigkeit |
| 12 | run_motor(int dir, int speed) | Motor in dir mit speed starten |
| 13 | jogg_set_speed(int dir, int speed) | Jog in dir mit gesetzter Geschwindigkeit |
| 14 | motor_speed_zero() | Geschwindigkeit auf 0 fahren (analog, nicht digital stoppen!) |
| 15 | soft_start(int dir, int speed, int time_sec) | Soft Start: 0→speed in time_sec Sekunden |
| 16 | smooth_stop(int time_sec) | Smooth Stop: aktuelle→0 in time_sec Sekunden |
Hinweis zu dc_break(): Funktioniert nur bei Motoren mit interner Bremswicklung und passendem Treiber (Dynamic Braking Resistances). Unsachgemäße Nutzung kann Motor/Treiber beschädigen!
Wichtig: Bei Geschwindigkeitssteuerungstop_motor()nicht verwenden – stattdessenmotor_speed_zero()für sanftes analoges Abbremsen.
Beispiele
1) Vorwärts/Rückwärts bei Volllast (ohne Speed-Control)
/* DC Motor 5 Sek. vorwärts, 2 Sek. Stop, 5 Sek. rückwärts, 2 Sek. Stop – Endlos
by A M Bhatt, Gujarat, INDIA, 12/10/2016 */
#include
DC_Motor motor(8, 12);
void setup() {}
void loop() {
motor.forward();
delay(5000);
motor.stop_motor();
delay(2000);
motor.reverse();
delay(5000);
motor.stop_motor();
delay(2000);
}
2) Vorwärts/Rückwärts mit Speed-Control
/* 5 Sek. 40% vorwärts, 2 Sek. Stop, 5 Sek. 80% rückwärts – Endlos
by A M Bhatt, 12/10/2016 */
#include
DC_Motor motor2(9, 10, 1); // PWM-Pins 9,10 + Speed-Flag
void setup() {}
void loop() {
motor2.set_speed(40);
motor2.forward_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
motor2.set_speed(80);
motor2.reverse_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
}
3) Jog Control mit und ohne Speed-Control
/* Jog: Motor1 Vollspeed beide Richtungen, Motor2 80% rückwärts / 30% vorwärts
by Ashutosh M Bhatt, 22/10/2016 */
#include
DC_Motor motor(8, 12);
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor.jogg_full_speed(1);
motor.jogg_full_speed(0);
motor2.jogg_set_speed(0, 80);
motor2.jogg_set_speed(1, 30);
}
4) Soft Start und Smooth Stop
/* Soft Start 0→90% in 10s vorwärts, Smooth Stop 90→0% in 5s,
Soft Start 0→50% in 6s rückwärts, Smooth Stop 50→0% in 3s
by A M Bhatt, 12/10/2016 */
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10);
delay(3000);
motor2.smooth_stop(5);
motor2.soft_start(0, 50, 6);
delay(3000);
motor2.smooth_stop(3);
}
Einbindung der Bibliothek
Ordner DC_Motor in den Arduino-Library-Ordner kopieren (z. B. C:\arduino-1.6.7\libraries).
Schaltplan (H-Brücke)
Die Bibliothek liegt als C-Header-Datei vor (Download-only).
Herstellungsprozess
- Sensor-gesteuerte Audio-Effekte mit dem Satellite CCRMA Kit bauen
- DIY Hausaufgaben-Schreibmaschine zu Hause bauen
- Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
- Umfassende Bipolar-Schrittmotor-Bibliothek für Arduino
- Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
- Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
- Autonomer Linienfolger-Roboter mit Arduino UNO
- Roomba Create 2 per Arduino & Android steuern – Schritt-für-Schritt
- Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
- Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte