sexta-feira, 23 de agosto de 2019

Interface Configuravel Para 48 Controles CMRI MK2

Esta versão da Interface Configurável foi simplificada com as funcionalidades e utiliza módulos que podem ser encontrados facilmente em sites como Ebay e Aliexpress.


Interface Configurável Para 48 Controles CMRI MK2


A Interface 48 Controles CMRI MK2 é um módulo para conexão da maquete ao computador, ela permite o controle de dispositivos da maquete como Desvios e Sinalização utilizando um software como o JMRI.

Painel JMRI Computador


Controle Desvio pelo Celular com app EngineDrive

Características do Módulo:
- Configuração do Endereçamento do Node de 0 a 127;
- 16 Portas de Entradas para Sensores;
- 48 Portas de Saídas: 
- 16 Servos;
- 32 Portas de Saída para Iluminação (5v - 20mA por saída);
- Configuração Individual dos Servos (Ângulo Posição Closed e Ângulo Posição Thrown)
- Movimento Lento dos Servos;


Este primeiro post apresenta a montagem da Interface 48 Controles MK2, no post seguinte você verá como Conectar e Configurar as Interface 48 Controles MK2 no JMRI para controle dos servos, da sinalização e leitura dos sensores de ocupação.



Montagem da Interface 48 Controles MK2

Componentes:
1 - Arduino Nano (1x)
2 – Jumper (1x); 
3 - Modulo RS485 (1x);
4 - Módulo Rele Nível Alto (1x)
5 - Modulo PCA9685 Servo Motor Driver I2C (1x);
6 - Modulo MCP23017 I/O I2C (3x); 

Adicionais:
- 1x Fonte 5V 500mA – Alimentação Arduino e Módulos;
- 1x Fonte 5V 2A - Alimentação Servos (Ver Texto);
- Módulo USB RS485 (Ver Texto);



Montagem:
Diagrama Interface CMRI Mk2

1. Arduino Nano

Recomendo que sejam soldados no Arduino apenas os terminais nos pinos que serão utilizados. Assim o risco de conectar algo errado é muito menor.



Pinos Arduino Utilizados

Pinos Utilizados:
- Pino 0 e 1: Rx / TX Serial – Comunicação RS-485
- Pino 2: Controle Fluxo Comunicação RS-485
- Pino 7 – Timer On-Delay
- Pinos 11 e 12 – Habilitar Menu de Configuração
- Pinos A4 e A5 – Comunicação I2C
- Pinos 5V e GND - Alimentação


2. Transferência do sketch Interface 48 Controles MK2

Depois de soldar os terminais no Arduino Nano é recomendados transferir o Sketch e realizar alguns testes antes de conectar os módulos.

2.1. Baixe o Sketch no link: https://github.com/cledersontp/INTERFACE-CMRI-SMINI-MK2 e utilizando a IDE do Arduino faça a transferência para o Arduino Nano;

Download do Sketch no Github 

Transferencia Sketch para o Arduino


2.2. Coloque o jumper nos pinos 11/12 do Arduino para habilitar o Menu de Configuração.
Colocando o Jumper para Habilitar o Menu de Configuração

2.3. Abra o Monitor Serial da IDE do Arduino com a velocidade de 19200 e com a opção de quebra de linha. Deverá ser exibido o menu de configuração da Interface 48 Controles MK2
Menu de Configurações da Interface no Monitor Serial


2.4. Configure um endereço para o Node e alguns ângulos para os servos. Reset o Arduino e confirme se as configurações foram salvas. 
Configuração do Endereço da Interface


Se tiver dúvidas sobre a configuração, veja a postagem Conexão e Configuração da Interface 48 Controles MK2 .



3. Conexão Módulo RS485

3.1. Faça a conexão dos pinos do módulo RS485 ao Arduino Nano conforme baixo:

Conexão do Módulo RS485


DI (RS485) => Pino 0 (RX Arduino Nano)
DO (RS485) => Pino 1 (TX Arduino Nano)
DE e DO (RS485) => Pino 2 (Arduino Nano)
VCC (RS485) => 5V
GND (RS485) => GND

Montagem em uma Base para Organizar os Modulos


3.2. Depois de conectar o módulo RS485 ao Arduino Nano, você pode utilizar um módulo USB/RS485 para testar a comunicação:

Conversor USB / RS485 


3.2.1. Conecte os pinos A e B do modulo RS485 aos pinos A e B do adaptador US/RS485 (Não inverter a ligação, pino A ligado ao pino A e pino B ligado ao pino B).
Conexão RS485 com par transado.


3.2.2. Conecte o adaptador USB/RS485 ao computador e configure sua porta no IDE do Arduino. Abra o monitor serial com a velocidade de 19200.
Monitor Serial Porta Adaptador USB/RS485


