Você está na página 1de 25

COMO FUNCIONA O DCC++ Parte 1

Hoje não é mais um mistério 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 Potência: 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++

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>.
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.1. Acesse o site https://github.com/DccPlusPlus/BaseStation

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!!!

Você também pode gostar