Medição de corrente CC com Arduino
Há muitas razões pelas quais precisamos medir a corrente CC usando Arduino. Podemos querer verificar quanto Arduino e outros periféricos atuais estão usando ou medir a corrente de carregamento e descarga de bateria.
A maioria das placas e microcontroladores Arduino possui ADC incorporado, então primeiro temos que medir a tensão CC que pode ser lida pela entrada analógica do Arduino, usando posteriormente fator de escala Durante a programação, convertemos esse valor de tensão ADC em corrente.
Para medir a corrente de CC usando diferentes sensores e módulos de Arduino, estão disponíveis no mercado. Um dos sensores mais populares e baratos disponíveis no mercado é o ACS712 sensor de efeito hall.
Sensor de efeito do Hall ACS712
Ambos AC e DC A corrente pode ser medida usando o sensor de efeito ACS712 Hall. Hoje vamos nos concentrar apenas na medição da corrente CC. ACS712 opera acima de 5V, gera uma tensão de saída no Vout pino do sensor que é proporcional ao valor da corrente medido por ele.
Três variações diferentes deste sensor estão disponíveis de acordo com o valor atual que ele mede:
ACS712-5A: O sensor 5A pode medir a corrente entre -5a a 5a. 185MV é o fator de escala ou sensibilidade do sensor que mostra 185mv A alteração na tensão inicial representa 1a alteração na entrada atual.
ACS712-20A: 20a O sensor pode medir a corrente entre -20a a 20a. 100mv é o fator de escala ou sensibilidade do sensor que mostra 100mv A alteração na tensão inicial representa 1a alteração na entrada atual.
ACS712-30A: 30a O sensor pode medir a corrente entre -30a a 30a. 66MV é o fator de escala ou sensibilidade do sensor que mostra 66mv A alteração na tensão inicial representa 1a alteração na entrada atual.
O sensor produz 2.5V Quando nenhuma corrente é detectada, a tensão abaixo disso representa uma corrente negativa enquanto a tensão acima de 2.5V mostra corrente positiva.
Fator de escala:
5a | 20a | 30a |
---|---|---|
185mv/amp | 100mv/amp | 66mv/amp |
Fórmula para medir a corrente
Para verificar o fator de escala, consulte o chip ACS712 no sensor de efeito Hall, como mostrado abaixo no diagrama. Aqui no nosso caso, usaremos a versão 20A.
Diagrama de circuito
Certifique -se de conectar sensores de efeito Hall com carga sempre se conectar em série, pois a corrente permanece constante em série. Conectar o sensor em paralelo pode danificar a placa Arduino ou ACS712. Conecte o sensor na configuração abaixo mencionada:
Pino Arduino | Pino ACS712 |
---|---|
5V | VCC |
Gnd | Gnd |
Pino analógico | Fora |
Simulação
Código
/*Definido duas variáveis para o sensor Vout e a corrente de carga medida*/
Sensorvout duplo = 0;
motocicleta dupla = 0;
/*Constantes para fator de escala em v*/
/*Para o sensor 5a Take scale_factor = 0.185;*/
const Double Scale_Factor = 0.1; /*Para o sensor 20A*/
/*Para o sensor 30A Take scale_actor = 0.066;*/
/* Variáveis definidas para converter dados analógicos em digital, pois o Arduino possui 10 bits ADC, de modo que os valores máximos possíveis são 1024*/
/ * A tensão de referência é 5V */
/* O valor de tensão padrão para o sensor é metade da tensão de referência que é 2.5V*/
const duplo refvolt = 5.00;
const duplo adcresolution = 1024;
duplo adcvalue = refvolt/adcresolution;
dupla defaultSensorvout = refvolt/2;
Void Setup ()
Serial.começar (9600);
Void Loop ()
/* 1000 leituras feitas para obter mais precisão*/
para (int i = 0; i < 1000; i++)
Sensorvout = (sensorvout + (adcValue * analogread (a0)));
atraso (1);
// VOUT EM MV
Sensorvout = sensorvout /1000;
/* Usando a fórmula atual converte VOUT do sensor em corrente de carga*/
MotorCurrent = (Sensorvout - padrãoSensorvout)/ Scale_Factor;
Serial.print ("sensorvout ="); /*Imprimirá o sensor VOUT no monitor serial*/
Serial.impressão (sensorvout, 2);
Serial.print ("volts");
Serial.print ("\ t motocicorrent ="); /*Imprimirá a corrente CC medida*/
Serial.impressão (motocicleta, 2);
Serial.println ("amperes");
atraso (1000); /*Atraso de 1 s é dado*/
Aqui no código acima, duas variáveis são inicializadas Sensorvout e Motocicleta, Ambas as variáveis armazenarão valores como tensão e corrente, respectivamente. O próximo fator de escala é definido como 0.1 V (100mV) De acordo com o sensor 20A-ACS712. A tensão de referência é definida como 5V e para converter a entrada analógica em resolução digital ADC é inicializada em 1024. Como o Arduino tem um ADC de 10 bits, o que significa que o máximo que pode armazenar é 1024 valores.
Como explicado acima fator de escala levará a leitura de acordo com as tensões totais desviadas de 2.5V. Então, 0.A mudança de 1V no VOUT do sensor será igual a 1a de corrente de entrada.
Próximo no laço seção a para loop é inicializado para fazer 1000 leituras para obter um valor mais preciso da corrente de saída. O sensor VOUT é dividido por 1000 para converter valores em MV. Usando a fórmula de corrente do motor, determinamos nossa corrente de carga. Última seção do código imprimirá as tensões VOUT do sensor e a corrente medida.
Saída
Aqui no sensor de saída VOUT é menor que 2.5V Então a corrente do motor medida de saída é negativa. A corrente de saída é negativa devido à polaridade reversa do motor CC.
Conclusão
A medição da corrente CC usando Arduino exigiu algum sensor ou módulo externo. Um dos sensores de efeito Hall amplamente utilizados é o ACS712, que não apenas possui uma grande gama de medidas de corrente para DC, bem como corrente CA. Usando este sensor, medimos a corrente CC de um motor CC em execução e o resultado da saída é mostrado na janela do terminal.