segunda-feira, 31 de julho de 2017

Central DCC++ com Arduino

Neste artigo vamos apresentar como montar um Central DCC utilizando o Arduino UNO e a Shield Motor R3 para controlar pelo Computador ou Celular suas locomotivas DCC





Como funciona:


a) No computador temos o software JMRI instalado, nele teremos os Throttles (Controles) para comandar nossas locomotivas DCC;
b) O computador enviar os comandos do JMRI para o Arduino com DCC++ pelo cabo USB;
c) O Arduino com DCC++ codifica os comandos e gera o sinal elétrico DCC com o Driver de Potencia (Shield Motor R3) conectado aos trilhos;





Material Necessário:
a) 1x Placa Arduino UNO;
b) 1x Modulo Shield Motor R3;
c) 2x Pedaços de fio para jumper, um com 2cm e outro com 5 cm;
d) 1x Fonte de Alimentação 12V a 15V x 2A (Recomendado 15V) ;





Softwares Necessários:
a) Sketch DCC++ (Código para o Arduino);
b) IDE Arduino (Necessário programar a placa Arduino com o sketch DCC++);
c) Software JMRI (Programa que iremos usar no computador para controlar as Locomotivas);



1. Preparando o Arduino UNO com a Shield Motor R3

1.1. A primeira coisa que precisa ser feita é desligar (cortar para ser mais exato) na parte inferior da Shield Motor R3 o jumper Vin Conect. Você pode fazer isso usando um estilete ou bisturi, se tiver um multímetro confirme que o jumper foi aberto.




Por padrão a Shield Motor R3 alimenta o Arduino pelo pino "Vin", porém isso não é recomendado quando utilizamos fontes acima de 12V pois existe o risco de danificar a placa do Arduino. Como vamos utilizar ele conectado a porta USB do computador sua alimentação será feita por esse cabo sem a necessidade de uma segunda fonte para o Arduino.


1.2. Agora pode "espetar" a Shield sobre o Arduino. Para isso alinhe seus pinos aos conectores do Arduino e pressione para encaixar:






1.3. Depois vamos conectar os jumpers na Shield:
- Pino 12 com Pino 10
- Pino 13 com Pino 5







Para gerar os sinal DCC o programa DCC++ utiliza alguns recursos de tempo do microcontrolador que obrigatoriamente controlam os pinos 10 e 5 do Arduino, já a Shield Motor R3 tem fixo os pinos 12 e 13 para Sinal de Direção. Estes jumpers interligam esses pinos. 

Agora seu Arduino está "fisicamente" pronto!



2. Instalando o Sketch DCC++ no Arduino

Para transferir o Sketch do DCC++ para a placa Arduino você precisa ter instalado no seu computador a IDE do Arduino. Se você ainda não ele instalado, siga o passo-a-passo deste Artigo: Instalação da IDE do Arduino.

2.1. Download do código do DCC: 


2.1.2. Na página clique no botão "Clone or Download" e em seguida no botão "Download ZIP":



2.1.3. Quando o download estiver concluído abra o arquivo. No programa ZIP clique na opção "Extrair Para" ou "Extract To". 

Na janela que vai abrir, selecione a pasta "Sketch Arduino" (Ver Artigo Instalação da IDE do Arduino) e clique em "OK":


2.1.4. Acesse a pasta "Sketch Arduino"  em Documentos no seu computador. Você vai encontrar lá a pasta "BaseStation-master" onde foi salvo o código do DCC++:

Com os arquivos em seu computador, vamos transferir o Sketch para o Arduino.


2.2. Gravando o Sketch do DCC++ no Arduino

2.2.1.Abra o IDE do Arduino;

2.2.2. Vá no menu "Arquivo" / "Abrir":




2.2.3. Localize a pasta "Sketch Arduino", dentro dela de um clique duplo sobre a pasta "BaseStation-master".

Nos arquivos exibidos, selecione a pasta "DCCpp_Uno" e de um clique duplo sobre ela para exibir os arquivos:



2.2.4. Na lista de arquivos da pasta "DCCpp_Uno" localize o arquivo "DCCpp_Uno.ino". Dependendo da versão do seu IDE ele irá aparecer com o ícone do Arduino.

Clique uma vez sobre esse arquivo e clique no botão "Abrir":


2.2.5. Será aberto no IDE o código do DCC++, observe que ele tem várias "abas" com diferentes partes do código. Não se preocupe com o código, não vamos alterar nada nele:


2.2.6. Clique no ícone "Carregar" para transferir o Sketch para sua placa do Arduíno.


