Arduino UNO R4 - Sensor de Corrente ACS712
Neste guia, vamos aprender como usar o sensor de corrente ACS712 de 30A com o Arduino UNO R4 WiFi ou Minima para descobrir quantos amperes um motor, uma lâmpada ou uma fita LED realmente puxa. Um sensor de tensão diz "quão forte" é a energia. Um sensor de corrente diz "quanta" está passando. Em detalhes, vamos aprender:
- O que o módulo ACS712 faz, e para que servem seus pinos e o borne de parafuso.
- Como colocar o ACS712 em série com uma carga de 12V e conectá-lo ao Arduino UNO R4.
- Como escrever um programa para o Arduino UNO R4 que encontra o ponto zero sozinho e imprime a corrente DC em amperes.
- Como usar o ADC de 14 bits do Arduino UNO R4 para obter passos mais finos.
- Como medir corrente AC como um valor RMS.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de Corrente ACS712
O ACS712 é um chip da Allegro que mede a corrente usando o efeito Hall. Dentro dele, a corrente passa por um caminho grosso de cobre. Essa corrente cria um pequeno campo magnético, e um sensor Hall ao lado do cobre transforma esse campo em uma tensão. O caminho de cobre tem apenas cerca de 1.2 mΩ de resistência, então quase não altera o seu circuito. Além disso, o lado da carga é isolado do lado do Arduino (até 2.1 kV RMS), então o circuito medido não tem ligação elétrica com a sua placa.
O chip vem em três versões. Elas parecem iguais, então confira o texto no chip (por exemplo ACS712ELCTR-30A-T):
| Versão | Faixa | Sensibilidade |
|---|---|---|
| ACS712 5A | -5A a +5A | 185 mV por ampere |
| ACS712 20A | -20A a +20A | 100 mV por ampere |
| ACS712 30A | -30A a +30A | 66 mV por ampere |
Este guia usa a versão de 30A. Suas principais especificações:
| ACS712 30A | |
|---|---|
| Tensão de alimentação | 5V (4.5V a 5.5V) |
| Corrente medida | DC e AC, -30A a +30A |
| Saída em 0A | cerca de 2.5V (metade da alimentação) |
| Saída em +30A / -30A | cerca de 4.48V / 0.52V |
| Sensibilidade | 66 mV por ampere |
| Largura de banda | 80 kHz |
| Erro total de saída | cerca de ±1.5% a 25°C |
| Isolamento | 2.1 kV RMS |
A saída é "ratiométrica". Isso significa que ela acompanha a alimentação real de 5V. Se a alimentação é 4.9V, o ponto zero é cerca de 2.45V, e não 2.5V. É por isso que o código mede o ponto zero na inicialização, em vez de confiar no número 2.5V.

