Medição de corrente usando o sensor Allegro ACS758 com display OLED SSD1306 para Arduino

Medição de corrente usando o sensor Allegro ACS758 com display OLED SSD1306 para Arduino

Este tutorial vai guiá-lo pelo processo de medir corrente usando o sensor de corrente Allegro ACS758 e exibir os resultados em um display OLED SSD1306. O projeto envolverá a leitura da corrente que flui por um circuito e a representação visual desses dados na tela OLED, permitindo um monitoramento fácil. Você aprenderá a conectar os componentes, escrever o código e entender como tudo funciona em conjunto.

SSD1306 OLED display

Se você quer entender o código e seu funcionamento, não deixe de conferir o vídeo para explicações mais detalhadas (no vídeo em 02:45).

Hardware Explicado

Os principais componentes deste projeto incluem o sensor de corrente Allegro ACS758 e o display OLED SSD1306. O ACS758 é um sensor de corrente por efeito Hall que mede a corrente que flui através de um condutor com alta precisão e fornece uma tensão de saída proporcional a essa corrente. Ele pode suportar correntes de até 200A e opera tanto em 3.3V quanto em 5V.

O display OLED SSD1306 é compacto, de baixo consumo de energia e se comunica via I2C. É comumente usado em projetos com Arduino devido à sua facilidade de integração e à capacidade de exibir gráficos e texto com clareza. Juntos, esses componentes criam uma ferramenta poderosa para monitorar a corrente em diversas aplicações.

Detalhes da ficha técnica

FabricanteAllegro Microsystems
Número da peçaACS758ECB-200U
Tensão lógica/E/S3.3 V / 5 V
Tensão de alimentação5 V
Corrente de saída (por canal)200 A
Corrente de pico (por canal)200 A
Orientação sobre a frequência PWMNão aplicável
Limiares lógicos de entrada0.3 V (baixo), 2.7 V (alto)
Queda de tensão / RDS(on)/ saturação0,05 V
Limites térmicos-40 a 125 °C
PacoteSOIC-8
Notas / variantesModelos bidirecionais e unidirecionais disponíveis

  • Garanta a orientação correta do sensor ACS758 para leituras precisas.
  • Use um dissipador de calor se estiver operando próximo aos limites máximos de corrente para evitar o superaquecimento.
  • Desacople a alimentação do sensor para operação estável.
  • Verifique as conexões de fiação para evitar entradas flutuantes que possam causar leituras incorretas.
  • Calibre a saída do sensor para garantir medições de corrente precisas.

Instruções de fiação

Arduino wriing for Allegro ACS758 current sensor with OLED SSD1306 128x32 and 128x64
Arduino wriing for Allegro ACS758 current sensor with OLED SSD1306 128x32 and 128x64

Para ligar o sensor de corrente Allegro ACS758 e o display OLED SSD1306, comece conectando a alimentação. Conecte o pino VCC do ACS758 à saída 5V do seu Arduino e conecte o pino GND ao terra (GND) do Arduino. O pino de sinal de saída (Vout) do ACS758 deve ser conectado ao pino de entrada analógica A0 do Arduino.

Em seguida, para o display OLED SSD1306, conecte o pino VCC à saída de 5V do Arduino e o pino GND ao terra. Conecte o pino SDA do OLED ao pino SDA do Arduino (A4 na maioria das placas Arduino) e o pino SCL do OLED ao pino SCL (A5 na maioria das placas Arduino). Certifique-se de que todas as conexões estejam seguras para um funcionamento confiável.

Exemplos de Código e Passo a Passo

#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage 5V or 3.3V
const int model = 2; // enter the model (see below)

No código, a variávelVINestá atribuído ao pino analógico A0, que lerá a tensão do sensor ACS758. OVCCvariável define a tensão de alimentação, e amodelA variável define qual modelo ACS758 está sendo usado, o que afeta os cálculos de sensibilidade e de tensão de saída.

void loop() {
  float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
  float current = voltage / FACTOR; // Calculate the current based on voltage
}

Dentro doloop()função, o código lê a tensão bruta do sensor usandoanalogRead(VIN)e o converte em um valor de corrente com base na sensibilidade definida. Isso permite o monitoramento em tempo real da corrente que flui pelo circuito.

if(abs(voltage) > cutOff) {
    display.clearDisplay();
    robojaxText("Current:", 0, 22, 2, false);
}

Esta instrução condicional verifica se o valor absoluto da tensão é maior do que ocutOfflimite. Se verdadeiro, limpa o visor e atualiza o OLED com a leitura atual de corrente. Isso garante que apenas valores de corrente significativos sejam exibidos, evitando sobrecarga de informações no visor.

Demonstração / O que esperar

Quando você executar o programa, o display OLED mostrará a corrente sendo medida em tempo real. Se não houver corrente fluindo, o display indicará "Sem Corrente". Certifique-se de que as conexões estejam corretas para evitar problemas como polaridade invertida, que podem levar a leituras imprecisas (no vídeo em 05:30).

Imagens

SSD1306 OLED displaying text
SSD1306 OLED displaying text
SSD1306 OLED display
SSD1306 OLED display
ACS758-sensor-6-pins
ACS758-sensor-6-pins
ACS758-sensor-0
ACS758-sensor-0
ACS758-sensor-1
ACS758-sensor-1
ACS758-sensor-4
ACS758-sensor-4
Arduino wriing for Allegro ACS758 current sensor with OLED SSD1306 128x32 and 128x64
Arduino wriing for Allegro ACS758 current sensor with OLED SSD1306 128x32 and 128x64
110-Allegro ACS758 current sensor with SSD1306 OLED display for Arduino
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Ainda não há recursos.

Arquivos📁

Bibliotecas do Arduino (zip)

Arquivo Fritzing

Manual do Usuário