2.2.7. Quando a transferência estiver concluída ira aparecer na parte de baixo do IDE a mensagem "Carregado":



2.2.8. Abra o Monitor Serial da IDE e verifique se o Arduino está respondendo:


Agora o Arduino está pronto com o DCC++


3. Instalando o JMRI

3.1. Como o nome já diz, o JMRI é desenvolvido em Java e para poder executa-lo, vamos precisar ter instalado o Runtime do Java. 

Acesse a página oficial https://www.java.com/pt_BR/ e faça o download do Java compatível com seu sistema operacional:


Download Java

Depois de concluir o download execute o instalador seguindo as orientações do aplicativo. 

Preste atenção nas mensagens que algumas vezes trazem “propaganda” embutida no instalador, sugerindo de alteração da pagina inicial do navegador para o Yahoo e coisas assim, se não quiser essas modificações é só desmarcar estas opções.


3.2. Como o Java instalado vai baixar o JMRI do seu site oficial para instalação. 

Acesso o site: http://jmri.org/

Na página principal tem a ultima versão disponível do JMRI para Download. Procure pela versão de Produção “Production Release”:
Página do JMRI


3.3. Escolha a versão compatível com seu sistema operacional e clique no link para fazer o download:


Downloads Disponíveis

3.4. Com o Download concluído execute a instalação. Ela é bem simples e basta seguir as telas clicando em “Next” até a instalação começar:



3.5. Com a instalação concluída você terá os atalhos no seu desktop para executar o JMRI:


3.6. Com seu Arduino conectado ao computador, execute o PanelPro, será apresentada uma tela para configurar a conexão entre o computador e a sua ferrovia:

3.6.1. Na caixa System Manufacturer selecione “DCC++”:

3.6.2. Na opção System Connection selecione “DCC++ Serial Port”

3.6.3. Na opção Settings selecione a porta serial em que o Arduino está conectado (No meu caso COM3) e clique no botão “Salvar”  na parte de baixo a esquerda da tela.



Pronto, agora o JMRI está configurado e sua central DCC++ está pronta para ser utilizada.


4.  Controlando Seus Trens com JMRI

4.1. Conecte a fonte de alimentação de 12V/15V na Shield Motor R3 FONTE  15V:  Negativo no pino GND e o positivo no pino VIN.  Ligue os trilhos da maquete aos pinos A+ e A-. Nos pinos B+ e B- você pode conectar o trilho que será utilizado para programação de decoders.
Conexões da Fonte e dos Trilhos

4.2. Execute o aplicativo PanelPro do JMRI e abra a opção Tools => Throttles => New Throttles

4.3. Na parte superior da tela tem um botão para ligar e desligar o DCC++. Clique nele para acionar o DCC++

Neste momento os quatro Leds da Shield Motor próximo as saídas A+/A-/B+/B- devem ficar acessos indicando que o energia está sendo enviada aos trilhos.

4.4. Com o DCC++ ativo (Botão Verde), informe na parte de baixo em  “Panel Address” o endereço da sua locomotiva e clique em “Set”.

4.5. Agora é só usar os controles! Para trocar de locomotiva clique em “Release” no “Panel Address”


5. Controlando Seus Trens com Celular

Atenção: Para utilizar esse recurso do JMRI seu computador e seu Celular estejam conectados a mesma rede WIFI

5.1. Baixe no seu celular o aplicativo Engine Driver (Android) ou WiThrottle Lite (iOS):

Engine Driver (Android)


WiThrottle Lite (iOS)


5.2. No PanelPro inicie o serviço WiThrottle na opção Tools => Throttles => Start WiThrottle Server

5.3. Se o DCC++ não estiver ativo (Ícone Vermelho) inicie o DCC++

4.4. Abra no seu celular o app instalado (Exemplo Android Engine Driver):

4.5. Na primeira tela do aplicativo serão exibidas os servidores localizados na sua rede WiFI, clique na servidor localizado em “Discovered Servers”:


Observe que quando conectar o celular, no microcomputador que será exibida a conexão do seu celular no WiThrottle Server:

5.6. No celular clique no botão “Press to select” para informar o endereço da locomotiva:

4.7. Informe o endereço da locomotiva e clique em “Acquire”:

4.8. Pronto.. agora você pode controlar suas locomotivas pelo Celular:




Para conhecer mais:

Seguem algumas sugestões de vídeos para conhecer mais sobre o JMRI:

JMRI - Controlando locomotivas pelo celular
Fernando Franco

JMRI - Utilizando o DecoderPRO para programar a locomotiva
Fernando Franco


