- Reikalingos medžiagos:
- ACS712 srovės jutiklio veikimas:
- Grandinės schema:
- Modeliavimas:
- PIC mikrovaldiklio programavimas:
- Darbas:
Matuojant įtampą ir srovę visada bus naudinga kuriant ar derinant bet kokią elektros sistemą. Šiame projekte mes gaminsime savo skaitmeninį ampermetrą naudodami PIC16F877A mikrovaldiklį ir srovės jutiklį ACS712-5A. Šis projektas gali išmatuoti tiek kintamą, tiek nuolatinę srovę 0–30 A diapazonu 0,3 A tikslumu. Su keletu modifikacijų kode taip pat galite naudoti šią grandinę matuoti iki 30A. Taigi pradėkime !!!
Reikalingos medžiagos:
- PIC16F877A
- 7805 Įtampos reguliatorius
- ACS712 srovės jutiklis
- 16 * 2 LCD ekranas
- Jungiamoji dėžutė ir apkrova (skirta tik bandymui)
- Jungiamieji laidai
- Kondensatoriai
- Bandomoji Lenta.
- Maitinimas - 12V
ACS712 srovės jutiklio veikimas:
Prieš pradedant kurti projektą, mums labai svarbu suprasti ACS712 srovės jutiklio veikimą, nes tai yra pagrindinis projekto komponentas. Srovės matavimas, ypač kintamosios srovės matavimas, visada yra sunki užduotis dėl triukšmo ir netinkamos izoliacijos problemos ir tt
Šis modulis veikia Hall-efekto principu, kurį atrado daktaras Edwinas Hallas. Pagal jo principą, kai į magnetinį lauką įdedamas srovės laidininkas, per jo kraštus susidaro įtampa statmena tiek srovės, tiek magnetinio lauko kryptims. Nesigilinkime į sąvoką, bet paprasčiau tariant, mes naudojame salės jutiklį magnetiniam laukui aplink srovės laidininką matuoti. Šis matavimas bus išreikštas milivoltais, kuriuos mes pavadinome kaip salės įtampą. Ši išmatuota salės įtampa yra proporcinga srovei, kuri tekėjo per laidininką.
Pagrindinis ACS712 srovės jutiklio naudojimo pranašumas yra tai, kad jis gali matuoti tiek kintamą, tiek nuolatinę srovę, taip pat izoliuoja apkrovą (kintamosios / nuolatinės srovės apkrovą) ir matavimo bloką (mikrovaldiklio dalį). Kaip parodyta paveikslėlyje, modulyje yra trys kaiščiai, kurie yra „Vcc“, „Vout“ ir „Ground“.
2 kontaktų gnybtų blokas yra tas, kuriame turėtų būti praleistas srovės laidas. Modulis veikia esant + 5 V įtampai, todėl Vcc turėtų būti maitinamas 5 V įtampa, o žemė turėtų būti prijungta prie sistemos žemės. „Vout“ kaiščio poslinkio įtampa yra 2500 mV, tai reiškia, kad kai viela neteka srovė, išėjimo įtampa bus 2500 mV, o kai tekanti srovė yra teigiama, įtampa bus didesnė nei 2500 mV, o kai tekanti srovė yra neigiama, įtampa bus mažesnė nei 2500mV.
PIC mikrovaldiklio ADC modulį nuskaitysime modulio išėjimo įtampą (Vout), kuri bus 512 (2500mV), kai laidu neteka srovė. Ši vertė sumažės srovei tekant neigiama linkme ir didės srovei tekant teigiama linkme. Žemiau esanti lentelė padės suprasti, kaip išėjimo įtampa ir ADC vertė priklauso nuo laido tekančios srovės.
Šios vertės buvo apskaičiuotos remiantis informacija, pateikta ACS712 duomenų lape. Jas taip pat galite apskaičiuoti naudodamiesi šiomis formulėmis:
Vout įtampa (mV) = (ADC vertė / 1023) * 5000 srovė per laidą (A) = (Vout (mv) -2500) / 185
Dabar mes žinome, kaip veikia ACS712 jutiklis ir ko iš jo galime tikėtis. Pereikime prie grandinės schemos.
Grandinės schema:
Visa šio skaitmeninio ampermetro projekto grandinės schema parodyta paveikslėlyje žemiau.
Visa skaitmeninės srovės skaitiklio grandinė veikia esant + 5 V įtampai, kurią reguliuoja 7805 įtampos reguliatorius. Srovės vertei rodyti naudojome 16X2 skystųjų kristalų ekraną. Srovės jutiklio (Vout) išvesties kaištis yra prijungtas prie 7 -ojo PIC kaiščio, kuris yra AN4, kad būtų galima nuskaityti analoginę įtampą.
Toliau pateiktoje lentelėje parodyta PIC kaiščių jungtis
S.Ne: |
PIN kodas |
PIN vardas |
Prisijungęs prie |
1 |
21 |
RD2 |
LCD ekranas |
2 |
22 |
RD3 |
LCD ekranas |
3 |
27 |
RD4 |
D4 skystųjų kristalų ekranas |
4 |
28 |
RD5 |
D5 skystųjų kristalų ekranas |
5 |
29 |
RD6 |
D6 skystųjų kristalų ekranas |
6 |
30 |
RD7 |
D7 skystųjų kristalų ekranas |
7 |
7 |
AN4 |
Dabartinio Sesnoro „Vout“ |
Galite pastatyti šią skaitmeninę ampermetro grandinę ant duonos lentos arba naudoti perf lentą. Jei laikėtės PIC mokymo programų, taip pat galite pakartotinai naudoti aparatinę įrangą, kurią naudojome mokydamiesi PIC mikrovaldiklius. Čia mes naudojome tą pačią perf plokštę, kurią sukūrėme LED mirksi su PIC mikrovaldikliu, kaip parodyta žemiau:
Pastaba: jums nėra privaloma kurti šios plokštės, galite tiesiog sekti grandinės schemą ir pastatyti grandinę ant duonos lentos ir naudoti bet kokį savivarčio rinkinį, kad savo programą perkeltumėte į PIC mikrovaldiklį.
Modeliavimas:
Šią dabartinę skaitiklio schemą taip pat galima imituoti naudojant „Proteus“, prieš pradedant tęsti savo aparatinę įrangą. Priskirkite kodą, pateiktą šios instrukcijos pabaigoje, šešioliktainį failą ir spustelėkite paleidimo mygtuką. Skystųjų kristalų ekrane turėtumėte pastebėti srovę. Lempa naudojau kaip kintamosios srovės apkrovą. Spustelėdami ją, galite pakeisti lempos vidinę varžą, kad pakeistumėte pro ją tekančią srovę.
Kaip matote aukščiau pateiktame paveikslėlyje, ampermetras rodo faktinę srovę, tekančią per lempą, kuri yra apie 3,52 A, o LCD rodo, kad srovė yra apie 3,6 A. Tačiau praktiniu atveju galime gauti klaidą iki 0,2A. ADC vertė ir įtampa (mV) taip pat rodoma LCD, kad suprastumėte.
PIC mikrovaldiklio programavimas:
Kaip sakyta anksčiau, visą kodą galite rasti šio straipsnio pabaigoje. Kodas yra savaime paaiškinamas komentarų eilutėmis ir tiesiog apima LCD sąsajos su PIC mikrovaldikliu ir ADC modulio naudojimą PIC mikrovaldiklyje, apie kurį jau kalbėjome ankstesnėse PIC mikrovaldiklių mokymosi pamokose, sampratą.
Iš jutiklio nuskaityta vertė nebus tiksli, nes srovė yra kintama ir ją taip pat veikia triukšmas. Taigi mes perskaitėme ADC vertę 20 kartų ir ją vidutiniškai gauname tinkamą dabartinę vertę, kaip parodyta žemiau esančiame kode.
Mes naudojome tas pačias formules, kurios buvo paaiškintos aukščiau, kad apskaičiuotume įtampą ir srovės vertę.
for (int i = 0; i <20; i ++) // 20 kartų perskaityta vertė {adc = 0; adc = ADC_Read (4); // Perskaitykite ADC įtampą = adc * 4.8828; // Apskaičiuokite įtampą, jei (įtampa> = 2500) // Jei srovė teigiama Amperai + = ((įtampa-2500) / 18,5); else if (Įtampa <= 2500) // Jei srovė neigiama Amperai + = ((2500-įtampa) / 18,5); } Amperai / = 20; // Vidutinė vertė, kuri buvo perskaityta 20 kartų
Kadangi šis projektas taip pat gali nuskaityti kintamą srovę, dabartinis srautas taip pat bus neigiamas ir teigiamas. Tai yra išėjimo įtampos vertė bus didesnė ir mažesnė nei 2500mV. Taigi, kaip parodyta žemiau, mes keičiame neigiamos ir teigiamos srovės formules, kad negautume neigiamos vertės.
if (Įtampa> = 2500) // Jei srovė teigiama Amperai + = ((Įtampa-2500) / 18,5); else if (Įtampa <= 2500) // Jei srovė neigiama Amperai + = ((2500-įtampa) / 18,5);
Naudojant 30A srovės jutiklį:
Jei jums reikia išmatuoti srovę daugiau nei 5A, galite tiesiog nusipirkti ACS712-30A modulį ir susieti jį tokiu pačiu būdu ir pakeisti žemiau esančią kodo eilutę pakeisdami 18.5 į 0.66, kaip parodyta žemiau:
if (Įtampa> = 2500) // Jei srovė teigiama Amperai + = ((Įtampa-2500) / 0,66); else if (Įtampa <= 2500) // Jei srovė neigiama Amperai + = ((2500-Įtampa) /0,66);
Taip pat patikrinkite 100mA ampermetrą naudodami AVR mikrovaldiklį, jei norite matuoti silpną srovę.
Darbas:
Užprogramavę PIC mikrovaldiklį ir paruošę aparatinę įrangą. Tiesiog įjunkite apkrovą ir savo PIC mikrovaldiklį, kad galėtumėte matyti srovę, einančią per laidą, rodomą jūsų LCD ekrane.
PASTABA: Jei naudojate ASC7125A modulį, įsitikinkite, kad jūsų apkrova sunaudoja ne daugiau kaip 5A, srovės laidininkams naudokite ir didesnio matuoklio laidus.
Visiškas PIC mikrovaldikliais pagrįsto ampermetro projekto darbas parodytas toliau pateiktame vaizdo įraše. Tikiuosi, kad projektas pasiteisino ir jam patiko. Jei turite kokių nors abejonių, galite jas parašyti žemiau esančiame komentarų skyriuje arba paskelbti mūsų forumuose.