- Reikalingos medžiagos
- Grandinės schema
- Matavimo vienetas
- Skaičiavimo ir rodymo vienetas
- „Arduino“ programavimas
- Kaip matuoti tiksliau?
- Darbas ir testavimas
Kaip elektronikos inžinieriai, mes visada priklausome nuo skaitiklių / prietaisų, kad matuotume ir analizuotume grandinės darbą. Pradedant paprastu multimetru ir baigiant sudėtingais energijos kokybės analizatoriais ar DSO, viskas turi savo unikalias programas. Dauguma šių skaitiklių yra lengvai prieinami ir juos galima įsigyti atsižvelgiant į matuojamus parametrus ir jų tikslumą. Tačiau kartais galime atsidurti situacijoje, kai reikia susikurti savo skaitiklius. Tarkime, kad jūs dirbate su saulės baterijų projektu ir norėtumėte apskaičiuoti savo apkrovos energijos suvartojimą. Tokiais atvejais mes galime sukurti savo „Wattmeter“ naudodami paprastą mikrovaldiklio platformą, tokią kaip „Arduino“.
Savo skaitiklių sukūrimas ne tik sumažina bandymų kainą, bet ir suteikia mums galimybių palengvinti bandymų procesą. Kaip ir „ Arduino“ sukurtą vatmetrą, galima lengvai pritaikyti, kad būtų galima stebėti „Serial“ monitoriaus rezultatus ir braižyti grafiką „Serial plotter“ sistemoje, arba pridėti SD kortelę, kad automatiškai registruotų įtampos, srovės ir galios vertes iš anksto nustatytais intervalais. Skamba įdomiai teisingai !? Taigi pradėkime…
Reikalingos medžiagos
- „Arduino Nano“
- LM358 Op-Amp
- 7805 Įtampos reguliatorius
- 16 * 2 LCD ekranas
- 0,22 omų 2 vatų šuntinis rezistorius
- 10k žoliapjovės puodas
- 10k, 20k, 2.2k, 1k rezistoriai
- 0,1 uF kondensatoriai
- Bandymo apkrova
- Puiki lenta arba duona
- Litavimo rinkinys (pasirinktinai)
Grandinės schema
Visa „ arduino“ vatmetro projekto schema pateikta žemiau.
Kad būtų lengviau suprasti, arduino vatmetro grandinė yra padalinta į du vienetus. Viršutinė grandinės dalis yra matavimo vienetas, o apatinė grandinės dalis yra skaičiavimo ir rodymo vienetas. Žmonėms, kurie yra nauji šio tipo grandinės, laikykitės etikečių. + 5V pavyzdys yra etiketė, o tai reiškia, kad visi kaiščiai, prie kurių yra prijungta etiketė, turėtų būti laikomi, nes jie yra sujungti. Kad grandinės schema atrodytų tvarkingai, paprastai naudojamos etiketės.
Grandinė sukurta taip, kad tilptų į sistemas, veikiančias tarp 0-24 V, esant srovės diapazonui 0-1A, turint omenyje saulės baterijos specifikaciją. Tačiau supratę grandinės veikimą, galite lengvai išplėsti diapazoną. Pagrindinis grandinės principas yra išmatuoti apkrovos ir srovės įtampą, kad būtų apskaičiuota jos suvartojama energija. Visos išmatuotos vertės bus rodomos 16 * 2 raidiniame skaitmeniniame LCD.
Toliau padalinkime grandinę į mažus segmentus, kad galėtume gauti aiškų vaizdą apie tai, kaip grandinė veikia.
Matavimo vienetas
Matavimo vienetas susideda iš potencialų daliklio, kuris padės mums išmatuoti įtampą, ir naudojamas uždarytas rezistorius su neinvertuojančiu op-amp, kuris padeda mums matuoti srovę per grandinę. Potencialo daliklio dalis iš minėtos grandinės yra parodyta žemiau
Čia įvesties įtampą rodo Vcc, kaip sakyta anksčiau, mes projektuojame grandinę įtampos diapazonui nuo 0V iki 24V. Tačiau toks mikrovaldiklis kaip „Arduino“ negali išmatuoti tokių didelių įtampos verčių; jis gali matuoti tik įtampą nuo 0-5V. Taigi turime atvaizduoti (konvertuoti) įtampos diapazoną nuo 0-24V iki 0-5V. Tai galima lengvai padaryti naudojant potencialų skirstytuvo grandinę, kaip parodyta žemiau. Rezistorius 10k ir 2.2k kartu sudaro potencialo daliklio grandinę. Potencialo daliklio išėjimo įtampą galima apskaičiuoti naudojant toliau pateiktas formules. Tą patį reikia naudoti norint nuspręsti jūsų rezistorių vertę. Galite iš naujo apskaičiuoti grandinę naudodami mūsų internetinę skaičiuoklę, kad apskaičiuotumėte rezistoriaus vertę.
Vout = (Vin × R2) / (R1 + R2)
Susietą 0–5 V galima gauti iš vidurinės dalies, pažymėtos kaip įtampa. Vėliau šią susietą įtampą galima tiekti į „Arduino Analog“ kaištį.
Tada mes turime matuoti srovę per LOAD. Kaip žinome, mikrovaldikliai gali nuskaityti tik analoginę įtampą, todėl turime kažkaip konvertuoti srovės vertę į įtampą. Tai galima padaryti paprasčiausiai pridedant rezistorių (šunto rezistorių) kelyje, kuris pagal Ohmo dėsnį sumažins įtampos vertę, proporcingą pro jį tekančiai srovei. Šio įtampos kritimo vertė bus labai mažesnė, todėl mes naudojame op-amp, kad ją sustiprintume. To paties grandinė parodyta žemiau
Čia šunto rezistoriaus (SR1) vertė yra 0,22 omai. Kaip minėta anksčiau, mes projektuojame grandinę 0-1A, todėl, remdamiesi omo įstatymu, galime apskaičiuoti įtampos kritimą šiame rezistoriuje, kuris bus maždaug 0,2 V, kai per apkrovą eina didžiausia 1A srovė. Ši įtampa yra labai maža, kad būtų galima nuskaityti mikrovaldiklį. Mes naudojame „Op-Amp“ neveikiančio stiprintuvo režime, kad įtampa padidėtų nuo 0,2 V iki aukštesnio lygio, kad „Arduino“ galėtų skaityti.
„Op-Amp“ neveikimo režime rodomas aukščiau. Stiprintuvas suprojektuotas taip, kad padidėtų 21, taigi 0,2 * 21 = 4,2 V. Formulės, skirtos apskaičiuoti „Op-amp“ stiprinimą, pateikiamos žemiau, taip pat galite naudoti šį internetinį padidinimo skaičiuoklį, kad gautumėte savo rezistoriaus vertę, jei pertvarkote grandinę.
Pelnas = Vout / Vin = 1 + (Rf / Rin)
Čia mūsų atveju Rf vertė yra 20k, o Rin vertė yra 1k, o tai suteikia mums milžinišką reikšmę 21. Tada Op-amp stiprintuvo įtampa yra suteikiama RC filtrui su rezistoriumi 1k ir kondensatoriumi filtruoti bet kokį sukeltą triukšmą. Galiausiai įtampa tiekiama į „Arduino“ analoginį kaištį.
Paskutinė matavimo vienete likusi dalis yra įtampos reguliatoriaus dalis. Kadangi suteiksime kintamą įėjimo įtampą, „Arduino“ ir „Op-amp“ veikimui reikalinga reguliuojama + 5 V įtampa. Šią reguliuojamą įtampą užtikrins 7805 įtampos reguliatorius. Išvestyje pridedamas kondensatorius, skirtas filtruoti triukšmą.
Skaičiavimo ir rodymo vienetas
Matavimo bloke suprojektavome grandinę, skirtą įtampos ir srovės parametrams paversti 0–5 V, kuriuos galima tiekti į „Arduino“ analoginius kaiščius. Dabar šioje grandinės dalyje mes sujungsime šiuos įtampos signalus su „Arduino“ ir taip pat susiesime 16 × 2 raidinį ir skaitmeninį ekraną su „Arduino“, kad galėtume peržiūrėti rezultatus. To paties grandinė parodyta žemiau
Kaip matote, įtampos kaištis yra prijungtas prie analoginio kaiščio A3, o dabartinis kaištis prijungtas prie analoginio kaiščio A4. Skystųjų kristalų ekranas maitinamas iš 7805 + 5 V įtampos ir yra prijungtas prie „Arduino“ skaitmeninių kaiščių, kad veiktų 4 bitų režimu. Mes taip pat naudojome potenciometrą (10 k), prijungtą prie „Con“ kaiščio, kad pakeistumėte LCD kontrastą.
„Arduino“ programavimas
Dabar, kai gerai suprantame aparatinę įrangą, atidarykime „Arduino“ ir pradėkime programuoti. Kodo paskirtis yra nuskaityti analoginę įtampą A3 ir A4 kaiščiuose, apskaičiuoti įtampos, srovės ir galios vertę ir galiausiai parodyti ją LCD ekrane. Visa programa, atliekanti tą patį, pateikiama puslapio pabaigoje, kuri gali būti naudojama pirmiau aptartai aparatinei įrangai. Toliau kodas suskaidomas į mažus fragmentus ir paaiškinamas.
Kaip ir visos programos, nuo kurių pradedame, apibrėždami mūsų naudojamus kaiščius. Išvesties projekte A3 ir A4 kaiščiai naudojami atitinkamai įtampai ir srovei matuoti, o skaitmeniniai kaiščiai 3,4,8,9,10 ir 11 naudojami LCD sąsajai su „Arduino“
int Skaityti_įtampa = A3; int Skaityti_Srovė = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Nurodykite LCD jungties PIN kodą „ LiquidCrystal lcd“ (rs, en, d4, d5, d6, d7);
Mes taip pat įtraukėme antraštės failą, vadinamą skystaisiais kristalais, kad sąsaja būtų LCD su „Arduino“. Tada sąrankos funkcijos metu mes inicijuojame LCD ekraną ir rodome įvadinį tekstą kaip „Arduino Wattmeter“ ir palaukiame dvi sekundes, kol jį išvalysite. To paties kodas parodytas žemiau.
negaliojanti sąranka () { lcd.begin (16, 2); // Pradėkite 16 * 2 LCD lcd.print („Arduino Wattmeter“); // Įvadinė pranešimų eilutė 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro Message line 2 delay (2000); lcd.clear (); }
Pagrindinės kilpos funkcijos viduje mes naudojame analoginio skaitymo funkciją, norėdami nuskaityti įtampos vertę iš kaiščių A3 ir A4. Kaip žinome „Arduino ADC“ išvesties vertę nuo 0 iki 1203, nes ji turi 10 bitų ADC. Tada šią vertę reikia konvertuoti į 0–5 V, kurią galima padaryti padauginus iš (5/1023). Tada vėl anksčiau aparatinėje įrangoje mes nustatėme tikrąją įtampos vertę nuo 0-24V iki 0-5V ir faktinę dabartinės formos vertę nuo 0-1A iki 0-5V. Taigi dabar turime naudoti daugiklį, kad šios vertės būtų grąžintos į faktinę vertę. Tai galima padaryti padauginus iš daugiklio vertės. Daugiklio reikšmę galima teoriškai apskaičiuoti naudojant aparatūros skyriuje pateiktas formules, arba jei turite žinomą įtampos ir srovės verčių rinkinį, galite praktiškai apskaičiuoti.Aš laikiausi pastarojo varianto, nes jis būna tikslesnis realiuoju laiku. Taigi čia daugiklių reikšmė yra 6,46 ir 0,239. Taigi kodas atrodo žemiau
plūduriuoti Įtampa_Vertė = analogRead (Skaityti_įtampa); plūduriuojantis Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5,0 / 1023,0) * 6,46; Dabartinė_Vertė = Dabartinė_Vertė * (5,0 / 1023,0) * 0,239;
Kaip matuoti tiksliau?
Aukščiau pateiktas faktinės įtampos ir srovės vertės apskaičiavimo būdas veiks puikiai. Tačiau kenčia nuo vieno trūkumo, ty santykis tarp išmatuotos ADC įtampos ir faktinės įtampos nebus tiesinis, todėl vienas daugiklis neduos labai tikslių rezultatų, tas pats taikoma ir srovei.
Taigi, norėdami pagerinti tikslumą, mes galime suskaičiuoti išmatuotų ADC verčių su faktiniais vožtuvais rinkinį naudodami žinomą verčių rinkinį ir tada naudoti tuos duomenis grafikui brėžti ir gauti daugiklio lygtį naudodami tiesinės regresijos metodą. Galite kreiptis į „Arduino dB“ skaitiklį, kuriame naudojau panašų metodą.
Galiausiai, apskaičiavę faktinės įtampos ir faktinės srovės per apkrovą vertę, galime apskaičiuoti galią pagal formules (P = V * I). Tada, naudodamiesi toliau pateiktu kodu, LCD ekrane rodome visas tris vertes.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Įtampa_Vertė); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); plūduriuojantis galios_įvertis = įtampos_vertė * Dabartinis_įvertis; lcd.setCursor (0, 1); lcd.print ("Galia ="); lcd.print („Power_Value“);
Darbas ir testavimas
Pamokos labui aš panaudojau perf plokštę, kad lituočiau visus komponentus, kaip parodyta grandinėje. Aš naudoju „Phoenix“ varžto gnybtą, kad galėčiau prijungti apkrovą ir įprastą nuolatinės srovės vamzdžio lizdą, kad prijungčiau savo energijos šaltinį. „Arduino Nano“ plokštė ir skystųjų kristalų ekranas yra sumontuoti ant „Female Bergstik“, kad vėliau prireikus juos būtų galima naudoti iš naujo.
Pasirengę aparatinę įrangą, įkelkite „Arduino“ kodą į savo „Nano“ plokštę. Norėdami reguliuoti skystųjų kristalų ekrano kontrasto lygį, reguliuokite žoliapjovės puodą, kol pamatysite aiškų įvadinį tekstą. Norėdami išbandyti plokštę, prijunkite apkrovą prie varžto gnybto jungties, o šaltinį - prie vamzdžio lizdo. Šaltinio įtampa turėtų būti didesnė nei 6 V, kad šis projektas veiktų, nes „Arduino“ veikimui reikalinga + 5 V įtampa. JEI viskas veikia gerai, pirmojoje LCD ekrano eilutėje turėtumėte pamatyti įtampos per apkrovą vertę ir srovę per ją, o antrajame LCD ekrane rodomą apskaičiuotą galią, kaip parodyta žemiau.
Smagus dalykas kuriant kažką slypi bandymuose, siekiant patikrinti, ar jis veiks tinkamai. Norėdami tai padaryti, aš naudojau 12 V automobilių indikatorių burbulus kaip apkrovą ir RPS kaip šaltinį. Kadangi pats RPS gali matuoti ir rodyti srovės ir įtampos vertę, mums bus lengva patikrinti savo grandinės tikslumą ir veikimą. Taip, aš taip pat naudojau savo RPS, kad kalibruočiau savo daugiklio vertę, kad priartėčiau prie tikslios vertės.
Visą darbą galite rasti vaizdo įraše, pateiktame šio puslapio pabaigoje. Tikiuosi, kad supratote grandinę ir programą ir sužinojote ką nors naudingo. Jei turite kokių nors problemų, kad tai veiktų, paskelbkite ją žemiau esančiame komentarų skyriuje arba parašykite mūsų forumuose, kad gautumėte daugiau techninės pagalbos.
Šis „ Arduino“ pagrįstas „Wattmeter“ projektas turi daug daugiau atnaujinimų, kuriuos galima pridėti, kad padidėtų automatinio duomenų kaupimo, grafiko braižymo, pranešimo apie įtampą ar dabartines situacijas ir kt. Našumas. Taigi būkite įdomus ir praneškite man, kam tai naudosite.