ACS712 – Sensor de corrente AC/DC com Arduino

acs712
acs712

Estava precisando fazer uma pequena medição de maneira simplificada, só pra tirar uma dúvida, mas com o multimetro ficava meio desajeitado, então resolvi montar esse pequeno brinquedo usando o sensor de corrente por efeito hall ACS712 com Arduino. Esse post é só um mini-tutorial pra colocar o sensor a funcionar de forma sucinta; vulgo “receita de bolo”.

Confesso que não sei quanto à precisão do componente. Li no datasheet que é 66mV/A, mas não sei usar essa informação. O caso é que no Arduino UNO ou Leonardo, a resolução máxima de leitura analógica é 10 bits. O ESP8266, MSP432 e outros tem uma resolução mais alta, porém as duas citadas trabalham a 3.3V.

Características interessantes do ACS712




Olhando o datasheet, vi que a taxa de erro é de 1.5% – Um bocado alto, eu acho. Ele opera à 5V e tem 66mV/A de saída em modo de operação normal. A saída é proporcional à corrente AC ou DC. A saída é extremamente estável, a histerese é próxima a zero, é seguro e não depende de nenhum circuito de isolamento.

Corrente AC ou DC?

Ele pode ser utilizado tanto em corrente AC quanto DC. Se resolver utilizá-lo em AC, considere que será necessário fazer uma retificação do sinal, filtragem e coleta de uma pequena amostragem. Depois, somado o número de amostragens coletadas em um intervalo de tempo X, divide-se pelo número de amostras e depois aplica-se os cálculo dispostos mais adiante.

Proporções e cálculos

Ele opera à 5V e vou utilizar um Arduino que também opere nessa tensão para facilitar as coisas. A leitura será feita na porta analógica A0. A resolução da porta analógica é de 10 bits, portanto 1024 valores, a contar de 0.

O ACS712 lê corrente positiva e corrente negativa, de -30A à 30A. O ponto 0 é portanto o ponto médio da resolução, que é 512. A saída do ACS712 quando não tiver corrente é de VCC/2, ou seja, 2.5V.

O pino analógico do Arduino lê 5V em uma escala de 1024 valores, portanto:

0 = 2.5V = 512

E é nesses 512 que serão distribuidos os possíveis 30A de resolução do ACS712. Nesse caso:

 I_{(1A)} = \frac{512}{30} = 17.06

Sabendo agora que 1A equivale a 17.06, basta agora montar a fórmula da leitura:

Range = 0 à 1023 portanto 511 = 0

 I = \frac{(analogRead(0)-511)}{17.06}

Agora já podemos partir para o wiring e posteriormente codificar essas continhas acima. Esse módulo que comprei da Sparkfun é uma verdadeira porcaria. Ele poderia já vir com os filtros, mas não. Vem apenas o CI soldado na board, o que não simplifica seu uso. Por conta disso, será necessário seguir esse esquema, indicado como “modo de operação típico” no datasheet:




Esquema para Wiring
Esquema para Wiring

Gostaria de exibí-lo no Fritzing, mas infelizmente o ACS712 que tem lá já tem filtro na board. Enfim, seguindo o esquema e guiando-se pela imagem, os 2 furos maiores são os furos para medir a corrente. Vamos ao ponto de atenção.

Atenção para não conectar errado os fios

Essa situação pode ser bem pior em corrente alternada, por isso é importante que você entenda o seguinte:

Conexão com meio externo
Conexão com meio externo

O que desejo focar nessa imagem é que você deve fazer um “passthrough” de um dos fios, seja AC ou DC, mas jamais coloque GND/Neutro junto com VCC/Fase porque isso é um curto-circuito! Portanto, enfatizando: A conexão deve ser como exemplificado acima.

Estou com preguiça de codificar, então peguei um código pronto de outro post que escrevi e adicionei calc(), apaguei algumas linhas e coloquei alguns defines. Se quiser usar apenas a parte do cálculo, está fácil.

Pessoal, gostaria de enfatizar a importância de se inscreverem no nosso canal Do bit Ao Byte Brasil no YouTube, porque alguns videos e reviews eu fari exclusivamente para o canal, uma vez que aqui escrevo o procedimento e lá tentarei mostrar além do funcionamento, as possibilidades.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!

Agregador de Links - Loucuras da Net

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta