segunda-feira, 16 de outubro de 2017

Interface Configurável Para 48 Controles CMRI MK1

Esta interface é bastante flexível e pode ser utilizada para controlar AMV acionados por Servos, Bobinas ou Motor Lento, assim como Luzes de Sinalização e outros dispositivos de forma simultânea. 




É isso mesmo, você pode controlar AMVs com Servos, Bobinas e Motores de Acionamento com uma única interface.

Ela tem dois modos de funcionamento: 
1: Modo Standalone onde os controles são acionados através de interruptores 
2: Modo Node CMRI onde os controles são gerenciados por um software como o JMRI.


Componentes da Interface 48 Controles CMRI:
1. Arduino Nano
2. Modulo RS485
3. Módulo Saída I2C Servos PCA9685
4. Módulo Saída 74HC595
5. Módulo Entrada CD4021

Módulos Protótipo


Diagramas dos Blocos da Interface


Blocos de Saída - 48 Portas de Saída
Uma das maiores versatilidades deste projeto está nas combinações dos 48 Controles que podem acionar Servos, Bobinas de AMVs, Motores Lentos de AMVs, Sinalização entre outras possibilidades.

Os 48 controles são divididos em 6 blocos, cada um com 8 Controles* e cada bloco pode funcionar de uma maneira diferente conforme a configuração da Interface.


Bloco 1Controle 1 a 8
Bloco 2Controle 9 a 16
Bloco 3Controle 17 a 24
Bloco 4Controle 25 a 32
Bloco 5Controle 33 a 40
Bloco 6Controle 41 a 48



Para acionamento das saídas existem duas possibilidades de hardware: Módulo(s) Serial/Paralelo com 74HC595 e/ou Modulo(s)  PWM i2c para 16 Servos.

Número de Controles x Número de Portas de Saídas: Esta interface prevê o controle de 48 dispositivos, o que não necessariamente serão 48 Portas de Saídas. 
No caso de AMVs acionados por bobina, precisamos de puas portas de saída para o mesmo AMV, uma porta para cada bobina. 

Quando configuramos a saída de um bloco como "AMV Bobina" estaremos associando duas portas de saída para um único Controle, ou seja, se todos blocos de saída forem configurados como "Bloco AMV Bobina" teremos 96 portas de saídas na Interface.



1. Arduino Nano:

A base do projeto foi o Arduino Nano, mas você pode utilizar um Arduino UNO sem problemas. No meu caso, montei o Arduino Nano em uma PCB onde montei junto à interface serial RS-485 e alguns pinos para conexão dos módulos e da alimentação.

Foto Prototipo


Detalhe das Conexões da PCB


Conexões Arduino

2. Módulo RS-485:
Pino TX: Dados In (DI) RS485
Pino RX: Dados Out (RO) RS485 
Pino D2: Enable R (RE) e Enable T (DE) RS485

3. Módulo Saída I2C Servos PCA9685:
Pino A4: SCL Módulo I2C Servos 
Pino A5: SDA Módulo I2C Servos 


4. Módulo Saída 74HC595:
Pino D3: Clock Modulo 74HC595 (74HC595 Pin 11)
Pino D4: Latch Modulo 74HC595 (74HC595 Pin 12)
Pino D5: Data Modulo 74HC595 (74HC595 Pin 14)

5. Módulo Entrada CD4021:
Pino A0: Clock Modulo 4021 (CD4021 Pin 10)
Pino A1: Latch Modulo 4021 (CD4021 Pin 9)
Pino A2: Data Modulo 4021 (CD4021 Pin 3)

6. Pino Habilita Configuração:
Pino A3: Enable Config (GND - Enable)


2. Módulo RS-485:
A interface Serial RS-485 basicamente é um CI Max485 ou SN75176 ligado ao Arduino nos pinos 0(RX), 1 (TX) e 2 (Controle I/O). Ele irá receber e transmitir os dados da porta serial no padrão RS-485.

Você pode utilizar um modulo RS-485, para isso basta ligar os DI ao Pino 0 (RX), RO ao Pino 1 (TX) e  DE e RE ao Pino 2 (Controle). Não esqueça também de ligar o VCC (5V) e o GND. 


Os pinos para conexão dos módulos de Entrada / Saída estão ligados diretamente aos pinos do Arduino Nano:
Pinos 3, 4 e 5:  Módulo Saídas 74HC595
- Pinos A0, A1 e A2 Módulo Entradas CD4021 
- Pinos A4 e A5 Modulo PWM I2C;


3. Módulo Saída I2C Servos PCA9685
O módulo PWM I2C para 16 Servos, utiliza comunicação I2C (Pinos A4 e A5 do Arduino) o que permite que com poucos pinos do Arduino consigamos controlar muitos servos.

A interface está preparada para conexão de até 2 módulos PWM, o que permite controlar até 32 servos.





Quando habilitamos os módulos PWM na Interface, estaremos vinculando para cada interface 2 Blocos de controles (8 x 2 = 16 Controles). Obrigatoriamente estes serão os blocos 1 e 2 (Modulo PWM 1) e blocos 3 e 4 (Modulos PWM 2).

Os blocos restantes serão acessados pelo Módulos 74HC595. Se configurarmos por exemplo um módulo PWM, teremos os blocos 1 e 2 configurados para Servos e os blocos 3, 4, 5, 6 para controle via 74HC595.