Bom amigo ferromodelista, se tiverem dúvidas entre em contato que será um prazer ajuda-los!!!

sexta-feira, 28 de julho de 2017

COMO FUNCIONA O DCC++ Parte 2

Na primeira parte deste Artigo falamos um pouco sobre os componentes do sistema DCC++ agora vamos apresentar como Sketch o DCC++ funciona.



Basicamente o DCC++ recebe comandos via porta serial (Cabo USB) e transforma em um comando DCC, quando utilizamos um software como o JMRI conectado ao DCC++ basicamente ele envia esses comandos seriais para o Arduino;


A grande genialidade do DCC++ é que ele permite que qualquer um crie uma interface para controle, seja via computador ou outro Arduino já que os comandos de controle são facilmente enviados via serial.


Enviado comandos para o DCC++

Vamos ver um pouco como funcionam esses comandos:

1. Com o Arduino DCC++ conectado, abra o Monitor Serial da IDE:




2. Conecte aos trilhos o Multímetro e coloque o mesmo para Leitura de Tensão Corrente Alternada (AC):

3. Na caixa de digitação do Monitor Serial digite o comando "<1>" (sem as aspas conforme na imagem abaixo) e tecle ENTER. Esse comando irá ligar o DCC++.

Observe na tela que o Arduino deve ter retornado "<p1>" sinalizado que está ativo:


4. Observe seu multímetro, ele deverá apresentar uma tensão um pouco mais baixa que o valor da sua fonte (+/- 11.5 para 12V e +/- 14.5 para 15V):


4. Para desligar o DCC++ digite no Monitor Serial o comando "<0>". 


Agora vamos avançar um pouco e controlar uma locomotiva


1. Desligue o multímetro dos trilhos e coloque uma locomotiva com Decoder.


2. No Monitor Serial do Arduino, inicie o DCC++ com o código <1>;

3.Vamos agora mandar um comando para o Decoder:

Coloque o seguinte código no monitor serial: <f DECODER 145>, troque a palavra DECODER pelo endereço do decoder da sua locomotiva, no caso a minha é 1363, então o comando será "<f 1363 145>".

Enviou o comando? Acendeu a luz da locomotiva? O comando que enviamos foi o F0 e o F1.  


4. Para desligar envie o comando <f DECODER 128>


O numero que que enviamos de comando (145 e depois 128)  são calculados conforme a função a ser ativada.

Montei a planilha ComandosDCC++.xlsx que faz esses cálculos conforme a função que quiser ativar o movimentar a locomotiva:


Para utilizar a planilha, preencha o endereço da sua locomotiva e os valores para as funções que quer ativar/desligar: 

- Para movimento, preencha a velocidade (0 a 126) e a direção (1-Frente ou 0-Reverso);
- Para as funções F0 a F28 preencha o valor da função com 0 (Zero) para desligada e 1 (Um) para ligada;

A planilha ira calcular o Código DCC++ para você Copiar e Colar no Monitor Serial.

Se você pretende desenvolver um CAB pode usar os cálculos dessa planilha como referência dos valores que devem ser enviados para o Arduino com DCC++


Recebendo Valores dos Decoders

1. Conecte seu trilho na saída B da Shield Motor R3:


2. Abra o monitor Serial do Arduino e inicie o DCC++ com o código <1>;

3. Envie o comando: <R 1 0 0>.  Este comando está solicitando ao decoder o valor do CV1:


4. Sua locomotiva deve piscar a luz e dar um pequeno "pulo". No Monitor Serial você deverá receber o retorno do valor de CV1 (Endereço Primário do Decoder). No caso da minha locomotiva o retorno foi "<r0|0|1 3>", onde 1 é o numero do CV que está sendo exibido e 3 o valor do CV:


Para ver o valor de outro CV é só trocar no comando <R 1 0 0> o numero 1 pelo numero do CV que deseja ler o valor, por exemplo CV8 (Código do Fabricante do Decoder): <R 8 0 0>.



quarta-feira, 26 de julho de 2017

COMO FUNCIONA O DCC++ Parte 1

Hoje não é mais um mistérios no mundo do ferromodelismo a possibilidade de ter uma central DCC utilizando o Arduino o famoso DCC++.

Objetivo destes artigos é apresentar de forma prática como funciona o sistema DCC++.




Partes do sistema DCC++: 






1. Sketch DCC++: É o programa que será executado pela placa Arduino. Esse programa foi desenvolvido por Gregg E. Berman e permite tanto gerar o sinal DCC para os Decoders como também ler a sua programação (Valor dos CVs). 


