- Reikalingi komponentai:
- „Arduino“ voltmetro grandinės schema:
- „Arduino“ kintamosios srovės įtampos matuoklio darbas:
- Modeliavimas:
- Kodo paaiškinimas:
Šiame projekte mes gaminsime kintamosios įtampos matavimo prietaisą naudodami „Arduino“, kuris matuos kintamosios srovės maitinimo įtampą mūsų namuose. Mes spausdinsime tą įtampą serijiniame „Arduino IDE“ monitoriuje ir parodysime ant multimetro.
Skaitmeninio voltmetro paruošimas yra daug lengvesnis nei analoginio, nes analoginio voltmetro atveju turite gerai žinoti fizinius parametrus, pvz., Sukimo momentą, trinties nuostolius ir pan., Tuo tarpu skaitmeninio voltmetro atveju galite tiesiog naudoti LCD arba LED matricą arba net nešiojamąjį kompiuterį (kaip šiuo atveju), kad atspausdintumėte įtampos vertes už jus. Štai keletas skaitmeninių voltmetrų projektų:
- Paprasta skaitmeninė voltmetro grandinė su PCB, naudojant ICL7107
- LM3914 voltmetro grandinė
- 0-25V skaitmeninis voltmetras naudojant AVR mikrovaldiklį
Reikalingi komponentai:
- Vienas 12-0-12 transformatorius
- 1N4007 diodas
- 1uf kondensatorius
- Rezistoriai 10k; 4,7 tūkst.
- „Zener“ diodas (5v)
- „Arduino UNO“
- Jungiamieji laidai
„Arduino“ voltmetro grandinės schema:
Šio „ Arduino“ voltmetro schema parodyta aukščiau.
Jungtys:
- Prijunkite transformatoriaus aukštos įtampos pusę (220 V) prie maitinimo tinklo, o žemą įtampą (12 V) - prie įtampos daliklio grandinės.
- Prijunkite 10k rezistorių nuosekliai su 4.7k rezistoriumi, tačiau įsitikinkite, kad įtampa yra 4,7k rezistoriaus įvestis.
- Prijunkite diodą, kaip parodyta.
- Prijunkite kondensatorių ir zenerio diodą per 4,7 k
- Prijunkite laidą iš diodo n-gnybto prie „Arduino“ analoginio kaiščio A0.
** Pastaba: Prijunkite „Arduino“ įžeminimo kaištį prie taško, kaip parodyta paveikslėlyje, arba grandinė neveiks.
Reikia įtampos daliklio grandinės?
Kai mes naudojame 220/12 V transformatorių, mes gauname 12 v iš lv pusės. Kadangi ši įtampa nėra tinkama kaip „Arduino“ įvestis, mums reikia įtampos daliklio grandinės, kuri galėtų suteikti tinkamą įtampos vertę kaip įvestį „Arduino“
Kodėl prijungtas diodas ir kondensatorius?
Kadangi „Arduino“ nenaudoja neigiamų įtampos verčių, pirmiausia reikia pašalinti neigiamą kintamosios srovės kintamosios srovės ciklą, kad „Arduino“ imtųsi tik teigiamos įtampos vertės. Taigi diodas yra prijungtas, norint ištaisyti žemesnę įtampą. Norėdami sužinoti daugiau apie ištaisymą, patikrinkite mūsų pusinės bangos lygintuvo ir visos bangos lygintuvo grandines.
Ši ištaisyta įtampa nėra lygi, nes joje yra didelių bangų, kurios negali mums suteikti tikslios analoginės vertės. Taigi kondensatorius yra prijungtas, kad išlygintų kintamosios srovės signalą.
„Zener“ diodo paskirtis?
„Arduino“ gali sugadinti, jei į jį tiekiama didesnė nei 5v įtampa. Taigi 5v zenerio diodas yra prijungtas, kad būtų užtikrintas „Arduino“ saugumas, kuris sugenda tuo atveju, jei ši įtampa viršytų 5v.
„Arduino“ kintamosios srovės įtampos matuoklio darbas:
1. Žemutinė įtampa gaunama transformatoriaus lv pusėje, kuri tinkama naudoti įprastuose galios rezistoriuose.
2. Tada gauname tinkamą įtampos vertę per 4,7k rezistorių
Maksimali įtampa, kurią galima išmatuoti, nustatoma imituojant šią grandinę ant proteuso (paaiškinta modeliavimo skyriuje).
3. „Arduino“ ima šią įtampą kaip įvestį iš kaiščio A0 kaip analogines vertes nuo 0 iki 1023.
4. Tada „Arduino“ konvertuoja šią analoginę vertę į atitinkamą tinklo kintamąją įtampą pagal formulę. (Paaiškinta kodo skyriuje).
Modeliavimas:
Tiksli grandinė daroma proteus ir tada imituojama. Norėdami sužinoti maksimalią įtampą, kurią ši grandinė gali išmatuoti smūgį, naudojamas bandymo metodas.
Nustatant didžiausią kintamosios srovės generatoriaus įtampą 440 (311 rms), nustatyta, kad A kaiščio įtampa yra 5 voltai, ty maksimali. Taigi ši grandinė gali išmatuoti maksimalią 311 efektinę įtampą.
Modeliavimas atliekamas esant įvairioms įtampoms nuo 220 iki 440v.
Kodo paaiškinimas:
Pilnas „ ArduinoVoltmeter“ kodas pateikiamas šio projekto pabaigoje ir jis yra gerai paaiškintas komentaruose. Čia mes paaiškiname keletą jo dalių.
m yra įvesties analoginė vertė, gauta ant kaiščio A0, t.
m = pinMode (A0, INPUT); // nustatykite kaištį a0 kaip įvesties kaištį
Norėdami priskirti kintamąjį n šiai formulei n = (m * . 304177), pirmiausia atliekami tam tikri skaičiavimai naudojant duomenis, gautus modeliavimo skyriuje:
Kaip matyti iš modeliavimo nuotraukos, 5v arba 1023 analoginė vertė gaunama kaiščiu A0, kai įėjimo kintama įtampa yra 311volt. Taigi:
Taigi bet kuri atsitiktinė analoginė reikšmė atitinka (311/1023) * m, kur m gaunama analoginė vertė.
Taigi mes pasiekiame šią formulę:
n = (311/1023) * m voltai arba n = (m *.304177)
Dabar ši įtampos reikšmė spausdinama ant nuoseklaus monitoriaus, naudojant nuosekliąsias komandas, kaip paaiškinta toliau. Taip pat rodomas multimetre, kaip parodyta žemiau esančiame vaizdo įraše.
Ekrane atspausdintos vertės:
Analoginės įvesties vertė, kaip nurodyta kode:
Serial.print („analoginė įvestis“); // tai suteikia pavadinimą, kuris yra „analoginis įvestis“ išspausdintai analoginei vertei „Serial.print“ (m); // tai tiesiog išspausdina įvesties analoginę vertę
Reikalinga kintama įtampa, kaip nurodyta kode:
Nuoseklus spausdinimas („kintamosios srovės įtampa“); // tai suteikia pavadinimą „kintamosios įtampos“ spausdinamai analoginei vertei Serial.print (n); // tai tiesiog atspausdina kintamosios įtampos vertę