- Būtini komponentai
- Skaičiuojant dažnį ir induktyvumą
- Grandinės schema ir paaiškinimas
- Programavimo paaiškinimas
Visi įterptieji mėgėjai žino multimetrą, kuris yra puikus įrankis įtampai, srovei, varžai ir pan. Tačiau kartais reikia išmatuoti induktyvumą ir talpą, o tai neįmanoma naudojant įprastą multimetrą. Yra keletas specialių multimetrų, kurie gali išmatuoti induktyvumą ir talpą, tačiau jie yra brangūs. Mes jau sukūrėme dažnio matuoklį, talpos matuoklį ir atsparumo matuoklį naudodami „Arduino“. Taigi šiandien mes pagaminsime „ Inductance LC Meter“ naudodami „Arduino“. Šiame projekte mes parodysime induktyvumo ir talpos vertes bei dažnį per 16x2 LCD ekraną. Grandinėje yra mygtukas, skirtas perjungti tarp talpos ir induktyvumo rodmenų.
Būtini komponentai
- Arduino Uno
- 741 „Opamp IC“
- 3v baterija
- 100 omų rezistorius
- Kondensatoriai
- Induktoriai
- 1n4007 diodas
- 10k rezistorius
- 10 tūkst. Puodo
- Maitinimo šaltinis
- Paspauskite mygtuką
- Breadboard arba PCB
- Jungiamieji laidai
Skaičiuojant dažnį ir induktyvumą
Šiame projekte mes matuosime induktyvumą ir talpą, lygiagrečiai naudodami LC grandinę. Ši grandinė yra tarsi žiedas ar varpas, kurie pradeda rezonuoti tam tikru dažniu. Kai pritaikysime impulsą, ši LC grandinė pradės rezonuoti ir šis rezonanso dažnis yra analogo (sinusinės bangos) formos, todėl turime jį konvertuoti į kvadrato bangą. Norėdami tai padaryti, taikome šį analoginį rezonanso dažnį opampui (mūsų atveju 741), kuris pavers jį kvadrato banga (dažniu) esant 50% darbo ciklo. Dabar mes išmatuojame dažnį naudodami „Arduino“ ir naudodami tam tikrą matematinį skaičiavimą galime rasti induktyvumą arba talpą. Mes panaudojome pateiktą LC grandinės dažnio atsako formulę.
f = 1 / (2 * laikas)
kur laikas yra pulseIn () funkcijos išvestis
dabar mes turime LC grandinės dažnį:
f = 1/2 * Pi * kvadratinė šaknis (LC)
mes galime tai išspręsti, kad gautume induktyvumą:
f 2 = 1 / (4Pi 2 LC) L = 1 / (4Pi 2 f 2 C) L = 1 / (4 * Pi * Pi * f * f * C)
Kaip jau minėjome, mūsų banga yra sinusinė banga, todėl ji turi tą patį laiko periodą tiek teigiama, tiek neigiama amplitudė. Tai reiškia, kad palyginamasis pavers ją kvadratine banga, kurios darbo ciklas yra 50%. Kad mes galėtume jį išmatuoti, naudodami „Arduino“ funkciją pulseIn () . Ši funkcija suteiks mums laiko periodą, kurį lengvai paversdamas dažniu, apversdamas laikotarpį. Kadangi „ pulseIn“ funkcija matuoja tik vieną impulsą, todėl dabar, norėdami gauti teisingą dažnį, turime jį padauginti iš 2. Dabar mes turime dažnį, kurį galima paversti induktyvumu naudojant aukščiau pateiktą formulę.
Pastaba: matuojant induktyvumą (L1), kondensatoriaus (C1) vertė turėtų būti 0,1uF, o matuojant talpą (C1), induktoriaus (L1) vertė turėtų būti 10mH.
Grandinės schema ir paaiškinimas
Šioje LC skaitiklio grandinės schemoje projekto operacijai valdyti naudojome „Arduino“. Tuo mes panaudojome LC grandinę. Šią LC grandinę sudaro induktorius ir kondensatorius. Norėdami konvertuoti sinusoidinį rezonanso dažnį į skaitmeninį arba kvadratinį bangą, mes naudojome operacinį stiprintuvą, būtent 741. Čia turime pritaikyti neigiamą tiekimą op-amp, kad gautume tikslų išėjimo dažnį. Taigi mes naudojome 3v bateriją, sujungtą atvirkštiniu poliškumu, tai reiškia, kad 741 neigiamas kaištis yra prijungtas prie neigiamo akumuliatoriaus gnybto, o teigiamas akumuliatoriaus kaištis yra prijungtas prie likusios grandinės žemės. Norėdami gauti daugiau paaiškinimų, žr. Toliau pateiktą grandinės schemą.
Čia mes turime mygtuką, norėdami pakeisti veikimo režimą, nesvarbu, ar mes matuojame induktyvumą, ar talpą. 16x2 skystųjų kristalų ekranas naudojamas rodyti induktyvumą ar talpą LC grandinės dažniu. LCD ryškumui reguliuoti naudojamas 10 000 puodas. Grandinė maitinama naudojant „Arduino 5v“ maitinimo šaltinį, o „Arduino“ galime maitinti 5v įtampa naudodami USB arba 12v adapterį.
Programavimo paaiškinimas
Šio „ LC Meter“ projekto programavimo dalis yra labai lengva. Pilnas „Arduino“ kodas pateikiamas šio straipsnio pabaigoje.
Pirmiausia turime įtraukti LCD biblioteką ir deklaruoti kai kuriuos kaiščius ir makrokomandas.
# įtraukti
Po to, sąrankos funkcijoje, mes pradėjome LCD ir nuoseklųjį ryšį, kad matuotosios vertės būtų rodomos per LCD ir nuoseklųjį monitorių.
negaliojanti sąranka () { #ifdef serial Serial.begin (9600); endif lcd.begin (16, 2); pinMode (freqIn, INPUT); pinMode (įkrovimas, OUTPUT); pinMode (režimas, INPUT_PULLUP); lcd.print ("LC matuoklio naudojimas"); lcd.setCursor (0, 1); lcd.print („Arduino“); vėlavimas (2000); lcd.clear (); lcd.print („Grandinės santrauka“); vėlavimas (2000); }
Tada naudodamiesi ciklo funkcija, naudokite fiksuoto laikotarpio impulsą LC grandinei, kuri įkraus LC grandinę. Pašalinus impulsą LC grandinė pradeda rezonuoti. Tada mes perskaitėme jo kvadratinių bangų konversiją, gaunamą iš op-amp, naudodami funkciją pulseIn () ir konvertuojame ją padauginę iš 2. Čia mes taip pat paėmėme keletą pavyzdžių. Taip apskaičiuojamas dažnis:
void loop () { for (int i = 0; i
Gavę dažnio vertę, mes juos pavertėme induktyvumu, naudodami nurodytą kodo dalį
talpa = 0,1E-6; induktyvumas = (1. / (talpa * dažnis * dažnis * 4. * 3.14159 * 3.14159)) * 1.E6; #ifdef nuoseklus Serial.print („Ind:“); if (induktyvumas> = 1000) { Serial.print (induktyvumas / 1000); Serial.println ("mH"); } else { Serial.print (induktyvumas); Serial.println ("uH"); } Endif lcd.setCursor (0, 1); lcd.print ("Ind:"); if (induktyvumas> = 1000) { lcd.print (induktyvumas / 1000); lcd.print ("mH"); } else { lcd.print (induktyvumas); lcd.print ("uH"); } }
Naudodami nurodytą kodą, mes apskaičiavome talpą.
if (Bit.flag) { induktyvumas = 1.E-3; talpa = ((1. / (induktyvumas * dažnis * dažnis * 4. * 3.14159 * 3.14159)) * 1.E9); jei ((int) talpa <0) talpa = 0; #ifdef nuoseklus „ Serial.print“ („Talpa:“); Nuoseklus spausdinimas (talpa, 6); Serial.println ("uF"); endif lcd.setCursor (0, 1); lcd.print ("Dangtelis:"); jei (talpa> 47) { lcd.print ((talpa / 1000)); lcd.print ("uF"); } else { lcd.print (talpa); lcd.print ("nF"); } }
Taigi , naudodami „Arduino“, apskaičiavome dažnį, talpą ir induktyvumą ir rodėme juos 16x2 LCD ekrane.