3.2.5. Conecte o jumper dos pinos 11/12 e ligue a fonte de 5V 500mA. No Monitor Serial deverá ser exibido o Menu de Configuração da Interface:


Conectando a Fonte 5V 500mA na Interface


Menu de Configuração transmitido pela RS485


3.2.6. Faça alguns testes com o Menu para confirmar que a RS485 está enviando e recebendo dados do computador;



4. Conexão Arduino com Módulo PCA9685 e Módulo Rele:

4.1. Faça a conexão do módulo PCA9685 ao Arduino conforme abaixo:

Conexão Módulo PCA9685 ao Arduino

SDA (PCA9685) => A4 (Arduino Nano)
SDL (PCA9685) => A5 (Arduino Nano)
VCC(PCA9685) => 5V
GND (PCA9685) => GND


4.2. Faça a conexão do módulo relê ao Arduino conforme abaixo:

Conexão Módulo Rele ao Arduino


DI (Modulo Rede) => Pino 7 (Arduino Nano)
VCC (Modulo Rede) => 5V
GND (Modulo Rede) => GND

4.3. Faça a conexão da alimentação da Fonte de Alimentação dos servos ao Módulo Rele e ao modulo PCA9685:
Conexão Contatos de Rele ao Módulo PCA9685


Pino 1 (Modulo Rede) => 5V Fonte 2A
Pino 2 (Modulo Rede) => VCC (PCA9685)
GND (PCA9685) = GND Fonte 2A

O módulo relê liga a alimentação dos Servos Motores depois que o Arduino Nano já estiver ativo evitando assim o “pulo” que os servos costumam dar ao serem ligados. Cada servo consome em média 10mA a 30mA quando parado, porem ao ser acionado eles podem consumir individualmente mais de 200mA.

Além desse consumo, ao serem acionados os motores dos servos podem provocar um queda na tensão da fonte. Se utilizar uma mesma fonte para alimentar os módulos e os servos motores o Arduino pode ficar reiniciar cada vez que os motores foram acionados ou até mesmo quando o módulo rele ligar.


4.4. Faça alguns testes com os módulos Rele e PCA9685:

4.4.1. Remova o Jumper de configuração dos pinos 11/12 e conecte o Arduino a fonte de 5V.
Remover o Jumper Config

Depois de alguns segundos o módulo rele deve ser acionado permanecendo ligado.

Rele acionado alguns segundos depois da alimentação ser ligada.


Para repetir o teste desconecte a fonte e ligue novamente. 

4.4.2. Desligue a fonte dos módulos e conecte alguns servos ao módulo PCA9685:

Servos Conectados ao Módulo PCA9685


4.4.3. Ligue  e a fonte de alimentação dos servos e a fonte de alimentação dos módulos.
Conexão da fonte de 5V x 2A (Servos) e da fonte 5V x 500mA (Módulos)


Depois de alguns segundos, quando o módulo rele for acionado os servos  devem ir para a sua posição inicial.
Quando o Módulo Rele liga os servos vão para a posição inicial.


Desligue a alimentação dos módulos e mova manualmente com cuidado as hastes dos servos para outra posição.
Movendo manualmente a haste do servo com a energia desligada

Ligue novamente a alimentação dos módulos, novamente quando o módulo rele for acionado os servos vão para a posição inicial.



5. Conexão Arduino com Módulos MCP23017

MCP23017 é um módulo de expansão de portas. Ele tem 16 portas que podem ser configuradas tanto para entrada de dados como para saída e comunica com o Arduino via I2C (Pinos A4 e A5). 


5.1. Antes de conectar os módulos MCP23017 precisamos configurar o endereçamento dos módulos:

5.1.1. Módulo 1 – Endereço 000 (Entradas 1 a 16):

Módulo MCP23017 com Endereço 000 (Sem Jumper)

Este é o módulo de Entradas, nele serão conectados os sensores como os Detectores de Ocupação. 
Como o endereço padrão dos modulos MCP23017 é 000 não precisamos fazer nenhum jumper nele;


5.1.2. Módulo 2 – Endereço 001 (Saídas 17 a 32):
Módulo MCP23017 com Endereço 001 (Jumper A0 ao VCC)

Neste modulo podem ser ligados led ou outros dispositivos para serem ligados pelo computador.  
Ele precisa ser jumpeado com o endereço 001 ligando o pino A0 ao VCC conforme a imagem .


5.1.3. Módulo 3 – Endereço 010 (Saídas 33 a 48):
Módulo MCP23017 com Endereço 010 (Jumper A1 ao VCC)

Assim como o modulo 2 este módulo poderá ser utilizado para ligar a sinalização ou outros dispositivos.
Ele precisa ser jumpeado com o endereço 010 ligando o pino A1 ao VCC conforme a imagem .


