DIY Automatische Modellbahn-Steuerung mit Arduino – Einfach & Flexibel
Komponenten und Zubehör
| Komponente | Anzahl |
|---|---|
| Arduino UNO (oder Nano, Mega, etc.) | 1 |
| L298N Dual H-Brücke Motortreiber (Modul) | 1 |
| Jumper-Kabel | 1 Set |
Software
- Arduino IDE
Projektbeschreibung
Eine minimalistische, aber leistungsfähige Automatik für Modellbahn-Fahrzeuge. Der Zug fährt nach einem programmierbaren Fahrplan: Anfahren, Fahren, Bremsen, Halten, Richtungswechsel – alles einstellbar. Einfach Strom einschalten, und der Zug fährt los.
Fahrplan per Code definieren
Der Sketch nutzt einen Sekunden-Counter (counterScheduler) und Zeitfenster:
// 1. Phase: 0–5 s → Anfahren & Fahren
if (counterScheduler <= 5) { ... }
// 2. Phase: 10–15 s → Bremsen & Halten
if (counterScheduler >= 10 && counterScheduler <= 15) { ... }
// 3. Phase: 16 s → Richtungswechsel
if (counterScheduler == 16) { digitalWrite(L298_IN1, LOW); digitalWrite(L298_IN2, HIGH); }
// 4. Phase: 20–30 s → Rückfahrt
// 5. Phase: 31–40 s → Bremsen & Halten
// 6. Phase: >40 s → Reset zu Phase 1
Bewegungs-Parameter
int brakingDelta = 5; // Brems-Rampen-Schritt
int accelerateDelta = 6; // Beschleunigungs-Rampen-Schritt
// PWM-Werte: 0 = Stop, 255 = Max
Richtungssteuerung (L298N)
// Vorwärts
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
// Rückwärts
digitalWrite(L298_IN1, LOW);
digitalWrite(L298_IN2, HIGH);
Kompletter Sketch (Swing-Demo)
// L298 Pinbelegung
#define L298_ENA 5
#define L298_IN1 6
#define L298_IN2 7
int counterScheduler = 0;
unsigned long timerScheduler = 0;
unsigned long timerLocal = 0;
byte speedAuto = 0;
void setup() {
pinMode(L298_ENA, OUTPUT);
pinMode(L298_IN1, OUTPUT);
pinMode(L298_IN2, OUTPUT);
// Standard: Vorwärts
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
}
void loop() {
// 1-Sekunden-Takt für Fahrplan-Counter
if (millis() > (timerScheduler + 1000)) {
counterScheduler++;
timerScheduler = millis();
}
int brakingDelta = 5;
int accelerateDelta = 6;
// Phase 1: 0-5 s → Beschleunigen
if (counterScheduler <= 5) {
if (millis() > (timerLocal + 100)) {
if (speedAuto < 240) speedAuto += accelerateDelta;
else speedAuto = 255;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// Phase 2: 10-15 s → Bremsen
if (counterScheduler >= 10 && counterScheduler <= 15) {
if (millis() > (timerLocal + 100)) {
if (speedAuto > 30) speedAuto -= brakingDelta;
else speedAuto = 0;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// Phase 3: 16 s → Richtungswechsel
if (counterScheduler == 16) {
digitalWrite(L298_IN1, LOW);
digitalWrite(L298_IN2, HIGH);
}
// Phase 4: 20-30 s → Beschleunigen (Rückwärts)
if (counterScheduler >= 20 && counterScheduler <= 30) {
if (millis() > (timerLocal + 100)) {
if (speedAuto < 240) speedAuto += accelerateDelta;
else speedAuto = 255;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// Phase 5: 31-40 s → Bremsen
if (counterScheduler >= 31 && counterScheduler <= 40) {
if (millis() > (timerLocal + 100)) {
if (speedAuto > 30) speedAuto -= brakingDelta;
else speedAuto = 0;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// Phase 6: >40 s → Neustart
if (counterScheduler > 40) {
counterScheduler = 0;
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
}
}
Schaltplan
Arduino Pin 5 (PWM) → L298N ENA, Pin 6 → IN1, Pin 7 → IN2. Motor an OUT1/OUT2. Arduino & L298N Logik-Versorgung gemeinsam GND. Motor-Versorgung (z. B. 12V) an L298N VS & GND. Siehe Schaltplan-Bilder.
Erweiterungsideen
- Mehrere Fahrplan-Abschnitte (Haltepunkte, Rangierbewegungen)
- Gleisbelegtmelder (Stromfühler) für blockbasierte Steuerung
- Bluetooth/WiFi-Modul für Smartphone-Steuerung
- Lok-Decoder (DCC) statt Analog – aber als Einstieg perfekt
Herstellungsprozess
- Steuerschaltungen: Grundlagen, Anwendungen und Best Practices
- Automatisiertes Pool-Befüllungs- und Überwachungssystem
- Tischlerarbeit (Benchwork) verstehen: Definition, Anwendungen und Vorteile
- Qualitätskontrolle (QC): Sicherstellung konsistenter Exzellenz
- Automatische Pressen verstehen: Funktion, Vorteile und Anwendungen
- Automatische Exzenterpressen: Eigenschaften, Vorteile und Anwendungen
- Automatische Rohrbiegemaschinen: Funktionen, Vorteile und Anwendungen verstehen
- Automatische Rundtische verstehen: Präzision & Effizienz in der Metallbearbeitung
- Automatikgetriebe: Umfassender Leitfaden zu Aufbau, Typen & Funktion
- Automatische Zentralschmieranlagen: Funktionsweise, Typen & Nutzen