Central DCC Digital para Ferrocarril Modelo con Arduino y App Android Gratuita
Componentes y Suministros
| Componente | Cantidad | Notas |
|---|---|---|
| Arduino Pro Mini 328 5V/16MHz (SparkFun) | 1 | |
| Driver H-Bridge LMD18200T | 1 | 3A, incluye disipador |
| PCB Personalizada | 1 | Disponible en eBay |
| Regulador Lineal 7805 (5V) | 1 | |
| Diodo Zener 3.6V 0.5W (1N4732A) | 1 | |
| Módulo Bluetooth HC-06 | 1 | Solo esclavo (slave) |
| Resistencia 0.1Ω 2W (sentido corriente) | 1 | Protección sobrecorriente |
| Condensador 220µF 16V | 1 | |
| Condensador 10µF 16V | 1 | |
| Condensador Cerámico 0.1µF | 3 | |
| Resistencia 10kΩ | 2 | |
| Resistencia 4.7kΩ | 1 | |
| Terminal Tornillo 2 Pos. 3.5mm | 1 | Alimentación vías |
| Terminal Tornillo 6 Pos. 2.54mm | 1 | Conexiones varias |
| Zócalo Hembra 4 Pines 2.54mm | 1 | Para HC-06 |
| Zócalo Hembra 12 Pines 2.54mm | 2 | Para Arduino Pro Mini |
Aplicaciones y Servicios Online
- LocoMotive (gratis) – Google Play Store, Android 4.1+
- LocoMotive DCC (pago, £5+IVA) – Incluye lectura/escritura CV 1-255
Descripción del Proyecto
¿Qué hace único a este sistema? Un circuito electrónico muy simple genera la señal DCC y potencia la vía, pero la App hace el trabajo pesado: el smartphone construye los paquetes de instrucciones NMRA, simplificando drásticamente el código del Arduino.
Actualizaciones:
- Ago 2019: App "LocoMotive DCC" con lectura/escritura CV 1-255 (£5.99).
- May 2019: App mejorada: hasta 28 funciones con títulos editables, visibilidad y modo momentáneo. Control de 4 locos simultáneos con barras de velocidad (£3+IVA).
- Feb 2019: Mejora antena HC-06: hilo de cobre sólido 31.2mm (λ/4 a 2.4GHz) soldado a la antena del módulo.
- Ene 2019: Opción momentánea en F2/F3 para bocinas, velocidad máxima predefinida por loco.
Características Principales
- Control de 1 a 20 locomotoras
- Ideal para layouts pequeños/medianos
- 2A continuos → hasta 16 locos HO/OO con LMD18200
- Extensible con H-bridge de mayor corriente
- Protección cortocircuito y sobrecorriente ajustable (corte a 2A)
- Luces y dirección
- Funciones F1-F8 (nombres, visibilidad, momentáneo editables)
- Desvíos/accesorios: hasta 8 pares de salidas (nombres editables)
- Nombres personalizados por loco + velocidad máxima individual
- Programación CV1 (dirección) y lectura/escritura CV 1-255 (versión Pro)
- Direcciones accesorios personalizables
- Fuente DC 12-20V según escala (Z/N/HO/O/G)
Coste total ~20£ (componentes eBay). App gratuita "LocoMotive" en Play Store.
Paso 1: Sketch Arduino
El loop principal recibe cadenas de texto terminadas en '\n' desde Bluetooth. Si empiezan con "D", decodifica paquete DCC (3 o 4 bytes).
void loop() {
if(bluetooth.available() > 0) {
inString = bluetooth.readStringUntil('\n');
}
if (inString.substring(0,1) == "D") { string(); }
delay(20);
}
La función string() parsea la cadena y coloca cada byte en su posición en el paquete DCC.
Ejemplos:
DD, 3, 63, 12, 48,→ Paquete 4 bytes velocidad: Loco 3, pasos velocidad, velocidad loco, XOR.DD, 1, 129, 128,→ Paquete 3 bytes función: Loco 1, F1 ON, XOR.
Estándar NMRA S-9.2.1: PDF.
El LMD18200 requiere señal DCC en pin DIR y pin PWM en HIGH.
Paso 2: Diagrama Fritzing y Lista de Componentes
Notas de montaje:
- PCB disponible en eBay.
- Conexiones HC-06: Rx↔Rx, Tx↔Tx (no cruzadas).
- Antena HC-06: hilo cobre 31.2mm (λ/4) soldado y aislado con funda termorretráctil.
- Protección sobrecorriente: resistencia 0.1Ω en pin sense del LMD18200 → entrada analógica A0. Código monitoriza y corta (pin 13 HIGH → Brake) si >2A. Precisión ~50mA/paso.
- Envío de consumo a la App cada segundo por Bluetooth.
// Protección sobrecorriente
if(C > 2000) { // 2 Amps
Serial.println("Over Current");
digitalWrite(13, HIGH); // Brake HIGH
}
// Envío corriente cada segundo
void send_c() {
if(millis() - lastmillis >= 1000) {
bluetooth.write(sensorValue); bluetooth.write('c');
lastmillis = millis();
}
}
Paso 3: App Android
- Versión gratuita: LocoMotive (Play Store)
- Versión Pro: LocoMotive DCC (Play Store, £5.99) – CV 1-255 R/W
- Instrucciones adjuntas para versión Pro.
Código Arduino Completo
Archivo: locomotive_dcc_sep19.ino (incluye: recepción Bluetooth, generación DCC por interrupción Timer2, gestión paquetes idle/velocidad/función/CV, protección corriente, programación CV1 y CVs genéricas).
// 1 Sep 2019 - Sketch para App 'Locomotive DCC' con LMD18200
// Incluye lectura/escritura CV
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(8,9); // RX, TX
// ... [Variables globales, definiciones Timer2, máquina de estados DCC] ...
void SetupTimer2() {
TCCR2A = 0;
TCCR2B = (0<<CS22)|(1<<CS21)|(0<<CS20); // Prescaler /8 → 2MHz
TIMSK2 = 1<<TOIE2; // Overflow interrupt
TCNT2 = TIMER_SHORT; // 58µs
}
ISR(TIMER2_OVF_vect) {
// Genera señal DCC en pines 5 (DIR) y 6 (PWM) para LMD18200
// Máquina de estados: PREAMBLE → SEPARATOR → SEND BYTE
// Maneja preámbulo (16 o 24 unos), byte de datos, bit a bit
}
void setup() {
Serial.begin(115200);
analogReference(INTERNAL); // 1.1V ref para medición corriente
pinMode(13, OUTPUT); // Brake
bluetooth.begin(9600);
DDRD = B01100000; // Pines 5,6 como salida
SetupTimer2();
digitalWrite(6, LOW); digitalWrite(13, HIGH); // Puente apagado
}
void current() {
// Promedia 5 lecturas A0, convierte a mA (0.1Ω → 10.8mA/paso con ref 1.1V)
// Si >2000mA → frena y avisa por Bluetooth
}
void loop() {
// Recepción comandos Bluetooth:
// "D..." → paquete DCC (string())
// "C" → reset sobrecorriente (DCC ON, Brake OFF)
// "G" → solicitud corriente actual
// "A" → programación CV1
// "get..." → lectura CV genérica
// "add..." → escritura CV genérica
// "V" → confirmación CV1
// "E" → parada emergencia (DCC OFF, Brake ON)
}
// Funciones auxiliares: string(), assemble_3/4_byte(), cv_read(), cv_write(),
// cv_calc(), reset_packet(), page_preset_packet(), cv1_write_packet(),
// cv_verify0/1_packet(), valid_packet(), repeat_cv_write()
Piezas Personalizadas y Carcasas
Esquemáticos
- Circuito receptor Bluetooth / Amplificador H-Bridge:
bluetooth_android_dcc_lmd18200_S8NTVsI4LY.fzz(Fritzing) - Instrucciones App
Proceso de manufactura
- MrRobot: Robot Rapiro controlado por móvil Ubuntu con voz, tacto e interacción por movimiento
- Estación de Mezcla de Cócteles "6-Shooter" con Arduino: Construye tu Propio Barman Automático
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
- Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
- Zapatillas Inteligentes Autoajustables con Cosecha de Energía Integrada
- Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
- Pixel Chaser: Juego LED Interactivo de Un Toque con Arduino Nano
- Control de brillo LED sin interrupciones con Bolt IoT y Arduino UNO
- Estación Meteorológica Portátil Arduino por $10 – Nano, DHT22, BMP180 y LCD
- Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED