O PLC 32 possui uma interface I2C isolada que permite a conexão com placas de expansão. Essas placas de expansão, conhecidas como Módulos I/O, podem ser utilizadas para aumentar a quantidade de entradas optoacopladas e saídas a relé do PLC 32.
Neste blog, vamos aprender como utilizar os módulos de expansão I/O com o PLC 32.
Sumário
1. Visão geral
O PLC 32 possui uma interface que permite a conexão de dispositivos I2C ao ESP32 através de um conector RJ45, garantindo um isolamento elétrico completo. O hardware inclui um ADUM1250, responsável por isolar os pinos de comunicação I2C, e um B0305S para isolar a alimentação do PLC 32 da placa de expansão. Na figura a seguir, podemos ver a região da placa destinada a essa comunicação.
Para a placa PLC 32, uma vez que possui o LAN8720 embarcado que utiliza os pinos I2C normais do ESP32, é necessário alterar os pinos para o acionamento das Expansões I2C. Os pinos utilizados para a comunicação podem ser visualizados na tabela a seguir.
Na parte inferior da placa, encontramos 4 jumpers. Ao removê-los, é possível desativar os resistores de pull-up (SDA e SCL). Por padrão, o PLC 32 fornece energia para a placa conectada ao barramento. No entanto, se necessário desconectar essa ligação, basta cortar os jumpers 5V e GND. Os jumpers estão destacados na figura a seguir.
Na figura a seguir, podemos observar uma representação da topologia que pode ser empregada para conectar o PLC 32 (placa preta) a duas placas de expansão (vermelhas), utilizando a conexão I2C através do RJ45.
No link I2C estamos disponibilizando exemplos de como utilizar a comunicação I2C no PLC 32.
2. Como utilizar os módulos I/O
Para um exemplo mais detalhado da utilização dos módulos I/O, vamos controlar duas lâmpadas utilizando o Módulo I/O 9x7. No entanto, a lógica é a mesma para o Módulo I/O 4x4. Na figura a seguir, podemos ver a topologia utilizada neste exemplo.
Os relés irão acionar duas lâmpadas, e na entrada optoacoplada será conectada uma botoeira. Como exemplo, vamos controlar a lâmpada da direita utilizando a botoeira, enquanto a lâmpada da esquerda ficará piscando. A seguir, podemos ver o código utilizado no exemplo.
#include <Arduino.h>
#include <Wire.h>
#include "PCAL9535A.h"
PCAL9535A::PCAL9535A<TwoWire> gpio(Wire);
void setup() {
Wire.begin(33, 5); //Joing I2C bu
Serial.begin(9600);
gpio.begin(PCAL9535A::HardwareAddress::A001); // 0x20 - Pins = 000
for (int i = 9; i < 16; i++)
{
gpio.digitalWrite(i, 0); // LED Off
gpio.pinMode(i, OUTPUT);
}
}
bool pisca = 0;
void loop() {
for (int i = 0; i < 9; i++)
{
Serial.print(gpio.digitalRead(i));
}
Serial.println();
gpio.digitalWrite(9, gpio.digitalRead(0));
gpio.digitalWrite(10, pisca);
delay(500);
pisca = !pisca;
}
A biblioteca utilizada no código (PCAL9535A.h) está disponível para download neste link. Para incluí-la na IDE do Arduino, vá em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .zip.
Neste blog, vimos como utilizar o módulo I/O no PLC 32. Esses módulos permitem que o PLC 32 expanda a quantidade de entradas e saídas controladas por ele.
Se você deseja ver mais detalhes sobre o PLC 32, acessar o seu manual ou adquirir uma unidade, clique neste link.
Autor: Thales Ferreira