Faceți acest ampermetru digital avansat folosind Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un ampermetru digital folosind afișaj LCD de 16 x 2 și Arduino. Vom înțelege metodologia de măsurare a curentului utilizând un rezistor de șunt și vom implementa un design bazat pe Arduino. Amperimetrul digital propus poate măsura curentul cuprins între 0 și 2 ampere (maxim absolut) cu o precizie rezonabilă.

Cum funcționează ampermetrele

Există două tipuri de ampermetre: analogice și digitale, funcționarea lor este mult diferită una de cealaltă. Dar amândoi au un concept comun: un rezistor de șunt.



Un rezistor de șunt este un rezistor cu rezistență foarte mică plasat între sursă și sarcină în timpul măsurării curentului.

Să vedem cum funcționează un ampermetru analog și atunci va fi mai ușor să înțelegem cel digital.



cum funcționează un ampermetru analogic

Un rezistor de șunt cu rezistență foarte scăzută R și presupune că un anumit contor analogic este conectat la rezistență, care deviația este direct proporțională cu tensiunea prin contorul analogic.

Acum, să trecem o cantitate de curent din partea stângă. i1 este curentul înainte de intrarea în rezistența de șunt R și i2 va fi curentul după trecerea prin rezistența de șunt.

Curentul i1 va fi mai mare decât i2, deoarece a scăzut o fracțiune de curent prin rezistența de șunt. Diferența de curent dintre rezistența de șunt dezvoltă o cantitate foarte mică de tensiune la V1 și V2.
Cantitatea de tensiune va fi măsurată de acel contor analogic.

Tensiunea dezvoltată în rezistența de șunt depinde de doi factori: curentul care trece prin rezistența de șunt și valoarea rezistorului de șunt.

Dacă debitul de curent este mai mare prin șunt, tensiunea dezvoltată este mai mare. Dacă valoarea șuntului este mare, tensiunea dezvoltată în șunt este mai mare.

Rezistorul de șunt trebuie să aibă o valoare foarte mică și trebuie să aibă o putere mai mare.

Un rezistor cu valoare mică asigură că sarcina obține o cantitate adecvată de curent și tensiune pentru funcționarea normală.

De asemenea, rezistența de șunt trebuie să aibă o putere mai mare, astfel încât să poată tolera temperatura mai mare în timp ce măsoară curentul. Cu cât este mai mare curentul prin șunt, cu atât este generată căldura.

Până acum ați fi avut ideea de bază, cum funcționează un contor analog. Acum să trecem la designul digital.

Până acum știm că un rezistor va produce o tensiune dacă există un curent de curent. Din diagramele V1 și V2 sunt punctele, unde ducem probele de tensiune la microcontroler.

Calcularea conversiei de tensiune la curent

Acum să vedem matematica simplă, cum putem converti tensiunea produsă în curent.

Legea ohmului: I = V / R

Știm valoarea rezistenței de șunt R și va fi introdusă în program.

Tensiunea produsă pe rezistența de șunt este:

V = V1 - V2

Sau

V = V2 - V1 (pentru a evita simbolul negativ în timpul măsurării și simbolul negativ depinde de direcția fluxului curent)

Deci putem simplifica ecuația,

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

Una dintre ecuațiile de mai sus va fi introdusă în cod și putem găsi fluxul curent și va fi afișat pe ecranul LCD.

Acum să vedem cum să alegem valoarea rezistenței de șunt.

Arduino a încorporat un convertor analogic digital pe 10 biți (ADC). Poate detecta de la 0 la 5V în 0 până la 1024 trepte sau niveluri de tensiune.

Deci, rezoluția acestui ADC va fi 5/1024 = 0,00488 volt sau 4,88 milivolți pe pas.

Deci, 4,88 milivolți / 2 mA (rezoluția minimă a ampermetrului) = rezistor de 2,44 sau 2,5 ohmi.

Putem folosi patru rezistențe de 10 ohmi, 2 wați în paralel pentru a obține 2,5 ohmi, care a fost testat în prototip.

Deci, cum putem spune intervalul maxim măsurabil al ampermetrului propus, care este de 2 ampere.

ADC poate măsura numai de la 0 la 5 V, adică. Orice lucru de mai sus va deteriora ADC-ul din microcontroler.

Din prototipul testat am observat că, la cele două intrări analogice de la punctul V1 și V2, când valoarea măsurată curent X mA, tensiunea analogică este X / 2 (în monitorul serial).

Spuneți, de exemplu, dacă ampermetrul citește 500 mA, valorile analogice de pe monitorul serial citesc 250 de pași sau niveluri de tensiune. ADC poate tolera până la 1024 pași sau maximum 5 V, deci atunci când ampermetrul citește 2000 mA, monitorul serial citește 1000 pași aprox. care este aproape de 1024.

Orice lucru peste nivelul de tensiune 1024 va deteriora ADC-ul din Arduino. Pentru a evita acest lucru chiar înainte de 2000 mA, pe ecranul LCD va apărea un mesaj de avertizare care va spune să deconectați circuitul.

Până acum ați fi înțeles cum funcționează ampermetrul propus.

Acum să trecem la detalii de construcție.

Diagramă schematică:

Amperimetru digital Arduino DC

Circuitul propus este foarte simplu și pentru începători. Construiți conform schemei de circuit. Reglați potențiometrul de 10K pentru a regla contrastul afișajului.

Puteți alimenta Arduino de pe USB sau prin mufa DC cu baterii de 9 V. Patru rezistențe de 2 wați vor disipa căldura uniform decât utilizarea unui rezistor de 2,5 ohmi cu rezistor de 8-10 wați.

Atunci când nu trece curent, afișajul poate citi o mică valoare aleatorie pe care o puteți ignora, acest lucru s-ar putea datora tensiunii de rătăcire între bornele de măsurare.

NOTĂ: Nu inversați polaritatea alimentării cu sarcină de intrare.

Codul programului:

//------------------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------------------//

Dacă aveți vreo întrebare specifică cu privire la acest proiect de circuit amperimetru digital bazat pe Arduino, vă rugăm să exprimați în secțiunea de comentarii, este posibil să primiți un răspuns rapid.




Precedent: Utilizarea Potențiometrului digital MCP41xx cu Arduino Următorul: Sursa de alimentare cu curent întrerupt utilizând Arduino