2. Driver de Potencia: Este é o Calcanhar de Aquiles de quem se aventura a montar um sistema DCC++, ouso dizer que 99% dos que tiveram problemas em montar a central DCC++ tiveram problemas aqui.

A placa do Arduino gera um sinal elétrico de 5V de baixa potência, que não pode ser ligado diretamente aos trilhos da maquete, precisamos de um circuito eletrônico para gerar o sinal elétrico para os trilhos com 12V a 15V com vários Amperes para alimentar nossos trens.

O driver mais utilizado é a placa Shield Motor Versão R3. Esta placa pode ser facilmente conectada a uma placa Arduino Uno ou Mega e possui duas saídas, uma para o trilho principal e outra para o trilho de programação dos Decoders.


O maior problema é que poucas placas de potência (módulos) são compatíveis com um circuito DCC com Arduino, por isso muitos que tentam montar um sistema DCC não tem sucesso e acabam desistindo dessa alternativa.


3. Interface de Controle: Interface de Controle: O Arduino com o DCC++ gera a codificação DCC, mas você precisará de alguma coisa para dizer a esta placa o que fazer. Esta interface pode ser um computador, um celular ou mesmo outro Arduino, claro que é necessário rodar um programa compatível com o DCC++ nesses dispositivos.

A interface mais utilizada com o DCC++ é o software JMRI em um computador. Este software dispõe muitos recursos para controle e programação dos decoder's.




Eletricidade do sinal DCC

Antes de falar sobre o Arduino e o DCC++ vamos entender como funcionam os sinais elétricos do DCC para então compreender como o Arduíno irá gerar esse sinal:


1) Geração do Sinal DCC:

O sinal DCC tem a tensão da fonte é invertida em vários ciclos por segundo conforme o comando enviado da Central para os Decoders:




Para que o sinal seja válido é necessário que os pulsos se alternem de positivo para negativo sem nenhum intervalo com tensão zero na transição.

Se entre os pulsos positivos e negativos ocorrem intervalos com zero volts o sinal DCC será inválido. 


Em resumo para gerar o sinal DCC, a central DCC precisa inverter a polaridade da alimentação dos trilhos conforme a codificação sem intervalo de transição da polaridade;


Na eletrônica existe um circuito chamado Ponte H que faz essa "alternância de polaridade" necessário para gerar o sinal DCC. Ele funciona como duas chaves duplas S1 e S2 que vamos chamar de Direção:



Situação 1: Quando o circuito está desativado as chaves S1 e S2 estão desligadas;










Situação 2: Quando é acionada a chave S1, vamos dizer Direção 1, a energia flui através da chave S1a, em direção a chave S1b geram um sinal Positivo na Saída.










Situação 3: Quando é acionada a chave S2, vamos dizer Direção 2,o sinal de a energia flui através da chave S2b em direção a chave S2a, gerando um sinal Negativo na Saída;








Para que o sistema DCC funcione, precisamos de um Driver de Potencia (Placa) que utilize um circuito de Ponte H em que as chaves S1 e S2 sejam alternadas simultaneamente. Se isso não ocorrer teremos um intervalo entre o Sinal Positivo e Sinal Negativo que ira invalidar a codificação DCC.

Isso só é possível se o Driver de Potencia (Placa) tiver um único pino para controle da Direção (Chaves S1 e S2).



2) Leitura de Corrente


A leitura de corrente consumida nos trilhos tem duas finalidades: a) Proteção do Circuito b) Retorno Valor de CVs de Decoders.


a) No trilho de Operação a leitura de corrente que está sendo consumida serve para proteger o circuito de sobrecargas que poderiam queimar a fonte ou o Driver de Potencia.

b) Retorno Valor de CVs de Decoders: Conforme norma da NMRA, os Decoders conversao com a Central DCC com pequenos pulsos de consumo de energia, conforme esses pulsos a Central consegue entender o valor que está gravado em determinado CV do decoder.


Para que estes dois recursos funcionem é necessário que a Driver de Potencia (Placa) tenha esse recurso de retorno de corrente consumida.




SHIELD MOTOR R3


Placa Shield Motor R3


A placa Shield Motor R3 é o Driver de Potência recomendado para DCC++. Ela foi a placa escolhida pelo criador do DCC++ Gregg E. Berman por atender aos requisitos citados acima: 1) Um único pino para controle da Direção e 2) Retorno da Corrente consumida na saída e poder ser conectada diretamente as placas Arduino UNO e Arduino MEGA.


No próximo post vamos ver como enviar comandos DCC diretamente do Arduino com DCC++