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



10 comentários:

  1. OLA MEU AMIGO MUITO BOM ESSE EMPENHO EM DESMITIFICAR O DCC, VOU TENTAR FAZER, JÁ QUE COM O VAZAMENTO DE UMAS PILHAS QUEIMOU O MEU CONTROLE DA DYNAMIS E-Z COMMAND... MAS VAMOS LA NA MAQUETE TENHO UMA PERA, COMO FAÇO PRA TER A REVERSÃO DOS TRILHOS AUTOMÁTICA? PODE AJUDAR, DESTE JÁ AGRADEÇO

    ResponderExcluir
  2. (com as aspas conforme na imagem abaixo)e não (sem as aspas conforme na imagem abaixo)

    ResponderExcluir
    Respostas
    1. Oi amigo, desculpe mas não entendi seu comentário mas acredito que seja referente ao item do texto: "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++."

      Se for, o texto está correto, ele orienta a digitar o texto "<1>" sem as ASPAS, ou seja digitar: <1>.

      Abraços,

      Clederson

      Excluir
    2. desculpa falto o (?)era uma pergunta. Mis já consegui resolver era um erro de comunicação serial aqui.

      Excluir
    3. Funciona tudo mas não consigo saber como programar uma locomotiva com um número diferente. Ela só aceita o número 3.
      Quando coloco no trilho de programa ela anda sozinha.

      Excluir
  3. vc poderia me orientar a onde na sketch, eu altero o valor da amostra de corrente vinda do sensor. Pois estava pensando em usar o L298D que tenho de monte aqui heheehe e um sensor de corrente acs712 5a. 0,185/A.

    ResponderExcluir
  4. vc teria alguma sketch de decoder simples que funcione tanto no Uno como no Nano. que a configuração de endereço fosse por 4 ou 8 micro switch. com funções básicas para frente, para trais, velocidade, 2 luz, 2 reserva. existe um monte na net so que a maioria da erro na hora de compilar.

    ResponderExcluir
    Respostas
    1. Tem a biblioteca pronta NmraDcc:
      https://github.com/mrrwa/NmraDcc

      Quanto ao projeto você precisa estudar a bibliote para implementar, tem o exemplo NmraDccMultiFunctionMotorDecoder com as funcoes que vc quer.

      Excluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. Olá amigo , primeiramente parabéns pelo trabalho de ensinar e esclarecer as duvidas de todos , eu montei meu DCC++ do mesmo jeito ensinado aqui , estava funcionando perfeitamente e depois de alguns dias percebi que só acendem 2 leds ao invés dos 4 leds que acendiam no motor shild, agora só acende o "b" o "a" que alimenta os trilhos não acende mais e por sua vez não alimenta mais os trilhos, já tentei de tudo troquei fios conectores até as placas por outras novas , mas o problema persiste, se puder me dar uma ajuda para resolver esse problema ficaria muito grato , obrigado pela atençao .

    ResponderExcluir