Construa uma Estação de Comando DCC Digital para Ferromodelismo com Arduino – App Gratuito Incluído
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | 1 | |
| LMD18200T (Driver H-Bridge) | 1 | |
| PCB (Placa de Circuito Impresso) | 1 | Disponível no eBay |
| Regulador Linear 7805 | 1 | |
| Diodo Zener 3.6V 0.5W | 1 | 1N4732A |
| Módulo Bluetooth HC-06 | 1 | |
| Resistor 0.1 ohm 2W | 1 | Para detecção de corrente |
| Capacitor Eletrolítico 220 µF 16V | 1 | |
| Capacitor Eletrolítico 10 µF 16V | 1 | |
| Capacitor Cerâmico 0.1 µF | 3 | |
| Resistor 10k ohm | 2 | |
| Resistor 4.7k ohm | 1 | |
| Terminal de Parafuso 2 posições 3.5mm | 1 | Para alimentação |
| Terminal de Parafuso 6 posições 2.54mm | 1 | |
| Soquete 4 pinos 2.54mm | 1 | Para HC-06 |
| Soquete 12 pinos 2.54mm | 2 | Para Arduino Pro Mini |
Aplicativos e Serviços Online
- LocoMotive - Versão gratuita do app na Google Play Store
- LocoMotive DCC - Versão completa (paga) com leitura/escrita de CV 1 a 255
Sobre o Projeto
Este projeto apresenta uma estação de comando DCC (Digital Command Control) para ferromodelismo, controlada via Bluetooth por um aplicativo Android. A grande inovação está na arquitetura: o smartphone realiza o trabalho pesado de construção dos pacotes DCC, enquanto o Arduino apenas gerencia os sinais de clock e a interface com o driver H-bridge LMD18200.
Principais Características
- Controle de 1 a 20 locomotivas simultaneamente
- Ideal para layouts de pequeno a médio porte
- Driver LMD18200 entrega 2A, suficiente para até 16 locomotivas HO/OO
- Possibilidade de expandir com H-bridge de maior corrente
- Proteção contra curto-circuito e corte automático por sobrecorrente (ajustável no código)
- Controle de luzes, direção e funções F1 a F8
- Edição de nomes de funções, visibilidade e ação momentânea
- Controle de desvio/acessórios (até 8 pares de saídas)
- Nomeação personalizada de locomotivas e velocidade máxima por loco
- Programação de endereço CV1 e leitura/escrita de CV 1 a 255
- Adição de endereços de acessórios personalizados
- Fonte DC configurável 12V a 20V (escalas Z/N/HO/OO/O/G)
Histórico de Atualizações
- Ago 2019: Novo app com leitura/escrita CV 1-255 (versão paga £5 + taxas)
- Maio 2019: App melhorado com até 28 funções editáveis, controle de 4 locomotivas com barras de velocidade (£3 + taxas)
- Fev 2019: Modificação no HC-06 para estender alcance (antena de 31.2mm = 1/4 onda a 2.4GHz)
- Jan 2019: Opção momentânea em F2/F3 para sons de buzina, velocidade máxima pré-definida por loco
Como Funciona
O app Android LocoMotive monta os pacotes DCC completos (conforme padrão NMRA S-9.2.1) e os envia via Bluetooth ao Arduino. O Arduino decodifica a string recebida, atualiza os buffers de mensagem e gera os pulsos de clock DCC nos pinos D5 (DIR) e D6 (PWM HIGH) do LMD18200.
Exemplo de pacote de velocidade (4 bytes):
String: "DD, 3, 63, 12, 48," Loco 3 | Speed steps | Velocidade | XOR check [00000011] [00111111] [00001100] [00110000]
Exemplo de pacote de função (3 bytes):
String: "DD, 1, 129, 128," Loco 1 | F1 ON | XOR check [00000001] [10000001] [10000000]
Detecção de Corrente e Proteção
Um resistor de 0.1 ohm 2W no pino de sense do LMD18200 permite monitorar a corrente (0-200mV = 0-2A). O Arduino lê a média de 5 amostras no A0 (referência interna 1.1V) e desliga a ponte H (pino D13 HIGH no Brake) se ultrapassar 2A. O valor da corrente é enviado ao app a cada segundo via Bluetooth.
Montagem do Circuito (Fritzing)
O Arduino Pro Mini recebe dados via HC-06 (Rx-Rx, Tx-Tx). Gera ciclos de clock NMRA via Timer2 (2MHz com prescaler /8). O circuito inclui regulador 7805 para alimentar o Arduino a partir da fonte dos trilhos (12-20V), diodo Zener 3.6V para proteção dos pinos do HC-06, e capacitores de desacoplamento.
Dica para maior alcance do Bluetooth: Solde um fio de cobre sólido (31.2mm) na antena do HC-06 e isole com termorretrátil.
Código Arduino
O sketch completo (locomotive_dcc_sep19.ino) está disponível na seção de código. Implementa máquina de estados para geração de preâmbulo (16 ou 24 bits '1'), separador e bytes de dados com temporização precisa via interrupção do Timer2. Inclui rotinas para:
- Recepção e parsing de strings Bluetooth
- Montagem de pacotes 3 e 4 bytes com XOR
- Programação CV1 (preâmbulo de 24 bits)
- Leitura/escrita de CV 1-255 via detecção de corrente (ACK do decoder)
- Controle de sobrecorrente e envio periódico de corrente ao app
Arquivos Adicionais
- Diagrama de circuito Fritzing (
bluetooth_android_dcc_lmd18200_S8NTVsI4LY.fzz) - Instruções do app
- PCB disponível no eBay
Custo estimado: ~£20 (componentes do eBay)
Processo de manufatura
- MrRobot: Robô Rapiro Controlado por Ubuntu Mobile com Voz, Toque e Interação por Movimento
- Estação de Mistura de Bebidas 6-Shooter Controlada por Arduino – Construa seu Próprio Automatizador de Coquetéis
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Controle USB para Jogos DIY com Arduino – Construa Seu Próprio Gamepad de Alto Desempenho
- Crie Animações e Jogos Envolventes em LCD com Arduino UNO
- Tênis Inteligentes com Auto-Ajuste e Colheita de Energia Integrada
- Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing
- Pixel Chaser: Jogo LED Interativo de Um Toque com Arduino Nano
- Controle Suave de Brilho de LED com Bolt IoT e Arduino UNO
- Estação Meteorológica Portátil Arduino por $10 – DIY com Nano, DHT22, BMP180 e LCD