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.


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
| Fabricante | Allegro Microsystems |
|---|---|
| Número da peça | ACS712ELCTR-30A-T |
| Tensão lógica/E/S | 4.5-5.5 V |
| Tensão de alimentação | 5 V |
| Corrente de saída (por canal) | 30 A |
| Orientação sobre a frequência PWM | Não aplicável |
| Limiares de lógica de entrada | 0.5 V (saída em repouso) |
| Queda de tensão / RDS(on)/ saturação | 1.2 mΩ |
| Limites térmicos | 150 °C máx. |
| Pacote | TO-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

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
Coisas que você pode precisar
-
Amazonas
-
AmazonasCompre o LCD1602-I2C na Amazonamzn.to
-
eBayCompre LCD1602-I2C no eBayebay.us
-
AliExpressCompre 10 peças de LCD1602-I2C no AliExpress.s.click.aliexpress.com
Recursos e referências
-
Externo
Arquivos📁
Bibliotecas do Arduino (zip)
-
Biblioteca LCD1602 para Arduino da Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Folha de dados (pdf)
-
Datasheet do Sensor de Corrente AC/DC Allegro ACS712 4A, 20A, 30A
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Arquivo Fritzing
-
Módulo LCD LCD1602-I2C com 4 fios
LCD1602-I2C.fzpz0.01 MB -
Sensor de Corrente ACS712 Allegre
Allegreo ACS712 Current Sensor.fzpz0.03 MB