5.2. Com os módulos MCP23017 jumpeados faça a conexão ao Arduino Nano conforme abaixo:
Conexão Módulos MCP23019 ao Arduino


SDA (MCP23017) => A4 (Arduino Nano)
SDL (MCP23017) => A5 (Arduino Nano)
VCC (MCP23017 => 5V
GND (MCP23017) => GND

Agora a Interface CMRI está pronta para conectar sua maquete ao JMRI.

Veja também a postagem Conexão e Configuração da Interface 48 Controles MK2 de como configurar a Interface e conectar sensores e leds.


LOJA EXPRESSO DUINO

INTERFACE CMRI R$ 120,00 + Envio

A Interface CMRI vem pronta para você conectar sua maquete ao computador  basta configurar o seus endereço e os ângulos dos servos.
Conteúdo: 1x Arduino Nano, 1x Módulo PCA9685,1x Modulo Rele, 1x Modulo RS485, 3x Modulos MCP23017, Base Plastica e Manual de Instruções;
Para adquirir entre em contato: clederson_p@yahoo.com.br

6 comentários:

  1. Ola, estou tentando carregar o codigo o arduino e não é possivel . aparece uma mensagem de erro :
    Arduino: 1.8.13 (Windows 10), Placa:"Arduino Nano, ATmega328P (Old Bootloader)"





















    C:\Users\ricar\Documents\Sketch Arduino\INTERFACE-CMRI-SMINI-MK2-master\INTERFACE-CMRI-SMINI-MK2-master\ControleCMRI_SMINI_MK2\ControleCMRI_SMINI_MK2.ino: In function 'void setup()':

    ControleCMRI_SMINI_MK2:98:15: error: call of overloaded 'begin(int)' is ambiguous

    mcp0.begin(0);

    ^

    In file included from C:\Users\ricar\Documents\Sketch Arduino\INTERFACE-CMRI-SMINI-MK2-master\INTERFACE-CMRI-SMINI-MK2-master\ControleCMRI_SMINI_MK2\ControleCMRI_SMINI_MK2.ino:42:0:

    C:\Program Files (x86)\Arduino\libraries\Adafruit-MCP23017/Adafruit_MCP23017.h:26:8: note: candidate: void Adafruit_MCP23017::begin(uint8_t, TwoWire*)

    void begin(uint8_t addr, TwoWire *theWire = &Wire);

    ^~~~~

    C:\Program Files (x86)\Arduino\libraries\Adafruit-MCP23017/Adafruit_MCP23017.h:27:8: note: candidate: void Adafruit_MCP23017::begin(TwoWire*)

    void begin(TwoWire *theWire = &Wire);

    ^~~~~

    exit status 1

    call of overloaded 'begin(int)' is ambiguous



    Este relatório teria mais informações com
    "Mostrar a saida detalhada durante a compilação"
    opção pode ser ativada em "Arquivo -> Preferências"

    ResponderExcluir
    Respostas
    1. Oi amigo,
      Pela mensagem de erro o problema é no boot do arduino nano que está utilizando.
      Tente alterar a opção do processador no menu "Preferencias => Processador" para "ATmega328P (Old Bootloader)"

      Excluir
  2. Boa noite,
    Efetuei a alteração mas não tive sucesso.
    Tento efetuar a verificação do sketch e o erro ocorre na linha "mcp0.begin(0);'', na inicialização do MCP2307.
    Coloco esta linha como comentário e a verificação é concluída com sucesso. Envio o sketch para o arduino e o carregamento é efetuado com sucesso porem não é possível acessar o menu configuração no monitor serial.
    Você teria mais algum ajuda do que pode estar ocorrendo?
    Obrigado pela atenção e pelos conteúdos compartilhados, estão sendo muito uteis.

    ResponderExcluir
    Respostas
    1. Parece que o problema é na biblioteca Adafruit_MCP23017. voce pode tentar fazer alguns testes com a biblioteca usando os exemplos que vem com ela.
      Sem as linhas de inicialização do MCP23017 o projeto não vai rodar.

      Excluir
  3. Boa tarde,
    Fiz alguns testes com a biblioteca Adafruit_MCP23017.
    Na versão 1.2.0 o sketch CMRI continua dando erro na linha de inicialização do MCP23017.
    Na versão 1.1.0 o sketch CMRI faz a verificação sem apresentar nenhum erro e é possível carregar no Arduino NANO sem nenhum erro porem o menu configuração não inicializa no monitor serial. Estou usando as configurações conforme o descritivo mas o menu não aparece.
    Existe alguma outra forma de testar? antes de fazer todas as conexões com os demais módulos.
    Obrigado pela ajuda e comentários.

    ResponderExcluir
    Respostas
    1. Boa-Tarde Ricardo

      Vc conseguiu visualizar o menu configuração no monitor serial?

      Excluir