O sensor ACS712 é uma ferramenta essencial para quem precisa monitorar correntes elétricas em projetos de eletrônica. Com a capacidade de medir correntes de até 30A (dependendo do modelo), ele converte essa leitura em um sinal analógico que pode ser facilmente interpretado por um microcontrolador, como o Arduino. Esse tipo de sensor é amplamente utilizado em aplicações que envolvem motores DC, fontes de alimentação e monitoramento de sistemas de energia, oferecendo uma maneira eficaz e econômica de obter informações precisas sobre o consumo de corrente em tempo real.
Neste tutorial, vamos mostrar como utilizar o sensor ACS712 para medir a corrente de um motor DC, além de enviar esses dados para o monitor serial e visualizá-los em um gráfico de tempo real no Serial Plotter do Arduino. Além disso, vamos aprimorar a precisão dos dados implementando uma técnica de suavização com média móvel, o que garantirá uma leitura mais estável e confiável, eliminando ruídos que podem ocorrer nas medições.
Ao final deste guia, você terá um sistema completo capaz de medir e visualizar a corrente elétrica em tempo real, pronto para ser aplicado em uma ampla variedade de projetos de monitoramento de corrente. Vamos mergulhar no passo a passo para que você possa colocar esse sensor para trabalhar de forma eficiente em seus projetos de eletrônica!
O ACS712 é um sensor de corrente baseado no efeito Hall, amplamente utilizado para medir correntes AC e DC de maneira precisa. Este sensor é conhecido por sua capacidade de isolar eletricamente o circuito de medição da linha de corrente, o que o torna uma escolha segura e eficiente para monitoramento em varias aplicações, como sistemas de automação, controle de motores, fontes de alimentação, e até mesmo em sistemas de energia elétrica.
INFORMAÇÕES TÉCNICAS:
| MODELO DO SENSOR | FAIXA DE CORRENTE | SENSIBILIDADE (mV/A) |
| ACS712-05A | -5A a +5A | 185 mV/A |
| ACS712-20A | -20A a +20A | 100 mV/A |
| ACS712-30A | -30A a +30A | 66 mV/A |
| ESPECIFICAÇÕES: | VALOR: |
| Tensão de Operação | 5V |
| Tempo de Resposta | Menos de 5 µs |
| Resistência Interna | ~1.2 mΩ |
| Faixa de Temperatura | -40°C a +85°C |
| Isolamento Elétrico | Até 2.1 kV RMS |
| Saída de Tensão Sem Corrente | 2.5V |
Para identificar o modelo do sensor ACS712 é simples e pode ser feito diretamente no corpo do chip. A informação está gravada na superfície do componente, logo acima dos pinos de conexão. O código impresso segue o formato ACS712-05A, ACS712-20A ou ACS712-30A, indicando a faixa de corrente que o sensor é capaz de medir. Confira a imagem abaixo para localizar facilmente o código e determinar o modelo do seu sensor.

Na imagem acima podemos ver 2 modelos de sensor, o modelo ACS712-20A ou ACS712-30A.
Agora que temos uma boa base sobre o sensor ACS712, vamos criar uma aplicação para o mesmo, para isso vamos precisar dos seguintes materiais
Para monitorar a corrente de um motor DC utilizando o sensor ACS712 e o Arduino, a conexão é bem simples. Siga os passos abaixo:

// Configuração de pinos e constantes
const int pinoSensor = A0; // Pino analógico conectado ao pino OUT do ACS712
float tensao = 0; // Variável para armazenar a leitura de tensão
float corrente = 0; // Variável para armazenar a corrente calculada
const float deslocamento = 2.5; // Ajuste o valor do offset conforme medido
const float sensibilidade = 0.066; // Ajustar sensibilidade do ACS712 de acordo o o seu sensor - 30A (66mV por Ampere), 5A (185mV por Ampere) e 20A (100mV por Ampere)
// Variáveis para média móvel
const int numLeituras = 10; // Número de leituras para calcular a média
float leituras[numLeituras]; // Array para armazenar as leituras
int indiceLeitura = 0; // Índice atual de leitura
float somaTotal = 0; // Soma total das leituras
float media = 0; // Média das leituras
void setup() {
Serial.begin(9600);
// Inicializa todas as leituras com zero
for (int leituraAtual = 0; leituraAtual < numLeituras; leituraAtual++) {
leituras[leituraAtual] = 0;
}
Serial.println("Iniciando monitoramento da corrente do motor DC:");
}
void loop() {
// Leitura do sensor (tensão)
int valorSensor = analogRead(pinoSensor); // Leitura do pino analógico
tensao = valorSensor * (5.0 / 1023.0); // Converte o valor lido para tensão (0-5V)
// Cálculo da corrente (A = (Vout - Offset) / Sensibilidade)
corrente = (tensao - deslocamento) / sensibilidade;
// Corrige valores negativos
if (corrente < 0) {
corrente = 0;
}
// Média móvel das leituras
somaTotal = somaTotal - leituras[indiceLeitura];
leituras[indiceLeitura] = corrente;
somaTotal = somaTotal + leituras[indiceLeitura];
indiceLeitura = indiceLeitura + 1;
if (indiceLeitura >= numLeituras) {
indiceLeitura = 0;
}
media = somaTotal / numLeituras;
// Exibe a corrente bruta e a corrente suavizada no Serial Plotter
Serial.print(corrente); // Corrente bruta
Serial.print("\t"); // Separador para exibir múltiplos dados no gráfico
Serial.println(media); // Corrente suavizada
// Intervalo de leitura
delay(100); // Aumentar ou diminuir conforme desejado
}O próximo passo é rodar o código para monitorar a corrente elétrica em tempo real. Esse teste tem como objetivo verificar se o sensor está funcionando corretamente, medir o consumo de corrente do motor DC, e exibir esses valores no Monitor Serial e no Serial Plotter da IDE do Arduino.
O sensor ACS712, integrado ao Arduino, oferece uma maneira simples e eficaz de monitorar a corrente de motores DC em tempo real, tanto para correntes AC quanto DC. Com este tutorial, vimos como configurá-lo e utilizar técnicas como a média móvel para obter medições mais estáveis, exibindo os resultados no Monitor Serial e no Serial Plotter. Esse tipo de monitoramento é essencial para detectar variações de carga, proteger circuitos contra sobrecarga e otimizar o desempenho do motor. O ACS712 também se destaca pela segurança, isolando eletricamente o circuito de medição, tornando-se uma escolha segura para os seus projetos.
Descrição detalhada com mais informações sobre o sensor:
https://github.com/RobTillaart/ACS712
https://docs.arduino.cc/libraries/acs712
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!