Endereçamento dos Módulos I2C:Os módulo PWM I2C tem uma série de jumpers que configuram seu endereço no barramento I2C, a interface trabalha com endereços fixos para os módulos conforme abaixo:

Modulo 1: Endereço 0x40
Modulo 2: Endereço 0x41


Jumpers de Endereçamento do Modulo

Endereco 0x40 (Todos Abertos) - Endereco 0x41 (Apenas A0 Fechado)


4. Módulo Saída 74HC595
O 74HC595 é um componente eletrônico conversor de sinal Serial para Paralelo, ele tem 8 portas de saídas e recebe as informações do Arduino utilizando 3 pinos.
Foto Protótipo Modulo Saida 74HC595

Eles podem ser ligados em cascata multiplicando o numero de saída, eu montei módulos de 16 saídas (Dois 74HC595 em cada) que podem ser conectados multiplicando o numero de portas de saída:

Foto conexão em cascata de Modulos 74HC595


5. Modulo de Entrada CD4021
O CD4021 é um componente eletrônico conversor de sinal Paralelo para Serial, ele tem 8 portas de entrada que tem seus valores transmitidas para o Arduino utilizando apenas 3 pinos.

Ele pode ser ligado em cascata com outro CD4021 multiplicando o numero de entradas possíveis com o uso de apenas 3 pinos do Arduino. Eu optei em montar módulos com 3 CD4021 e assim ter 24 portas de entrada.






Sketch Interface

O sketch com o código pode ser baixado no link abaixo:
Sketch Interface Configurável Para 48 Controles C/MRI MK1- V 1.7 - 15/12/2018 

Além do código serão necessárias algumas bibliotecas adicionais que podem ser baixadas nos links:
- CMRI


Uma das flexibilidades desta interface é que as principais configurações são feitas via serial ao iniciar o Arduino sem a necessidade de alterar no sketch:


Configuração do Modulo via Porta Serial


- Modo de Funcionamento: Standalone ou Node CMRI;
- Endereço Node (Apenas no Modo Node CMRI);
- Numero de Módulos PWM 16 Servos conectados (Ate2 módulos);
- Funcionamento dos Blocos de Saída (Saída Simples ou AMV Bobina);
- Tempo do Pulso Acionado para cada Bloco configurado como AMV Bobina;
- Ângulo Mínimo e Máximo de Cada Servo (Conforme Numero de Modulos PWM conectados);




Modo de Funcionamento dos Blocos de Controles

Conforme citado acima, cada um dos 6 blocos de controle (8 controles por bloco) podem funcionar de maneira diferente conforme configuração:

Bloco Normal: Liga (5V) ou Desliga (0V) conforme o controle recebido. Cada saída do bloco ficará ligada ou desliga conforme a posição da respectiva entrada (Modo Standalone) ou conforme o valor recebido via serial (Modo CRMI Node).
Modo Normal: Cada saída corresponde a um controle.


Bloco Servo: Quando utilizado módulos PWM I2C as primeiras portas de controles serão associadas aos servos: PWM 0: (1 a 16) e PWM 1: (17 a 32). 

Cada servo ira para uma posição conforme o valor da respectiva entrada (Modo Standalone) ou conforme o valor recebido via serial (Modo CMRI Node). 

O servo ira se movimentar para a Ângulo Mínimo (Ângulo por Servo configurável via Serial) quando o controle recebido for 0 (Zero) e vai movimentar para o Ângulo Máximo (Ângulo por Servo configurável via Serial) quando o controle recebido for 1.





Bloco AMV Bobina: Quando um bloco de controles 74HC595 é configurado para AMV de Bobina, cada Controle terá duas Portas de Saídas (Uma para cada bobina). 


Modo AMV Bobina: Cada par de portas de Saída coresponde a um Controle


Essas saídas são acionadas momentaneamente (Tempo Configurável via Serial) conforme o valor da respectiva entrada do Controle (Modo Standalone) ou conforme o valor recebido via serial (Modo CRMI Node). 

A primeira porta de saída será acionada momentaneamente quando o controle recebido for 0 (Zero) e a segunda saída será acionada momentaneamente quando o quando o controle recebido for 1.


Acionamento das Saídas conforme o valor dos Controles para Blocos AMV Bobina.


Como o consumo de corrente das bobinas de AMVs é bastante elevado é necessário utilizar um transistor de driver, como o TIP120.


Módulo Driver com Tip120 para Acionamento de Bobinas



Ligação do Modulo 74HC595 com Driver de Potencia aos AMVs



Logicamente quando é utilizada esta configuração você terá um numero de saída maior que 48, podendo chegar a 96 saídas caso configure todos os blocos como AMV de Bobina.  

Como o tempo de acionamento é configurável é possível controlar não apenas AMVs de Bobina, mas também motores de acionamento lento ajustando o tempo de acionamento do bloco. Neste caso não se deve usar no mesmo bloco AMVs de bobina, pois o tempo maior acionado provocará a queima da bobina.



Nota 22/06/2019: Devido a dificuldade em obter os módulos de Entrada CD4021 e de Saída 74HC595 que exigem conhecimentos de eletrônica para sua confecção foi desenvolvido a Interface Configurável Para 48 Controles CMRI MK2.