Tehke see täiustatud digitaalne ampermeeter Arduino abil

Tehke see täiustatud digitaalne ampermeeter Arduino abil

Selles postituses ehitame digitaalse ampermeetri, kasutades 16 x 2 LCD-ekraani ja Arduino. Mõistame šunditakisti abil voolu mõõtmise metoodikat ja rakendame Arduinol põhinevat disaini. Kavandatav digitaalne ampermeeter suudab mõistliku täpsusega mõõta voolu vahemikus 0 kuni 2 amprit (absoluutne maksimum).



Kuidas ampermeetrid töötavad

Ampermetreid on kahte tüüpi: analoog- ja digitaalsed, nende töö erineb üksteisest oluliselt. Kuid mõlemal on üks ühine mõiste: šunditakisti.

Šunttakisti on voolu mõõtmise ajal allika ja koormuse vahele paigutatud väga väikese takistusega takisti.





Vaatame, kuidas töötab analoog-ampermeeter, ja siis on digitaalsest lihtsam aru saada.

kuidas töötab analoog-ampermeeter

Väga madala takistusega R šunttakisti ja eeldame, et kogu takisti külge on ühendatud mingi analoogarvesti, mille läbipaine on otseselt proportsionaalne analoogmõõturi kaudu toimuva pingega



Nüüd laseme mõningast voolu vasakust küljest. i1 on vool enne šunditakisti sisenemist R ja i2 on vool pärast šunditakisti läbimist.

Vool i1 on suurem kui i2, kuna see langes šunditakisti kaudu osa voolust. Šunditakisti voolu erinevus arendab V1 ja V2 juures väga väikest pinget.
Pinge suurust mõõdetakse selle analoogarvesti abil.

Šunditakisti kaudu tekkiv pinge sõltub kahest tegurist: šunditakisti kaudu voolavast voolust ja šunditakisti väärtusest.

Kui vooluhulk on šundi kaudu suurem, on arenenud pinge suurem. Kui šundi väärtus on kõrge, on šundi ulatuses välja töötatud pinge suurem.

Šunditakisti väärtus peab olema väga väike ja selle võimsus peab olema suurem.

Väikese väärtusega takisti tagab koormuse normaalseks tööks piisava hulga voolu ja pinge.

Samuti peab šunditakisti võimsus olema suurem, et see taluks voolu mõõtmisel kõrgemat temperatuuri. Suurem vool läbi šundi rohkem soojust tekib.

Nüüdseks oleksite saanud põhiidee, kuidas analoogarvesti töötab. Nüüd liigume digitaalse disaini juurde.

Nüüdseks teame, et takisti tekitab voolu korral pinge. Diagrammilt V1 ja V2 on punktid, kus viime pingeproovid mikrokontrollerisse.

Pinge voolu muundamise arvutamine

Vaatame nüüd lihtsat matemaatikat, kuidas saaksime teisendada toodetud pinge vooluks.

Ohmi seadus: I = V / R

Me teame šunditakisti R väärtust ja see sisestatakse programmi.

Šunditakisti kaudu toodetud pinge on:

V = V1 - V2

Või

V = V2 - V1 (negatiivse sümboli vältimiseks mõõtmise ajal ja ka negatiivse sümbol sõltub voolu suunast)

Nii et saame võrrandit lihtsustada,

I = (V1 - V2) / R
Või
I = (V2 - V1) / R

Üks ülaltoodud võrranditest sisestatakse koodi ja leiame praeguse voo ja kuvatakse LCD-ekraanil.

Nüüd vaatame, kuidas valida šunditakisti väärtus.

Arduino on sisse ehitanud 10-bitise analoog-digitaalmuunduri (ADC). See suudab tuvastada 0 kuni 5 V 0 kuni 1024 sammuga või pingetasemega.

Nii et selle ADC eraldusvõime on 5/1024 = 0,00488 volti ehk 4,88 millivoldi sammu kohta.

Niisiis 4,88 millivolt / 2 mA (ampermeetri minimaalne eraldusvõime) = 2,44 või 2,5 oomi takisti.

Prototüübis testitud 2,5 oomi saamiseks võime paralleelselt kasutada nelja 10 oomi ja 2 vatti takistit.

Niisiis, kuidas me saame öelda pakutud ampermeetri maksimaalset mõõdetavat vahemikku, mis on 2 Amprit.

ADC saab mõõta ainult 0 kuni 5 V, st. Kõik ülaltoodud kahjustab mikrokontrolleri ADC-d.

Testitud prototüübi põhjal oleme täheldanud, et punktide V1 ja V2 kahe analoogsisendi korral, kui praegune mõõdetud väärtus on X mA, loeb analoogpinge X / 2 (jadaekraanil).

Oletame näiteks, et kui ampermeeter loeb 500 mA, siis jada monitori analoogväärtused 250 sammu või pingetaset. ADC talub kuni 1024 sammu või maksimaalselt 5 V, nii et kui ampermeetri näit on 2000 mA, loeb jadamonitor umbes 1000 sammu. mis on 1024 lähedal.

Kõik, mis ületab 1024 pingetaset, kahjustab Arduino ADC-d. Selle vältimiseks vahetult enne 2000 mA hoiatab LCD ekraanil hoiatusteade ahela lahtiühendamise kohta.

Nüüdseks oleksite aru saanud, kuidas pakutav ampermeeter töötab.

Nüüd liigume konstruktsiooniliste detailide juurde.

Skemaatiline diagramm:

Arduino DC digitaalne ampermeeter

Kavandatud ringrada on väga lihtne ja algajale sõbralik. Ehitage vastavalt skeemile. Ekraani kontrastsuse reguleerimiseks reguleerige 10K potentsiomeetrit.

Arduino saab toita USB-st või 9 V patareidega alalisvoolupistiku kaudu. Neli 2-vatist takistit hajutavad soojust ühtlaselt kui ühe 2,5-oomise takisti kasutamine 8–10-vatise takistiga.

Kui vool ei liigu, võib ekraan lugeda mõnda juhuslikku väärtust, mida võite ignoreerida, võib see olla tingitud mõõteklemmide läbivast pingest.

MÄRKUS. Ärge muutke sisendkoormuse toitepolaarsust vastupidiseks.

Programmi kood:

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

Kui teil on selle Arduino-põhise digitaalse ampermeetri vooluringi projekti kohta konkreetseid küsimusi, palun väljendage kommentaaride jaotises, võite saada kiire vastuse.




Eelmine: Digitaalse potentsiomeetri MCP41xx kasutamine Arduinoga Järgmine: üle praeguse väljalülitatud toiteallika Arduino abil