Faça este Amperímetro Digital Avançado usando Arduino

Faça este Amperímetro Digital Avançado usando Arduino

Neste post vamos construir um amperímetro digital usando display LCD 16 x 2 e Arduino. Vamos entender a metodologia de medição de corrente usando um resistor shunt e implementar um projeto baseado em Arduino. O amperímetro digital proposto pode medir a corrente variando de 0 a 2 Amperes (máximo absoluto) com precisão razoável.



Como funcionam os amperímetros

Existem dois tipos de amperímetros: analógico e digital, seus funcionamentos são muito diferentes um do outro. Mas, ambos têm um conceito em comum: um resistor de derivação.

Um resistor de derivação é um resistor com resistência muito pequena colocado entre a fonte e a carga enquanto mede a corrente.





Vamos ver como funciona um amperímetro analógico e será mais fácil entender o digital.

como funciona um amperímetro analógico

Um resistor de derivação com resistência R muito baixa e assume que algum tipo de medidor analógico está conectado ao resistor cuja deflexão é diretamente proporcional à tensão através do medidor analógico.



Agora vamos passar um pouco de corrente do lado esquerdo. i1 é a corrente antes de entrar no resistor shunt R e i2 será a corrente depois de passar pelo resistor shunt.

A corrente i1 será maior que i2, pois caiu uma fração da corrente através do resistor shunt. A diferença de corrente entre o resistor de shunt desenvolve uma quantidade muito pequena de tensão em V1 e V2.
A quantidade de tensão será medida por esse medidor analógico.

A tensão desenvolvida através do resistor shunt depende de dois fatores: a corrente que flui através do resistor shunt e o valor do resistor shunt.

Se o fluxo de corrente for maior através do shunt, a tensão desenvolvida é maior. Se o valor do shunt for alto, a tensão desenvolvida através do shunt é maior.

O resistor de derivação deve ter um valor muito pequeno e deve possuir uma classificação de potência mais alta.

Um resistor de valor pequeno garante que a carga está obtendo a quantidade adequada de corrente e tensão para operação normal.

Além disso, o resistor de derivação deve ter uma classificação de voltagem mais alta para que possa tolerar a temperatura mais alta durante a medição da corrente. Quanto maior a corrente através do shunt, mais calor é gerado.

Agora você já deve ter uma ideia básica de como funciona um medidor analógico. Agora vamos passar para o design digital.

Agora sabemos que um resistor irá produzir uma tensão se houver um fluxo de corrente. A partir do diagrama V1 e V2 são os pontos, onde levamos as amostras de tensão para o microcontrolador.

Calculando Tensão para Conversão de Corrente

Agora vamos ver a matemática simples, como podemos converter a tensão produzida em corrente.

Lei do ohm: I = V / R

Conhecemos o valor do resistor shunt R e ele será inserido no programa.

A tensão produzida através do resistor shunt é:

V = V1 - V2

Ou

V = V2 - V1 (para evitar o símbolo negativo durante a medição e também o símbolo negativo depende da direção do fluxo de corrente)

Portanto, podemos simplificar a equação,

I = (V1 - V2) / R
Ou
I = (V2 - V1) / R

Uma das equações acima será inserida no código e podemos encontrar o fluxo atual e será exibida no LCD.

Agora vamos ver como escolher o valor do resistor de derivação.

O Arduino possui um conversor analógico para digital (ADC) de 10 bits. Ele pode detectar de 0 a 5 V em 0 a 1024 etapas ou níveis de tensão.

Portanto, a resolução deste ADC será 5/1024 = 0,00488 volt ou 4,88 milivolt por etapa.

Portanto, 4,88 milivolt / 2 mA (resolução mínima do amperímetro) = 2,44 ou resistor de 2,5 ohms.

Podemos usar quatro resistores de 10 ohms e 2 watts em paralelo para obter 2,5 ohms que foram testados no protótipo.

Então, como podemos dizer que a faixa máxima mensurável do amperímetro proposto é 2 Amperes.

O ADC pode medir de 0 a 5 V apenas, ou seja, Qualquer coisa acima irá danificar o ADC no microcontrolador.

Do protótipo testado o que observamos é que, nas duas entradas analógicas do ponto V1 e V2 quando o valor medido da corrente X mA, a tensão analógica lê X / 2 (no monitor serial).

Digamos, por exemplo, se o amperímetro lê 500 mA, os valores analógicos no monitor serial indicam 250 passos ou níveis de tensão. O ADC pode tolerar até 1024 passos ou 5 V no máximo. Portanto, quando o amperímetro lê 2000 mA, o monitor serial lê 1000 passos aprox. que é próximo a 1024.

Qualquer coisa acima do nível de tensão de 1024 danificará o ADC no Arduino. Para evitar isso antes de 2.000 mA, uma mensagem de advertência aparecerá no LCD dizendo para desconectar o circuito.

Agora você deve ter entendido como o amperímetro proposto funciona.

Agora, vamos passar aos detalhes de construção.

Diagrama esquemático:

Amperímetro digital Arduino DC

O circuito proposto é muito simples e amigável para iniciantes. Construa de acordo com o diagrama de circuito. Ajuste o potenciômetro de 10K para ajustar o contraste da tela.

Você pode alimentar o Arduino a partir de USB ou via conector CC com baterias de 9 V. Quatro resistores de 2 watts dissiparão o calor uniformemente do que usar um resistor de 2,5 ohms com resistor de 8-10 watts.

Quando nenhuma corrente está passando, o display pode ler algum pequeno valor aleatório que você pode ignorar, isso pode ser devido a tensão parasita nos terminais de medição.

NOTA: Não inverta a polaridade de alimentação da carga de entrada.

Código do programa:

//------------------Program Developed by R.GIRISH------------------//
#include
#define input_1 A0
#define input_2 A1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int AnalogValue = 0
int PeakVoltage = 0
float AverageVoltage = 0
float input_A0 = 0
float input_A1 = 0
float output = 0
float Resolution = 0.00488
unsigned long sample = 0
int threshold = 1000
void setup()
{
lcd.begin(16,2)
Serial.begin(9600)
}
void loop()
{
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_1)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A0 = PeakVoltage * Resolution
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_2)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A1 = PeakVoltage * Resolution
output = (input_A0 - input_A1) * 100
output = output * 4
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('DIGITAL AMMETER')
lcd.setCursor(0,1)
lcd.print(output)
lcd.print(' mA')
Serial.print('Volatge Level at A0 = ')
Serial.println(analogRead(input_A0))
Serial.print('Volatge Level at A1 = ')
Serial.println(analogRead(input_A1))
Serial.println('------------------------------')
delay(1000)
}
//------------------Program Developed by R.GIRISH------------------//

Se você tiver alguma pergunta específica sobre este projeto de circuito amperímetro digital baseado em Arduino, expresse na seção de comentários, você pode receber uma resposta rápida.




Anterior: Usando o Potenciômetro Digital MCP41xx com Arduino Próximo: Fonte de alimentação com corte de corrente excessiva usando Arduino