Circuitos integrados

Monitorando a Corrente de Motores DC com Arduino e o Sensor ACS712: Guia Completo com Gráficos em Tempo Real

Eletrogate 5 de fevereiro de 2025

Introdução

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!


SOBRE O SENSOR ACS712 - Características

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


COMO INDENTIFICAR O MODELO DO SENSOR ACS712

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.

Blog-Eletrogate-ACS712
Indentificando o sensor ACS712

Na imagem acima podemos ver 2 modelos de sensor, o modelo ACS712-20A ou ACS712-30A.


Materiais

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

  • Sensor ACS712 (nesse tutorial vou utilizar o modelo 30A)
  • Arduino UNO
  • Motor DC de baixa potência
  • Protoboard (opcional)
  • Fonte de alimentação DC (para o meu motor irei utilizar uma fonte de 3V – pilhas)
  • Jumpers


Montagem

Para monitorar a corrente de um motor DC utilizando o sensor ACS712 e o Arduino, a conexão é bem simples. Siga os passos abaixo:

Passos para Conexão:

  1. Conexões do Motor DC e do ACS712:

    • VCC (pino de alimentação do ACS712): Conecte ao 5V do Arduino.
    • GND (pino de terra do ACS712): Conecte ao GND do Arduino.
    • OUT (pino de saída analógica do ACS712): Conecte ao pino A0 do Arduino para leitura do sinal analógico.

  2. Conexão do Motor à Linha de Corrente:

    • O motor DC deve estar conectado em série com a fonte de alimentação passando pelo sensor ACS712. Isso significa que você precisa ligar um dos terminais do motor a um dos terminais de corrente do sensor ACS712 (marcados como IP+ e IP-), enquanto o outro terminal do motor se conecta diretamente à fonte.
    • Por exemplo:

      • Conecte o terminal IP+ do ACS712 à saída positiva da fonte de alimentação.
      • Conecte o terminal IP- à entrada positiva do motor.
      • O outro terminal do motor vai diretamente ao GND da fonte de alimentação.

  3. Fonte de Alimentação do Motor:

    • A alimentação do motor DC deve ser conectada separadamente, utilizando uma fonte externa que forneça a tensão e a corrente necessárias para o motor. Isso é importante, pois o Arduino não pode fornecer energia suficiente para motores diretamente.
    • Siga o diagrama abaixo:

Blog-Eletrogate-Circuito-ACS712
Diagrama da ligação entre o Arduino e o sensor ACS712.


Código

// 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
}

Teste

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.


Considerações finais

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.


Referências

Descrição detalhada com mais informações sobre o sensor:

https://github.com/RobTillaart/ACS712

https://docs.arduino.cc/libraries/acs712


Sobre o autor


Elian Vitor

Técnico em Automação Industrial e Estudante de Engenharia Elétrica apaixonado por eletrônica.
Gosto de desenvolver projetos no Arduino e ESP-32/ESP8266 voltados a robótica e automação residencial


Eletrogate

5 de fevereiro de 2025

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.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!