Usando um ACS712 para exibir corrente em um LCD1602 ou LCD2004 com I2C

Usando um ACS712 para exibir corrente em um LCD1602 ou LCD2004 com I2C

Neste tutorial, vamos aprender a usar o sensor de corrente Allegro ACS712 para medir tanto corrente alternada (AC) quanto contínua (DC) e exibir as leituras em um LCD1602 ou LCD2004 via I2C. Este projeto é particularmente útil para monitorar a corrente em diversas aplicações, fornecendo uma exibição visual dos dados de corrente em tempo real. Ao final, você terá um sistema funcional que pode mostrar com precisão as leituras de corrente em um LCD.

LCD1602-I2C display module with 4 wires

Para esclarecimentos sobre a fiação e o código, certifique-se de verificar o vídeo nos timestamps especificados (no vídeo em 00:00).

Hardware explicado

O componente principal deste projeto é o sensor de corrente ACS712, que pode medir níveis de corrente de até 30A. Ele funciona utilizando o efeito Hall para converter a corrente que passa por ele em uma saída de tensão proporcional. Essa saída de tensão pode ser lida pelo Arduino para calcular o nível de corrente. O sensor tem três pinos para conexão: VCC para alimentação, GND para terra e OUT para o sinal de tensão.

O display LCD1602 ou LCD2004 conecta-se via I2C, o que permite uma fiação e controle mais simples usando apenas dois pinos de dados (SDA e SCL), além de alimentação e terra. Isso facilita exibir leituras atuais sem sobrecarregar a fiação com múltiplas conexões.

Detalhes da ficha técnica

FabricanteAllegro Microsystems
Número da peçaACS712ELCTR-30A-T
Tensão lógica/E/S4.5-5.5 V
Tensão de alimentação5 V
Corrente de saída (por canal)30 A
Orientação sobre a frequência PWMNão aplicável
Limiares de lógica de entrada0.5 V (saída em repouso)
Queda de tensão / RDS(on)/ saturação1.2 mΩ
Limites térmicos150 °C máx.
PacoteTO-220

  • Garanta a dissipação de calor adequada para correntes acima de 20A.
  • Use a bitola adequada do fio (12 AWG para 30A) para evitar superaquecimento.
  • Conecte VCC ao 5V e GND ao terra para o funcionamento adequado.
  • Certifique-se de que o pino OUT esteja conectado a um pino de entrada analógica no Arduino (por exemplo, A0).
  • Esteja ciente das diferenças de sensibilidade entre os diferentes modelos ACS712.
  • Use capacitores para desacoplamento conforme especificado na folha de dados.

Instruções de Fiação

Arduino wiring for Allegro ACS712 current sensor with LCD

Para ligar o sensor de corrente ACS712 ao Arduino e ao LCD, comece conectando o pino VCC do ACS712 ao pino 5V do Arduino. Em seguida, conecte o pino GND do ACS712 a um pino de terra no Arduino. O pino OUT do ACS712 deve ser conectado ao pino analógicoA0no Arduino, onde o sinal de tensão será lido.

Para o LCD1602 ou LCD2004, conecte o pino VCC ao pino 5V e o pino GND ao terra. O pino SDA do LCD deve ser conectado ao pino SDA do Arduino (geralmenteA4em um UNO), e o pino SCL deve ser conectado ao pino SCL no Arduino (geralmenteA5em um UNO). Certifique-se de que todas as conexões estejam seguras para garantir o funcionamento adequado.

Exemplos de Código e Guia Passo a Passo

No código, definimos o pino de entrada analógica para ler a saída do sensor com#define VIN A0. Isso nos permite referenciar facilmente o pino ao qual o sensor está conectado ao longo de todo o programa.

#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC   = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.

Em seguida, definimos a sensibilidade com base no modelo do ACS712 que estamos usando. Os valores de sensibilidade são armazenados em um array, permitindo acesso fácil conforme a seleção do modelo.

const int model = 2; // enter the model number (0, 1, or 2 for 5A, 20A, or 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // sensitivity values for each model

Nosetup()Na função, inicializamos o monitor serial e o display LCD. Isso nos permite visualizar as leituras atuais tanto no LCD quanto através do monitor serial para depuração.

void setup() {
    Serial.begin(9600); // initialize serial monitor
    lcd.begin(); // initialize the LCD
    lcd.backlight(); // turn on the backlight
    lcd.print("Robojax ACS712"); // display initial text
    delay(2000); // wait for 2 seconds
}

Oloop()A função lê a tensão do sensor, calcula a corrente com base na sensibilidade e exibe os resultados de acordo. Se a corrente exceder um limite de corte especificado, ela exibe o valor; caso contrário, indica que não há corrente detectada.

Demonstração / O que Esperar

Ao ligar o circuito, o LCD deve exibir "Robojax ACS712", seguido de "Corrente: " juntamente com o valor medido da corrente em amperes. Se a corrente estiver abaixo do limite de corte, o display mostrará "Sem corrente." Tenha cautela ao testar com correntes elevadas, pois o sensor pode aquecer (no vídeo em 12:00).

Para testar a configuração, aumente gradualmente a corrente através do ACS712 e observe as alterações no LCD e no monitor serial. Certifique-se de que a corrente não exceda os limites especificados do sensor para evitar danos.

Imagens

Sensor de corrente DC/AC Allegro ACS712 com LCD1602/LCD2004 I2C com código Arduino
Sensor de corrente DC/AC Allegro ACS712 com LCD1602/LCD2004 I2C com código Arduino
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
ACS712_in_series_with_load
ACS712_in_series_with_load
allegro_ACS712_module-1
allegro_ACS712_module-1
allegro_ACS712_module-2
allegro_ACS712_module-2
allegro_ACS712_module-4
allegro_ACS712_module-4
allegro_ACS712_module-0
allegro_ACS712_module-0
Arduino wiring for Allegro ACS712 current sensor with LCD
Arduino wiring for Allegro ACS712 current sensor with LCD
131-Allegro ACS712 DC/AC current sensor with LCD1602/LCD2004 I2C and Arduino code
Idioma: C++
Copiado!

Coisas que você pode precisar

Arquivos📁

Bibliotecas do Arduino (zip)

Folha de dados (pdf)

Arquivo Fritzing