Índice:
- Etapa 1: Código Arduino - Estação de comando com teclado
- Etapa 2: Código Arduino - Tela TFT
- Etapa 3: Controlador Turnout
Vídeo: Ferrovia modelo - Estação de comando DCC usando Arduino :: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Atualizado em agosto de 2018 - veja o novo Instructable:
Atualização de 28 de abril de 2016: Agora com capacidade de controle de 16 pontos / comparecimento para a Estação de Comando. Os desvios T1 - T8 estão disponíveis através da tecla 'B' Os desvios T9 - T16 estão disponíveis através da tecla 'C'
Atualização em 10 de março de 2016:
Agora adicionado 8 capacidade de controle de saída / pontos para a Estação de Comando. O código do Arduino foi atualizado de acordo com o pacote padrão NMRA para turnouts (também baseado em um estudo de pacotes de dados Lenz / Atlas Compact para controle de turnout).
Os desvios T1 - T8 estão disponíveis através da tecla 'B'
Veja instrutível no circuito receptor de pacote de dados usado e código Arduino necessário.
Atualização de 18 de janeiro de 2016:
Eu adicionei um resistor de detecção de corrente (1k5 ohm) e um capacitor (10 uf) ao circuito e alterei o código do Arduino para cortar a energia quando um pico de corrente de> 3200 mAmps for detectado. As especificações da ponte H indicam uma corrente de detecção de saída de 377 uA por 1 Amp na carga.
O resistor de 1,5 k ohm fornecerá 0,565 volts por Amp no pino analógico 6. Com 1023 etapas na entrada analógica, isso dá 0,565 * 1023/5 = 116 por carga de Amp.
A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (para dar o resultado em miliamperes)
A corrente de carga em miliamperes é exibida no TFT
O teclado 4x4 completo inclui funções F1 a F8 e outros 10 locos (1-19) através da tecla '#' (para adicionar 10 às teclas numéricas começando no loco 10).
O código do arduino inclui o padrão NMRA para bytes de instrução.
Veja o link
www.nmra.org/sites/default/files/s-9.2.1_20…
(a página 6 é de particular relevância)
Os pacotes são organizados de acordo com o número de etapas de velocidade, endereço longo / curto e instruções do grupo de funções.
Todos os bytes de instrução são precedidos por um preâmbulo de '1' bits 11111111 (ou pacote inativo) seguido por;
por exemplo. Um endereço de 4 bytes 0 00000011 0 00111111 0 10000011 0 10111111
equivale a loco 3, 128 passos de velocidade, direção para frente e passo de velocidade 3 (o byte final é a verificação de erro XOR)
por exemplo, um endereço de 3 bytes 0 00000011 0 10010000 0 10110011
equivale a loco 3, grupo de funções 1, FL acende mais o byte XOR (um bit '0' separa cada byte)
Veja o vídeo de demonstração incluso para loco 12.
As funções F1 - F8 estão disponíveis através da tecla 'A', DIR (tecla '*' = direção) FL (tecla '0' = luzes) e a tecla '#' fornece locos 10 a 19 no teclado numérico. A tecla 'D' agora é usada para uma 'PARADA de emergência'.
Agradeço a vários provedores na web por fontes de informações DCC e código Arduino.
Em particular, este projeto foi inspirado por Michael Blank e seu 'Simple DCC - uma estação de comando'
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) £ 1,75
2.2 polegadas 240x320 Serial SPI TFT LCD Display Module (ebay) £ 7,19
UNIVERSAL 12V 5A 60W FONTE DE ALIMENTAÇÃO AC ADAPTADOR (ebay) £ 6,49
Nano V3.0 para Arduino com CH340G 5V 16M compatível ATmega328P (ebay) 2 x £ 3,30 = £ 6,60
Módulo Motor Driver LMD18200T para Arduino R3 (ebay) £ 6,99
Conectores, fio, placa vero, potenciômetro de aproximadamente £ 3,50
Total £ 32,52
A estação de comando básica sem tela tft e 1 x nano custaria £ 22,03
[Nota: É possível adicionar um cartão de memória ao display TFT e corrigir o código para exibir imagens dos motores selecionados, embora os códigos da biblioteca devam ser editados para criar mais memória para o esboço. O tamanho do esboço atual é máximo para o TFT Arduino Nano]
O código Arduino original de Michael Blank era para um motor, apenas para frente / para trás, sem controle de função, sem teclado e sem display.
Eu modifiquei o código para incluir 1 - 19 motores, uma tela de exibição, direção, luzes, 8 funções, parada de emergência e limite automático de corrente.
A ponte LMD18200T pode carregar até 3 amperes, o que a torna adequada para todas as escalas, incluindo a escala G (trens de jardim). A fonte de alimentação e os componentes eletrônicos são adequados apenas para uso interno, a menos que você possa torná-los à prova de intempéries. Eu tenho a estação de comando na casa de verão com fios de conexão de trilhos que vão da parede até os trilhos.
Etapa 1: Código Arduino - Estação de comando com teclado
Meus agradecimentos a tvantenna2759 por apontar 2 erros no diagrama de circuito em que o código do Arduino não correspondia à fiação, agora atualizado (21 de outubro de 2017).
Agora adicionado 16 desvios à Estação de Comando. Veja instruções no diagrama de circuito de saída / pontos usando o módulo Arduino Mini Pro.
O código modificado, incluindo o controle de participação, está anexado a seguir.
O pacote decodificador de acessórios básicos é: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Analisando o pacote usado por Lenz (Compact / Atlas) para controle de pontos, usei o seguinte formato de pacote binário para bytes 1 e 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Turnout 1b: 1000 0001 1111 1001 Turnout 2a: 1000 0001 1111 1010 / Turnout 2b: 1000 0001 1111 1011 Turnout 3a: 1000 0001 1111 1100 / Turnout 3b: 1000 0001 1111 1101 Turnout 4a: 1000 0001 1111 1110 / Turnout 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Participação 5a: 1000 0010 1111 1000 / Participação 5b: 1000 0010 1111 1001 Participação 6a: 1000 0010 1111 1010 / Participação 6b: 1000 0010 1111 1011 Participação 7a: 1000 0010 1111 1100 / Turnout 7b: 1000 0010 1111 1101 Turnout 8a: 1000 0010 1111 1110 / Turnout 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Participação 9a: 1000 0011 1111 1000 / Participação 9b: 1000 0011 1111 1001 etc ………
Extrair do código modificado: Adicionar mais 2 atualizações de mensagem 'struct' evite alterar_tun1 (struct Message & x) {x.data [0] = 0x81; // decodificador acessório 0x80 & endereço 1 x.data [1] = 0; }
voidendar_tun2 (struct Message & x) {x.data [0] = 0x82; // decodificador acessório 0x80 & endereço 2 x.data [1] = 0; }
Adicionar novo vazio para turnouts: boolean read_turnout () {delay (20);
booleano alterado_t = falso; get_key ();
if (key_val> = 101 && key_val <= 404 && turn == 1) {
dados = 0xf8; // = binário 1111 1000
alterar_tun1 (msg [1]);
}
if (key_val> = 505 && key_val <= 808 && turn == 1) {
dados = 0xf8; // = binário 1111 1000
alterar_tun2 (msg [1]);
}
if (key_val == 101 && turn == 1) {
if (tun1 == 1) {
dados | = 0; // t1a
alterado_t = verdadeiro;}
if (tun1 == 0) {
dados | = 0x01; // t1b
alterado_t = verdadeiro;}
}
if (key_val == 202 && turn == 1) {
if (tun2 == 1) {
dados | = 0x02; // t2a
alterado_t = verdadeiro;
}
if (tun2 == 0) {
dados | = 0x03; // t2b
alterado_t = verdadeiro; }
}
if (key_val == 303 && turn == 1) {
if (tun3 == 1) {
dados | = 0x04; // t3a
alterado_t = verdadeiro;
}
if (tun3 == 0) {
dados | = 0x05; // t3b
alterado_t = verdadeiro;}
}
if (key_val == 404 && turn == 1) {
if (tun4 == 1) {
dados | = 0x06; // t4a
alterado_t = verdadeiro;
}
if (tun4 == 0) {
dados | = 0x07; // f4b
alterado_t = verdadeiro;}
}
if (key_val == 505 && turn == 1) {
if (tun5 == 1) {
dados | = 0; // t5a
alterado_t = verdadeiro;
}
if (tun5 == 0) {
dados | = 0x01; // t5b
alterado_t = verdadeiro;}
}
etc ………………….
Etapa 2: Código Arduino - Tela TFT
O circuito de exibição permanece o mesmo com um código modificado para mostrar o status das 16 saídas. Observação: o código da biblioteca ocupa quase toda a memória do código do esboço, deixando pouco espaço para novos recursos. Se alguém tiver um arquivo de biblioteca mais eficiente para o TFT usado aqui, por favor me avise.
Etapa 3: Controlador Turnout
Veja instruções sobre como fazer o controlador Turnout / Points.
O circuito completo controla 16 pontos e 15 acessórios como luzes, sons, toca-discos, etc.
Recomendado:
Modelo de ferrovia simples automatizado ponto a ponto: 10 etapas (com imagens)
Modelo de ferrovia simples automatizado ponto a ponto: Os microcontroladores Arduino são ótimos para automatizar layouts de modelo de ferrovia. A automação de layouts é útil para muitos propósitos, como colocar seu layout em um display onde a operação de layout pode ser programada para operar trens em uma sequência automatizada. O eu
Layout de modelo de ferrovia automatizado com dois trens (V2.0) - Baseado em Arduino: 15 etapas (com imagens)
Layout de modelo de ferrovia automatizado com dois trens (V2.0) | Baseado em Arduino: automatizar layouts de modelos de ferrovias usando microcontroladores Arduino é uma ótima maneira de mesclar microcontroladores, programar e modelar ferrovias em um só hobby. Existem vários projetos disponíveis para operar um trem de forma autônoma em um modelo railroa
Layout de modelo de ferrovia com tapume automatizado: 13 etapas (com fotos)
Layout de modelo de ferrovia com tapume automatizado: Fazer layouts de modelo de trem é um ótimo hobby, automatizá-lo o tornará muito melhor! Vejamos algumas das vantagens de sua automação: Operação de baixo custo: Todo o layout é controlado por um microcontrolador Arduino, usando um mo L298N
Layout da ferrovia do modelo automatizado simples - Arduino controlado: 11 etapas (com imagens)
Layout da ferrovia do modelo automatizado simples | Arduino controlado: os microcontroladores Arduino são um ótimo complemento para modelar ferrovias, especialmente quando se trata de automação. Esta é uma maneira simples e fácil de começar a usar modelos de automação de ferrovias com o Arduino. Então, sem mais delongas, vamos começar
Modelo de ferrovia controlado por touchpad do laptop - Interface PS / 2 Arduino: 14 etapas
Modelo de ferrovia controlado por touchpad do laptop | Interface PS / 2 Arduino: O touchpad de um laptop é um dos ótimos dispositivos a serem usados como entrada para projetos de microcontroladores. Então, hoje, vamos implementar este dispositivo com um microcontrolador Arduino para controlar um modelo de ferrovia. Usando um touchpad PS / 2, seremos capazes de controlar 3 t