- ADC0804 ir Raspberry Pi:
- LM35 temperatūros jutiklis:
- Būtini komponentai:
- Grandinės ir darbo paaiškinimas:
- Programavimo paaiškinimas:
Savo „Raspberry Pi Tutorial“ serijoje dažniausiai apėmėme visus pagrindinius komponentus, sąveikaujančius su „Raspberry Pi“. Mes visas instrukcijas apžvelgėme paprastai ir išsamiai, kad visi, nesvarbu, ar jis dirbo su „Raspberry Pi“, ar ne, galėtų lengvai išmokti iš šios serijos. Perėję visas pamokas, galėsite sukurti keletą aukšto lygio projektų naudodami „Raspberry Pi“.
Taigi čia mes kuriame pirmąją programą, remdamiesi ankstesnėmis pamokomis. Pirmoji pagrindinė programa yra „Raspberry Pi“ skaityklos temperatūra. Ir jūs galite stebėti rodmenis kompiuteryje.
Kaip aptarta ankstesnėse mokymo programose, „Raspberry Pi“ viduje nėra ADC kanalų. Taigi, jei norime susieti bet kokius analoginius jutiklius, mums reikia ADC konversijos bloko. Vienoje iš mūsų pamokų mes turime „Interfaced ADC0804“ lustą su „Raspberry Pi“, kad galėtume nuskaityti analoginę vertę. Taigi eikite pro jį prieš pastatydami šį kambario temperatūros termometrą.
ADC0804 ir Raspberry Pi:
ADC0804 yra lustas, skirtas konvertuoti analoginį signalą į 8 bitų skaitmeninius duomenis. Šis lustas yra viena iš populiariausių ADC serijų. Tai yra 8 bitų konversijos vienetas, todėl turime reikšmes arba nuo 0 iki 255 reikšmių. Šios mikroschemos skiriamoji geba keičiasi pagal mūsų pasirinktą etaloninę įtampą, apie tai pakalbėsime vėliau. Žemiau yra ADC0804 Pinout:
Dabar dar vienas svarbus dalykas yra tai, kad ADC0804 veikia esant 5 V įtampai, taigi jis teikia išėjimą 5 V loginiu signalu. 8 kontaktų išvestyje (reprezentuojančioje 8 bitus) kiekvienas kaištis teikia + 5 V išvestį, kad atspindėtų logiką'1 '. Taigi problema yra ta, kad PI logika yra + 3,3 V, todėl jūs negalite suteikti + 5 V logikos PI + 3,3 V GPIO kaiščiui. Jei duosite + 5 V bet kuriam PI GPIO kaiščiui, plokštė bus pažeista.
Taigi, norėdami sumažinti loginį lygį nuo + 5 V, naudosime įtampos skirstytuvo grandinę. Aptarėme įtampos skirstytuvo grandinę, prieš tai ieškodami tolesnio paaiškinimo. Ką mes padarysime, mes naudojame du rezistorius, kad + 5 V logika būtų padalinta į 2 * 2,5 V logiką. Taigi po padalijimo suteiksime PI 2,5v logiką. Taigi, kai logiką „1“ pateikia ADC0804, PI GPIO kaište pamatysime + 2,5 V, o ne + 5 V.
LM35 temperatūros jutiklis:
Dabar, norint skaityti kambario temperatūrą, reikia jutiklio. Čia mes ketiname naudoti LM35 temperatūros jutiklį. Temperatūra paprastai matuojama „Centigrade“ arba „Fahrenheit“. Jutiklis „LM35“ pateikia Celsijaus laipsnius.
Kaip parodyta paveiksle, LM35 yra trijų kontaktų tranzistorius panašus įtaisas. Smeigtukai sunumeruoti taip, PIN1 = Vcc - maitinimas (prijungtas prie + 5 V)
PIN2 = signalas arba išvestis (prijungtas prie ADC lusto)
PIN3 = žemė (prijungta prie žemės)
Šis jutiklis suteikia kintamą įtampą išėjime, atsižvelgiant į temperatūrą. Kiekvienam +1 ° C pakilus temperatūrai, išvesties kaište bus + 10 mV didesnė įtampa. Taigi, jei temperatūra yra 0 ° C, jutiklio galia bus 0 V, jei temperatūra yra 10 ° C, jutiklio galia bus + 100 mV, jei temperatūra yra 25 ° C, jutiklio galia bus + 250 mV.
Būtini komponentai:
Čia mes naudojame „ Raspberry Pi 2 Model B“ su „Raspbian Jessie OS“. Visi pagrindiniai aparatūros ir programinės įrangos reikalavimai buvo aptarti anksčiau, jų galite rasti „Raspberry Pi“ įvade, išskyrus mums reikalingą:
- Jungiamieji kaiščiai
- 1KΩ rezistorius (17 vnt.)
- 10K puodas
- 0,1µF kondensatorius
- 100µF kondensatorius
- 1000µF kondensatorius
- ADC0804 IC
- LM35 temperatūros jutiklis
- Bandomoji Lenta
Grandinės ir darbo paaiškinimas:
Ryšiai, kurie atliekami prijungiant avietę prie ADC0804 ir LM35, parodyti toliau pateiktoje grandinės schemoje.
LM35 išėjime yra daug įtampos svyravimų; taigi išvesties išlyginimui naudojamas 100uF kondensatorius, kaip parodyta paveikslėlyje.
ADC visada turi daug triukšmo, šis triukšmas gali labai paveikti našumą, todėl triukšmo filtravimui naudojame 0,1uF kondensatorių. Be to bus daug svyravimų išėjime.
Lustas veikia su RC (rezistoriaus-kondensatoriaus) osciliatoriaus laikrodžiu. Kaip parodyta schemoje , C2 ir R20 sudaro laikrodį. Svarbu atsiminti, kad kondensatorius C2 gali būti pakeistas į mažesnę vertę, kad būtų pasiektas didesnis ADC konversijos greitis. Tačiau važiuojant didesniu greičiu sumažės tikslumas. Taigi, jei programai reikalingas didesnis tikslumas, pasirinkite didesnės vertės kondensatorių, o didesniam greičiui - mažesnės vertės kondensatorių.
Kaip sakyta anksčiau, LM35 suteikia + 10 mV kiekvienam centigradui. Maksimali temperatūra, kurią galima išmatuoti LM35, yra 150 ° C. Taigi prie LM35 išvesties terminalo turėsime ne daugiau kaip 1,5 V įtampą. Bet numatytoji etaloninė įtampa ADC0804 yra + 5 V. Taigi, jei mes naudosime tą atskaitos vertę, išvesties skiriamoji geba bus maža, nes mes naudojame daugiausia (5 / 1,5) 34% skaitmeninio išvesties diapazono.
Laimei, ADC0804 turi reguliuojamą „Vref“ kaištį (PIN9), kaip parodyta viršuje. Taigi mes nustatyti VREF lusto iki + 2V. Norėdami nustatyti „Vref + 2V“, PIN9 atveju turime pateikti + 1 V įtampą (VREF / 2). Čia mes naudojame 10K puodą, kad nustatytume PIN9 įtampą iki + 1V. Norėdami gauti tikslią įtampą, naudokite voltmetrą.
Anksčiau mes naudojome „LM35“ temperatūros jutiklį kambario temperatūrai nuskaityti naudodami „Arduino“ ir „AVR“ mikrovaldiklį. Taip pat patikrinkite drėgmės ir temperatūros matavimą naudodami „Arduino“
Programavimo paaiškinimas:
Kai viskas bus prijungta pagal grandinės schemą, mes galime įjungti PI, kad programa būtų parašyta PYHTON.
Mes kalbėsime apie keletą komandų, kurias ketiname naudoti PYHTON programoje, Mes ketiname importuoti GPIO failą iš bibliotekos, žemiau pateikta funkcija leidžia mums užprogramuoti PI GPIO kaiščius. Mes taip pat pervadiname „GPIO“ į „IO“, todėl programoje, kai norime nurodyti GPIO kaiščius, naudosime žodį „IO“.
importuoti RPi.GPIO kaip IO
Kartais, kai GPIO kaiščiai, kuriuos bandome naudoti, gali atlikti kitas funkcijas. Tokiu atveju vykdydami programą gausime įspėjimus. Žemiau komanda liepia PI nepaisyti įspėjimų ir tęsti programą.
IO.setwarnings (False)
Mes galime nurodyti PI GPIO kaiščius pagal PIN kodą laive arba pagal jų funkcijos numerį. Kaip lentoje esantis „PIN 29“ yra „GPIO5“. Taigi mes sakome, kad čia mes smeigtuką atvaizduosime „29“ arba „5“.
IO.setmode (IO.BCM)
Mes nustatome 8 kaiščius kaip įvesties kaiščius. Pagal šiuos kaiščius aptiksime 8 bitų ADC duomenis.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Jei sąlyga breketuose yra teisinga, sakiniai ciklo viduje bus vykdomi vieną kartą. Taigi, jei GPIO kaištis 19 eis aukštai, tada IF kilpos teiginiai bus vykdomi vieną kartą. Jei GPIO 19 kaištis nebus aukštas, teiginiai, esantys IF kilpos viduje, nebus vykdomi.
jei (IO.input (19) == Tiesa):
Žemiau komanda naudojama kaip amžinai kilpa, su šia komanda šios kilpos teiginiai bus vykdomi nuolat.
Nors 1:
Kodo paaiškinimas pateiktas žemiau esančiame Kodo skyriuje.
Parašius programą, laikas ją vykdyti. Prieš vykdant programą, leidžia pokalbius, kas vyksta grandinėje, kaip santrauką. Pirmasis „LM35“ jutiklis nustato kambario temperatūrą ir išėjime pateikia analoginę įtampą. Ši kintama įtampa nurodo temperatūrą tiesiškai + 10 mV / ºC. Šis signalas tiekiamas į ADC0804 lustą, šis lustas paverčia analoginę vertę skaitmenine reikšme su 255/200 = 1,275 skaičiumi per 10 mv arba 1,275 skaičiumi už 1 laipsnį. Šį skaičių ima PI GPIO. Programa paverčia skaičių į temperatūros vertę ir parodo ją ekrane. Tipinė PI nuskaityta temperatūra parodyta žemiau, Taigi mes šį „ Raspberry Pi“ temperatūros matuoklį.