O módulo tem um conector de 3 pinos em um dos lados:
- Pino VCC: conecte ao 5V do Arduino UNO R4.
- Pino GND: conecte ao GND (0V).
- Pino OUT: tensão de saída analógica, conecte a um pino analógico do Arduino UNO R4 (A0 neste guia).
No outro lado, há um borne de parafuso de 2 pinos (IP+ e IP-, às vezes sem identificação). Ele vai em série com a carga: corte um fio de alimentação da carga e coloque o borne no meio, para que toda a corrente da carga passe pelo módulo. Quando a corrente vai de IP+ para IP-, a leitura é positiva. Se a sua leitura for negativa, é só trocar os dois fios. Um pequeno LED no módulo mostra que ele está alimentado.
Quão boa é a versão de 30A para correntes pequenas? A versão de 30A é feita para correntes grandes, então é grosseira para as pequenas. Com a leitura normal de 10 bits (0 a 1023), um passo é cerca de 4.9 mV, que é cerca de 74 mA. O Arduino UNO R4 consegue ler seus pinos analógicos com 14 bits (0 a 16383), então um passo é só cerca de 0.3 mV. Isso não remove o ruído do próprio sensor: em 0A, o valor ainda varia cerca de ±50 a 100 mA. Mas, junto com a média, dá um número calmo e estável. O módulo combina com cargas de cerca de 0.5A ou mais, como motores, lâmpadas, fitas LED, aquecedores e carregadores.
Como a Tensão Vira Amperes
Em 0A, o pino OUT fica na tensão zero (cerca de 2.5V). Cada ampere o move em 0.066V, para cima em um sentido e para baixo no outro. Então a fórmula é:
Por exemplo, se a tensão zero é 2.493V e o Arduino UNO R4 lê 2.559V, a corrente é (2.559 - 2.493) / 0.066 = 1.00A.
Diagrama de Ligação
O Arduino UNO R4 trabalha com 5V nos pinos analógicos, igual à saída do ACS712. Então o pino OUT vai direto ao A0, e nenhum divisor de tensão é necessário. O lado de 12V é separado: o adaptador de 12V alimenta o dispositivo DC de 12V (como um motor DC, uma fita LED ou uma lâmpada) através do borne de parafuso do módulo.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
| Módulo ACS712 | Arduino UNO R4 |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | A0 |
| Lado da carga | Conectar a |
|---|---|
| Borne de parafuso IP+ | positivo (+) do conector de alimentação DC de 12V |
| Borne de parafuso IP- | fio positivo (+) do dispositivo DC |
| Fio negativo (-) do dispositivo DC | negativo (-) do conector de alimentação DC de 12V |
※ Nota:
Segurança em primeiro lugar. A rede elétrica AC (110V/220V) é perigosa e pode matar. Se você é iniciante, pratique apenas com uma carga DC de baixa tensão, como o dispositivo DC de 12V deste guia. Quando o módulo é usado em um circuito da rede elétrica, o borne de parafuso e o lado de cobre carregam a tensão total da rede. Nunca toque no borne nem nos fios enquanto o circuito estiver energizado.
Como Programar o Sensor de Corrente ACS712
- Mude os pinos analógicos para leituras de 14 bits (valores de 0 a 16383):
- Transforme uma leitura bruta em volts:
- Encontre o ponto zero uma vez no setup(), enquanto a carga está desligada. Leia o sensor 1000 vezes e calcule a média:
- No loop(), faça a média de 200 leituras para acalmar o ruído e depois transforme volts em amperes:
Código Arduino UNO R4 - Corrente DC do ACS712
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
- Ligue os componentes conforme o diagrama fornecido.
- Mantenha o adaptador de 12V desconectado por enquanto, para que nenhuma corrente passe pelo sensor.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Copie o código acima e cole no Arduino IDE.
- Abra o Serial Monitor.
- Clique no botão Upload para fazer o upload do código para o Arduino UNO R4. A placa mede o ponto zero no primeiro segundo depois que inicia.
- Agora conecte o adaptador de 12V. O dispositivo DC liga.
- Confira os resultados no Serial Monitor.
As primeiras linhas mostram o ruído em repouso: alguns centésimos de ampere, para cima e para baixo em torno de 0. Isso é normal para a versão de 30A. Aqui, o dispositivo DC é um motor DC de 12V. Quando o motor parte, ele puxa um breve pico de corrente e depois se estabiliza em cerca de 0.8A. Se você frear o motor segurando o eixo de leve, a corrente sobe.
※ Nota:
Se a corrente marcar cerca de 0.5A ou mais com a carga desligada, o ponto zero foi medido enquanto havia corrente passando. Desconecte o adaptador de 12V e pressione o botão RESET do Arduino UNO R4 para medir de novo.
Medindo Corrente AC
Com AC, a corrente muda de direção muitas vezes por segundo (50 ou 60 vezes, dependendo do seu país). Então o pino OUT oscila acima e abaixo do ponto zero o tempo todo. Uma única leitura não significa nada, e uma média simples fica perto de 0. Em vez disso, usamos o valor RMS, que é o número que um medidor AC comum mostra:
- Amostre o sensor por 200 ms. Isso cobre 10 ciclos a 50 Hz ou 12 ciclos a 60 Hz.
- Para cada amostra, calcule a distância até a tensão zero e eleve ao quadrado.
- Calcule a média dos quadrados e depois a raiz quadrada. Divida por 0.066 para obter amperes.
※ Nota:
De novo: a tensão da rede elétrica é perigosa. Só meça uma carga da rede elétrica se você souber trabalhar com ela com segurança, mantenha o circuito desligado da tomada enquanto o liga, e nunca toque no borne de parafuso enquanto a energia estiver ligada.
A ligação do lado do Arduino UNO R4 continua a mesma. Só a carga muda: o borne de parafuso vai em série com um fio da carga AC.
Código Arduino UNO R4 - Corrente AC do ACS712
Passos Rápidos
- Mantenha a carga AC desligada.
- Copie o código acima e cole no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino UNO R4.
- Espere pela linha "Zero point" no Serial Monitor e depois ligue a carga AC (por exemplo, um pequeno aquecedor).
Com a carga desligada, o valor RMS não é exatamente 0. O ruído sempre gera um pequeno número positivo depois de elevado ao quadrado, então um valor abaixo de cerca de 0.1A significa "sem corrente".