Padarykite šį pažangų skaitmeninį ampermetrą naudodami „Arduino“

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sukursime skaitmeninį ampermetrą naudodami 16 x 2 LCD ekraną ir „Arduino“. Mes suprasime srovės matavimo naudojant šunto rezistorių metodiką ir įgyvendinsime dizainą, pagrįstą „Arduino“. Siūlomu skaitmeniniu ampermetru galima pagrįstai tiksliai išmatuoti srovę nuo 0 iki 2 amperų (absoliutus maksimumas).

Kaip veikia ampermetrai

Yra dviejų tipų ampermetrai: analoginiai ir skaitmeniniai, jų veikimas labai skiriasi vienas nuo kito. Bet jie abu turi vieną bendrą sąvoką: šunto rezistorius.



Šuntinis rezistorius yra rezistorius su labai mažu atsparumu, dedamas tarp šaltinio ir apkrovos matuojant srovę.

Pažiūrėkime, kaip veikia analoginis ampermetras, ir tada bus lengviau suprasti skaitmeninį.



kaip veikia analoginis ampermetras

Šuntinis rezistorius su labai mažu atsparumu R ir daroma prielaida, kad tam tikras analoginis skaitiklis yra prijungtas per rezistorių, kurio deformacija yra tiesiogiai proporcinga įtampai per analoginį skaitiklį.

Dabar praleiskime tam tikrą srovės kiekį iš kairės pusės. i1 yra srovė prieš įeinant į šunto rezistorių R, ​​o i2 bus srovė, praeinant per šunto rezistorių.

Srovė i1 bus didesnė už i2, nes ji sumažino srovės dalį per šunto rezistorių. Srovės skirtumas tarp šunto rezistoriaus sukuria labai mažą įtampą esant V1 ir V2.
Įtampos dydis bus matuojamas tuo analoginiu matuokliu.

Visame šunto rezistoriuje sukurta įtampa priklauso nuo dviejų veiksnių: srovės, tekančios per šunto rezistorių, ir šunto rezistoriaus vertės.

Jei srovė per šuntą yra didesnė, sukurta įtampa yra didesnė. Jei šunto vertė yra didelė, per šuntą susidaro daugiau įtampos.

Šunto rezistorius turi būti labai mažos vertės, o jo galia turi būti didesnė.

Mažos vertės rezistorius užtikrina, kad apkrova gautų pakankamą srovės ir įtampos kiekį normaliam darbui.

Taip pat šunto rezistorius turi būti aukštesnio galingumo, kad matuodamas srovę jis galėtų toleruoti aukštesnę temperatūrą. Didesnė srovė per šuntą sukuria daugiau šilumos.

Dabar jau turėjote pagrindinę mintį, kaip veikia analoginis skaitiklis. Dabar pereikime prie skaitmeninio dizaino.

Dabar mes žinome, kad rezistorius sukurs įtampą, jei yra srovės srautas. Iš schemos V1 ir V2 yra taškai, iš kurių įtampos mėginius nunešame į mikrovaldiklį.

Apskaičiuojant įtampos ir srovės perskaičiavimą

Dabar pažiūrėkime paprastą matematiką, kaip mes galime konvertuoti pagamintą įtampą į srovę.

Omo dėsnis: I = V / R

Mes žinome šunto rezistoriaus R vertę ir ji bus įrašyta į programą.

Per šunto rezistorių sukurta įtampa yra:

V = V1 - V2

Arba

V = V2 - V1 (norint išvengti neigiamo simbolio matuojant ir neigiamo simbolio, priklauso nuo srovės srauto krypties)

Taigi galime supaprastinti lygtį,

Aš = (V1 - V2) / R
Arba
Aš = (V2 - V1) / R

Viena iš aukščiau nurodytų lygčių bus įvesta į kodą ir mes galime rasti dabartinį srautą ir bus rodomi LCD.

Dabar pažiūrėkime, kaip pasirinkti šunto rezistoriaus vertę.

„Arduino“ yra sukūręs 10 bitų analoginį į skaitmeninį keitiklį (ADC). Jis gali aptikti nuo 0 iki 5 V 0–1024 pakopomis arba įtampos lygiais.

Taigi šio ADC skiriamoji geba bus 5/1024 = 0,00488 voltai arba 4,88 milivoltai per žingsnį.

Taigi 4,88 milivoltai / 2 mA (mažiausia ampermetro skiriamoji geba) = 2,44 arba 2,5 omų rezistorius.

Mes galime lygiagrečiai naudoti keturis 10 omų, 2 vatų rezistorius, kad gautume 2,5 omo, kuris buvo išbandytas prototipe.

Taigi, kaip mes galime pasakyti maksimalų išmatuojamą siūlomo ampermetro diapazoną, kuris yra 2 amperai.

ADC gali matuoti tik nuo 0 iki 5 V, t. Viskas aukščiau sugadins mikrovaldiklio ADC.

Iš patikrinto prototipo pastebėjome, kad dviejuose analoginiuose įėjimuose iš taškų V1 ir V2, kai dabartinė išmatuota vertė X mA, analoginė įtampa rodo X / 2 (nuosekliame monitoriuje).

Tarkime, jei ampermetras rodo 500 mA, analoginės serijinio monitoriaus vertės rodo 250 žingsnių arba įtampos lygius. ADC gali toleruoti iki 1024 žingsnių arba maksimalų 5 V įtampą. Taigi, kai ampermetras rodo 2000 mA, nuoseklusis monitorius rodo maždaug 1000 žingsnių. kuris artimas 1024 m.

Viskas, viršijanti 1024 įtampos lygį, pakenks „Arduino“ ADC. Norėdami to išvengti prieš pat 2000 mA, LCD ekrane pasirodys įspėjamasis pranešimas, nurodantis atjungti grandinę.

Dabar jau būtumėte supratę, kaip veikia siūlomas ampermetras.

Dabar pereikime prie konstrukcinių detalių.

Schema:

„Arduino DC“ skaitmeninis ampermetras

Siūloma grandinė yra labai paprasta ir draugiška pradedantiesiems. Sukurkite pagal grandinės schemą. Norėdami sureguliuoti ekrano kontrastą, sureguliuokite 10K potenciometrą.

„Arduino“ galite maitinti iš USB arba per nuolatinės srovės lizdą su 9 V baterijomis. Keturi 2 vatų rezistoriai šilumą išsklaidys tolygiai, nei naudojant vieną 2,5 omų rezistorių su 8–10 vatų rezistoriumi.

Kai srovė nepraeina, ekranas gali nuskaityti nedidelę atsitiktinę vertę, kurios galite nepaisyti, taip gali būti dėl iškraipytos įtampos matavimo gnybtuose.

PASTABA: nekeiskite įvesties apkrovos maitinimo poliškumo.

Programos kodas:

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

Jei turite kokių nors konkrečių klausimų dėl šio „Arduino“ pagrįsto skaitmeninio ampermetro grandinės projekto, prašome paaiškinti komentarų skyriuje, galite gauti greitą atsakymą.




Pora: Skaitmeninio potenciometro MCP41xx naudojimas su „Arduino“ Kitas: Viršutinis elektros energijos tiekimas naudojant „Arduino“