Šiame projekte mes naudojame ADC („Analog to Digital Conversion“) sąvoką ARDUINO UNO. Norėdami išmatuoti magneto lauko stiprumą, naudosime „ Hall Effect“ jutiklį ir „ Arduino uno“. Jutiklis, kurį mes čia naudojome, yra UGN3503U. Tai yra salės jutiklis, kuris pajunta magnetinio lauko stiprumą ir išėjimo metu suteikia kintančią įtampą, proporcingą lauko stiprumui. Šis jutiklis paima lauko stiprumą „ GAUSS “ vienetais.
Taigi naudodami šį jutiklį lauko stipris turės skirtingą įtampą. Naudodami ADC funkciją, mes šią įtampą paversime skaičiumi. Šis skaičius nurodo lauko stiprumą ir rodomas LCD ekrane.
„Arduino“ turi šešis ADC kanalus. Tuose bet kuris arba visi iš jų gali būti naudojami kaip analoginės įtampos įėjimai. UNO ADC skiriamoji geba yra 10 bitų (taigi sveikųjų skaičių reikšmės nuo (0- (2 ^ 10) 1023)). Tai reiškia, kad jis įves įtampą nuo 0 iki 5 voltų į sveikas skaičius nuo 0 iki 1023. Taigi kiekvienam (5/1024 = 4,9 mV) vienetui.
Visa tai mes prijungsime potenciometrą arba puodą prie „A0“ kanalo ir parodysime ADC rezultatą paprastame ekrane. Paprasti ekranai yra 16x1 ir 16x2 ekranai. 16x1 ekranas sudarys 16 simbolių ir bus vienoje eilutėje. 16x2 turės 32 simbolių iš viso 16in 1 -osios linijos ir dar 16 2 -osios linijos. Čia reikia suprasti, kad kiekviename simbolyje yra 5x10 = 50 pikselių, todėl norint parodyti vieną simbolį, visi 50 pikselių turi veikti kartu, tačiau mes neturime dėl to jaudintis, nes ekrane yra kitas valdiklis (HD44780), kuris atlieka pikselių valdymo darbas (jį galite pamatyti LCD ekrane, tai yra juoda akis gale).
Būtini komponentai
Aparatūra: ARDUINO UNO, maitinimo šaltinis (5v), JHD_162ALCD (16x2LCD), 100uF kondensatorius (2vnt), UGn3503U.
Programinė įranga: „ arduino IDE“ (naktinis „Arduino“)
Grandinės schema ir paaiškinimas
Aukščiau pateiktame paveikslėlyje parodyta magnetinio lauko matavimo naudojant „Arduino uno“ schema.
16x2 LCD ekrane yra 16 kontaktų, jei yra užpakalinė lemputė, jei nėra užpakalinės šviesos, bus 14 kontaktų. Galima maitinti arba palikti galinio apšvietimo kaiščius. Dabar 14 kaiščių yra 8 duomenų kaiščiai (7-14 arba D0-D7), 2 elektros tiekimo kaiščių (1 & 2 arba Vss & VDD arba GND & + 5V), 3 -oji kaištis kontrasto valdymas (V formos,-kontroliuoja, kaip storio simboliai turėtų būti parodyta) ir 3 valdymo kaiščius (RS & RW & E).
Aukščiau esančioje grandinėje galite pastebėti, kad paėmiau tik du valdymo kaiščius, kontrasto bitai ir READ / WRITE nėra dažnai naudojami, todėl juos galima sutrumpinti. Tai padidina LCD kontrasto ir skaitymo režimą. Mes tiesiog turime valdyti ENABLE ir RS smeigtukus, kad galėtume atitinkamai siųsti simbolius ir duomenis.
LCD jungtys pateikiamos žemiau:
PIN1 arba VSS į žemę
PIN2 arba VDD arba VCC iki + 5v maitinimo
PIN3 arba VEE į žemę (suteikia maksimalų kontrastą pradedantiesiems)
PIN4 arba RS („Register Selection“) į „ARDUINO UNO“ PIN8
PIN5 arba RW (skaitymas / rašymas) į žemę (įjungus skystųjų kristalų ekraną skaitymo režimu, palengvinamas ryšys vartotojui)
„ARDUINO UNO“ PIN6 arba E (įgalinti) PIN9
„ARDUINO UNO“ PIN11 arba D4 – PIN10
„ARDUINO UNO“ PIN12 arba D5 – PIN11
„ARDUINO UNO“ PIN13 arba D6 – PIN12
„ARDUINO UNO“ PIN14 arba D7 – PIN13
„ARDUINO IDE“ leidžia vartotojui naudoti LCD ekraną 4 bitų režimu. Šio tipo ryšys leidžia vartotojui sumažinti kaiščių naudojimą „ARDUINO“, skirtingai nei kiti, „ARDUINO“ nereikia programuoti atskirai, norint jį naudoti „4 it“ režimu, nes pagal numatytuosius nustatymus „ARDUINO“ yra nustatytas palaikyti ryšį 4 bitų režimu. Grandinėje matote, kad mes naudojome 4 bitų ryšį (D4-D7). Taigi vien nuo stebėjimo iš viršaus lentelės sujungiame 6 LCD kaiščius su valdikliu, kuriame 4 kaiščiai yra duomenų kaiščiai ir 2 valdikliai.
Dirba
Norėdami susieti LCD ekraną su ARDUINO UNO, turime žinoti keletą dalykų.
|
Pirmiausia UNO ADC kanalų numatytoji atskaitos vertė yra 5 V. Tai reiškia, kad ADC konversijai bet kuriame įėjimo kanale galime suteikti maksimalią įėjimo įtampą 5 V. Kadangi kai kurie jutikliai teikia 0–2,5 V įtampą, naudojant 5 V atskaitos tašką gauname mažesnį tikslumą, todėl turime instrukciją, leidžiančią pakeisti šią atskaitos vertę. Taigi norėdami pakeisti pamatinę vertę („analogReference ();“)
Pagal numatytuosius nustatymus gauname didžiausią plokštės ADC skiriamąją gebą, kuri yra 10 bitų, šią skiriamąją gebą galima pakeisti naudojant instrukcijas („analogReadResolution (bits);“). Kai kuriais atvejais šis rezoliucijos pakeitimas gali būti naudingas.
Dabar, jei pirmiau nurodytos sąlygos yra nustatytos pagal numatytuosius nustatymus, mes galime nuskaityti „0“ kanalo ADC reikšmę tiesiogiai iškviesdami funkciją „analogRead (pin);“, čia „pin“ reiškia kaištį, kuriame prijungėme analoginį signalą, šiuo atveju tai būtų būti „A0“. Vertę iš ADC galima paimti į sveiką skaičių kaip „int ADCVALUE = analogRead (A0); “, Pagal šią instrukciją vertė po ADC įrašoma į skaičių„ ADCVALUE “.
DABAR pakalbėkime šiek tiek apie 16x2 LCD ekraną. Pirmiausia turime įgalinti antraštės failą ('#include
Antra, lentai turime pasakyti, kokio tipo LCD mes čia naudojame. Kadangi mes turime tiek daug skirtingų tipų LCD (pvz., 20x4, 16x2, 16x1 ir kt.). Čia mes sujungsime 16x2 LCD ekraną su UNO, kad gautume "lcd.begin (16, 2);". Už 16x1 gauname „lcd.begin (16, 1);“.
Šioje instrukcijoje mes lentai pasakysime, kur mes sujungėme kaiščius. Sujungti kaiščiai turi būti vaizduojami taip: „RS, En, D4, D5, D6, D7“. Šie kaiščiai turi būti teisingai pavaizduoti. Kadangi mes prijungėme RS prie PIN0 ir pan., Kaip parodyta grandinės schemoje, lentos PIN kodą nurodome kaip „LiquidCrystal lcd (0, 1, 8, 9, 10, 11);“.
Po to, kai liko tik siųsti duomenis, LCD ekrane rodomi duomenys turėtų būti užrašyti „cd.print („ labas, pasauli! “);“. Su šia komanda LCD ekrane rodoma „labas, pasauli!“. Kaip matote, mums nereikia jaudintis dėl nieko kito, mes tiesiog turime inicijuoti ir UNO bus pasirengusi rodyti duomenis. Mes neprivalome rašyti programos ciklo, norėdami čia siųsti BYTE by BYTE duomenis.
Kai magnetas priartėja prie jutiklio, jutiklis atspindi išėjimo įtampą, proporcingą laukui, Uno ima šią vertę ir parodo LCD. Šio magnetinio lauko matavimo projekto veikimas toliau paaiškinamas žemiau esančiu C kodu.