Allegro ACS758 Sensor de Corrente com LCD e Proteção contra Sobrecorrente para Arduino

Allegro ACS758 Sensor de Corrente com LCD e Proteção contra Sobrecorrente para Arduino

Neste tutorial, aprenderemos como usar o sensor de corrente Allegro ACS758 com um LCD para exibir leituras de corrente e implementar proteção contra sobrecorrente. Esta configuração nos permite monitorar a corrente e desconectar a carga automaticamente se ela exceder um limite predefinido. O projeto combina componentes de hardware e software para criar um sistema funcional de monitoramento de corrente.

Seguindo este guia, você será capaz de conectar os componentes corretamente e entender a lógica de programação por trás do código. Para uma explicação mais visual, não deixe de conferir o vídeo associado (no vídeo aos 00:00).

Hardware explicado

Os componentes-chave deste projeto incluem o sensor de corrente Allegro ACS758, um display LCD1602 com interface I2C e uma placa Arduino. O sensor ACS758 mede a corrente que passa por ele e fornece uma tensão proporcional à corrente. O LCD1602 exibe as leituras de corrente e mensagens de status, enquanto o Arduino processa os dados e controla o relé para proteção contra sobrecorrente.

O sensor ACS758 opera com base em um princípio chamado sensoriamento por efeito Hall, que lhe permite medir a corrente sem contato elétrico direto. A tensão de saída varia conforme a quantidade de corrente que o atravessa, proporcionando uma maneira segura e eficiente de monitorar cargas elétricas.

Detalhes da ficha técnica

Fabricante Allegro MicroSystems
Número da peça ACS758
Tensão lógica/IO 3.3V / 5V
Tensão de alimentação 5V
Corrente de saída (por canal) 200 A máx.
Corrente de pico (por canal) 200A
Orientações sobre a frequência PWM Não aplicável
Limiares lógicos de entrada 0,5 x VCC (bidirecional)
Queda de tensão / RDS(ligado)/ saturação Não aplicável
Limites térmicos 150°C
Pacote Montagem em placa de circuito impresso
Notas / variantes Vários modelos disponíveis para diferentes faixas de corrente

  • Assegure a dissipação de calor adequada se operar próximo aos limites máximos.
  • Use capacitores de desacoplamento para estabilizar a tensão da fonte de alimentação.
  • Verifique se o relé utilizado pode suportar a corrente máxima de carga.
  • Tenha cuidado com a fiação para evitar curtos-circuitos.
  • Erros comuns incluem entradas flutuantes; garanta que todas as conexões estejam firmes.
  • Monitore o superaquecimento do sensor durante o uso prolongado.

Componentes necessários

  • Sensor de corrente ACS758
  • relé 12 V 100 A
  • LCD1602 com I2C (4 fios)
  • Transistor 2N2222 ou 2N3904
  • 1k ohm 1/4W ou qualquer resistor de potência
  • Fonte de alimentação para relé
  • Fonte de alimentação para sua carga
  • Protoboard
  • Fios jumper

Instruções de Fiação

Arduino wiring for ACS758 current sensor with LCD and protection relay
Arduino wiring for ACS758 current sensor with LCD and protection relay

Para fazer a ligação do sensor de corrente Allegro ACS758 e do display LCD1602, comece conectando o sensor ACS758. Conecte oVCCpino do sensor ao pino 5V do Arduino. OGNDO pino deve ser conectado a um pino de terra no Arduino. OSO pino (sinal) do sensor deve ser conectado ao pino de entrada analógicaA0no Arduino.

Em seguida, para o LCD1602, conecte oVCCpino para o pino de 5V no Arduino e oGNDprender ao chão. OSDAo pino do LCD deve ser conectado aoA4pino (SDA) no Arduino, enquanto oSCLpino deve conectar-se aoA5pino (SCL) no Arduino. Finalmente, conecte um módulo de relé ao pino digital2para controlar a carga com base nas leituras de corrente.

Exemplos de Código e Guia Passo a Passo

No código do Arduino, começamos definindo identificadores-chave comoVIN, que representa o pino de entrada analógica conectado ao sensor ACS758. OrelayPinestá configurado para o controle do relé, enquantomaxCurrentdefine o limiar de proteção contra sobrecorrente

#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const int relayPin = 2; // set a digital pin for relay
const float maxCurrent = 15.00; // set maximum Current

Osetup()A função inicializa o LCD e configura o pino do relé como saída. Ela também imprime uma mensagem de boas-vindas no LCD, informando o usuário sobre o sensor de corrente que está sendo usado.

void setup() {
    pinMode(relayPin, OUTPUT); // set relayPin as output
    Serial.begin(9600); // initialize serial monitor
    lcd.begin(); // initialize the LCD
    lcd.backlight(); // Turn on the blacklight
    lcd.print("Robojax");
}

Noloop()Nesta função, lemos continuamente a tensão do sensor e calculamos a corrente. Se a corrente exceder o limite máximo, o relé é ativado para desconectar a carga. Essa lógica garante que o sistema se proteja de condições de sobrecorrente.

void loop() {
  float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
  float current = voltage / FACTOR; // Calculate current
  if (current >= minCurrent) {
    if (current <= maxCurrent) {
      digitalWrite(relayPin, LOW); // turn the relay OFF to allow current
    } else {
      digitalWrite(relayPin, HIGH); // turn the relay ON to disconnect current
    }
  }
}

Demonstração / O que esperar

Depois que tudo estiver conectado e o código for carregado, o LCD exibirá as leituras de corrente. Se a corrente exceder o definidomaxCurrent, o relé será ativado, desconectando a carga. Você pode testar isso aumentando gradualmente a corrente da carga e observando as alterações no LCD e no monitor serial. Certifique-se de evitar conexões com polaridade invertida, pois isso pode danificar os componentes (no vídeo em 10:15).

Imagens

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
ACS758-sensor-0
ACS758-sensor-0
ACS758-sensor-1
ACS758-sensor-1
ACS758-sensor-3
ACS758-sensor-3
ACS758-sensor-4
ACS758-sensor-4
Arduino wiring for ACS758 current sensor with LCD and protection relay
Arduino wiring for ACS758 current sensor with LCD and protection relay
111-Arduino Code for Allegro ACS758 Current Sensor with LCD160
Idioma: C++
Copiado!

Coisas que você pode precisar

Arquivos📁

Folha de dados (pdf)