AMPERÍMETRO DC 20 AMPERES- C/ PIC 18F1220 E ACS712ELCTR-20A-T (REF317) – PicSource
AMPERÍMETRO DC 20 AMPERES- C/ PIC 18F1220 E ACS712ELCTR-20A-T (REF317)
2 de março de 2019 Claudio Larios Aparelhos de Medição, Automotiva, Microcontroladores
Medindo corrente contínua na faixa de 100mA a 20 Amperes com o módulo ACS712-20…
Esta montagem faz uso do sensor de corrente ACS712-20 da Allegro (TM) que nos permitirá medir corrente contínua de até 20 Amperes.
Conforme esquema abaixo, usamos um microcontrolador 18F1220 para fazer a leitura do sensor e depois apresenta-la em um LCD 16×2.
O programa faz a leitura sucessiva de 64 amostras da tensão da entrada do PIC, no pino 1 e em seguida a rotina divide por 64, para obter a média das leituras. O valor desta média não pode ser apresentado direto no LCD.
Para obter o valor correto do resultado primeiro precisamos subtrair o valor da conversão referente ao valor que chamaremos de 'valor zero' do ACS712. Este é de 2,5 Volts (ou seja, sem carga ou sem circular corrente no sensor temos 2,5 Volts na saída do ACS712).
Quando a corrente que circula no sensor é positiva, a tensão de saída do ACS712 será sempre maior que 2,5V. E quando for negativa, sempre será menor que 2,5 Volts.
Então o programa necessita determinar se a corrente é positiva ou negativa, para mostrar o valor correto e colocar o sinal apropriado da medição.
Quando o ADC de 10 bits lê a tensão de 2,5 Volts, o resultado da conversão será o valor '512'.
Então se o valor for positivo temos que subtrair 512. E se for negativo temos que subtrair o valor lido de 512.
Feito isto, aplicamos a formula:
val_corrente= (float)res * V_VCC / (1023.0 * VAL_SENSITIVITY);
val_corrente é o valor final a ser mostrado no LCD;
res é o valor da média de leituras após ajuste da polaridade (positiva ou negativa);
V_VCC é a tensão de alimentação do PIC usada como referência ( 5 Volts);
1023 é o valor de 10 bits do conversor ADC;
VAL_SENSITIVITY é o valor da sensibilidade do ACS712 (100 mV/A);
Para facilitar, usamos a função Printf para imprimir este valor em ponto flutuante no LCD.
Note que devido a baixa sensibilidade do ACS712 e estarmos usando um conversor ADC de 10 bits não conseguiremos obter precisão nas casa pós vírgula.