top of page
Crescer (fundo transparente)_Negativo_pn
Você sabia que a Crescer ensina, fornece e faz soluções de automação e IoT com Arduino e ESP32?

Fale com um especialista

2.png
3.png
1.png
Foto do escritorThales Gonçalves Ferreira

PLC 32 - Entradas do módulo analógico I2C

Atualizado: 7 de ago.

O PLC 32 possui uma interface I2C isolada que possibilita a conexão com placas de expansão. Essas placas são utilizadas para aumentar o número de entradas optoacopladas, saídas de relé, além de entradas e saídas analógicas do PLC 32.

 

Neste blog, vamos aprender como utilizar as entradas do módulo analógico I2C 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, facilitando a integração. O hardware conta com um ADUM1250, que isola os pinos de comunicação I2C, e um B0305S, que separa a alimentação do PLC 32 da placa de expansão, garantindo um isolamento elétrico completo. A figura a seguir ilustra a área da placa dedicada a essa comunicação.



Na placa PLC 32, como o LAN8720 incorporado utiliza os pinos I2C padrão do ESP32, é necessário redefinir os pinos para comunicar com as expansões I2C. A tabela a seguir mostra os pinos utilizados para a comunicação.



Na parte inferior da placa, há 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 for necessário desconectar essa alimentação, basta cortar os jumpers 5V e GND. Os jumpers estão destacados na figura a seguir.



Na figura a seguir, podemos ver uma representação da topologia utilizada para conectar o PLC 32 (placa preta) a um módulo analógico e um de expansão (vermelhas), utilizando a conexão I2C via RJ45.



No link I2C estamos disponibilizando exemplos de como utilizar a comunicação I2C no PLC 32.



2. Como utilizar as entradas do módulo analógico

 

O módulo analógico é capaz de ler 3 entradas de tensão (0 - 10V) e 5 entradas de corrente (4 - 20mA). Para demonstrar seu funcionamento, vamos realizar a leitura de uma entrada de tensão e outra de corrente. Na figura a seguir, podemos ver a topologia utilizada neste exemplo.


 

O PLC 32 irá ler os valores das entradas e exibi-los no monitor serial. A seguir, podemos ver o código utilizado no exemplo.


#include <Wire.h>                      // Inclui a biblioteca Wire para comunicação I2C
#include <ADS7828.h>                   // Inclui a biblioteca ADS7828 para controlar o ADC ADS7828

ADS7828 adc(0x48);                     // Define o endereço I2C do ADS7828 como 0x48 (A0 e A1 conectados a 5V)

void setup() {
  Wire.begin(33, 5);                   // Inicializa a comunicação I2C nos pinos 33 (SCL) e 5 (SDA)
  Serial.begin(9600);                  // Inicializa a comunicação serial a 9600 bps
  adc.init(INT);                       // Inicializa o ADC ADS7828 com a configuração de interrupção (INT)
}

void loop() {
  unsigned int read_value = 0;         // Declara uma variável para armazenar o valor lido do ADC
  float voltage = 0;                   // Declara uma variável para armazenar a voltagem calculada

  for (int x = 0; x < 2; x++) {        // Loop para ler os dois canais do ADC (canal 0 e canal 1)
    read_value = adc.read(x, SD);      // Lê o valor do canal x do ADC com modo de leitura single-ended (SD)
    voltage = read_value * (10000.0 / 4095.0);  // Calcula a voltagem em mV com base no valor lido (ADC de 12 bits)

    Serial.print("Channel ");          // Imprime a string "Channel " no monitor serial
    Serial.print(x);                   // Imprime o número do canal no monitor serial
    Serial.print(": ");                // Imprime ": " no monitor serial
    Serial.print(read_value);          // Imprime o valor lido do ADC no monitor serial
    Serial.print(" (");                // Imprime " (" no monitor serial
    Serial.print(voltage, 0);          // Imprime a voltagem calculada (sem casas decimais) no monitor serial
    Serial.print(" mV)");              // Imprime " mV)" no monitor serial

    if (x == 0) {
      Serial.print(" ");               // Imprime um espaço no monitor serial
      Serial.print(voltage * 0.0029 - 3.3191);  // Converte a voltagem em mV para corrente em mA (equação específica)
      Serial.println(" mA)");          // Imprime " mA)" e pula para a próxima linha no monitor serial
    } else {
      Serial.println("");              // Pula para a próxima linha no monitor serial
    }
  }

  Serial.println();                    // Pula para a próxima linha no monitor serial (linha em branco)
  delay(500);                          // Aguarda 500 milissegundos antes de repetir o loop
}

A biblioteca utilizada no código (ADS7828.h) está disponível para download neste link. Para incluí-la na IDE do Arduino, primeiro baixe o repositório completo, extraia o conteúdo do ZIP e compacte em um arquivo .zip a pasta ADS7828. Depois vá em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .zip.



No exemplo estamos realizando a leitura das duas entradas e exibindo os resultados no monitor serial. na figura a seguir podemos ver o resultado obtido.



No canal 0 estamos lendo corrente, enquanto no canal 1 estamos lendo tensão. No monitor serial, exibimos para o canal 0, respectivamente, a leitura do conversor A/D, a tensão medida e a corrente. Para o canal 1, exibimos apenas a leitura do A/D e a tensão.

 

Para converter a leitura do conversor A/D em tensão, multiplicamos o valor por 10 (tensão de referência do A/D) e depois dividimos por 4095 (valor máximo do A/D). Esse cálculo foi utilizado nos dois canais. Para converter em corrente, realizamos a calibração da entrada para encontrar a equação que relaciona a tensão medida com a corrente. Na imagem a seguir, podemos ver o gráfico e a equação obtidos.



Neste blog, vimos como utilizar o módulo analógico no PLC 32. Esse módulo permite que o PLC 32 utilize entradas analógicas com isolamento elétrico. Se você deseja ver mais detalhes sobre o PLC 32, acessar o seu manual ou adquirir uma unidade, clique neste link.


Posts recentes

Ver tudo

Comments


ícone do whatsapp

Fale com um
especialista:

bottom of page