- ADC0804 in Raspberry Pi:
- LM35 Temperaturni senzor:
- Potrebne komponente:
- Pojasnilo vezja in dela:
- Pojasnilo programiranja:
V naši vadnici Raspberry Pi smo večinoma pokrili vse osnovne komponente, ki povezujejo Raspberry Pi. Vse vaje smo obdelali na preprost in podroben način, tako da se lahko vsakdo, ne glede na to, ali je sodeloval z Raspberry Pi ali ne, zlahka uči iz te serije. Po vseh vajah boste lahko z Raspberry Pi zgradili nekaj projektov na visoki ravni.
Tukaj torej oblikujemo prvo aplikacijo na podlagi prejšnjih vaj. Prva osnovna aplikacija je temperatura v čitalnici Raspberry Pi. In odčitke lahko spremljate v računalniku.
Kot smo že omenili v prejšnjih vajah, v Raspberry Pi ni nobenih kanalov ADC. Torej, če želimo povezati analogne senzorje, potrebujemo pretvorniško enoto ADC. In v enem od naših vadnic smo povezali čip ADC0804 z Raspberry Pi za branje analogne vrednosti. Torej, preglejte ga, preden zgradite ta termometer za sobno temperaturo.
ADC0804 in Raspberry Pi:
ADC0804 je čip, zasnovan za pretvorbo analognega signala v 8-bitne digitalne podatke. Ta čip je ena izmed priljubljenih serij ADC. To je 8-bitna pretvorbena enota, zato imamo vrednosti ali vrednosti od 0 do 255. Ločljivost tega čipa se spreminja glede na izbrano referenčno napetost, o tem bomo govorili kasneje. Spodaj je Pinout ADC0804:
Zdaj je tu še ena pomembna stvar: ADC0804 deluje pri 5V in tako zagotavlja izhod v 5V logičnem signalu. V 8-polnem izhodu (ki predstavlja 8 bitov) vsak pin nudi + 5V izhod, ki predstavlja logiko '1 '. Težava je torej v tem, da je logika PI + 3,3 v, zato ne morete dati + 5 V logike na + 3,3 V GPIO pin PI. Če kakemu GPIO zatiču PI daste + 5V, se plošča poškoduje.
Za znižanje logične ravni od + 5V bomo uporabili vezje delilnika napetosti. Že prej smo razpravljali o vezju delilnika napetosti, da bi ga dodatno pojasnili. Kar bomo storili, je, da z dvema uporoma razdelimo + 5V logiko na logiko 2 * 2,5V. Po razdelitvi bomo PI dali + 2.5v logiko. Torej, kadar koli ADC0804 predstavi logiko '1', bomo na PI GPIO Pin videli namesto + 5V + 2,5V.
LM35 Temperaturni senzor:
Zdaj za odčitavanje temperature v sobi potrebujemo senzor. Tu bomo uporabili temperaturni senzor LM35. Temperatura se običajno meri v stopinjah Celzija ali Fahrenheita. Senzor “LM35” zagotavlja izhod v stopinjah Celzija.
Kot je prikazano na sliki, je LM35 tripinski tranzistor podobna naprava. Zatiči so oštevilčeni kot, PIN1 = Vcc - Napajanje (priključeno na + 5V)
PIN2 = signal ali izhod (priključen na čip ADC)
PIN3 = ozemljitev (povezano z zemljo)
Ta senzor zagotavlja spremenljivo napetost na izhodu glede na temperaturo. Za vsako +1 stopinjsko zvišanje temperature bo +10 mV višja napetost na izhodnem zatiču. Torej, če je temperatura 0◦ Celzija, bo izhod senzorja 0V, če je temperatura 10◦ Celzija, bo izhod senzorja + 100mV, če je temperatura 25◦ Celzija, bo izhod senzorja + 250mV.
Potrebne komponente:
Tu uporabljamo model Raspberry Pi 2 Model B z OS Raspbian Jessie. Vse osnovne zahteve glede strojne in programske opreme so že obravnavane, poglejte jih v uvodu Raspberry Pi, razen tistega, ki ga potrebujemo:
- Povezovalni zatiči
- 1KΩ upor (17 kosov)
- 10K lonec
- 0,1 μF kondenzator
- Kondenzator 100µF
- 1000µF kondenzator
- ADC0804 IC
- LM35 Temperaturni senzor
- Odbor za kruh
Pojasnilo vezja in dela:
Povezave, ki so narejene za priključitev Raspberry na ADC0804 in LM35, so prikazane v spodnjem vezju.
Izhod LM35 ima veliko nihanja napetosti; tako se za glajenje izhoda uporablja kondenzator 100uF, kot je prikazano na sliki.
V ADC je vedno veliko hrupa, ta hrup lahko močno vpliva na zmogljivost, zato za filtriranje hrupa uporabljamo kondenzator 0,1uF. Brez tega bo veliko nihanj na izhodu.
Čip deluje na takt oscilatorja RC (Resistor-Capacitor). Kot je prikazano v vezju , C2 in R20 tvorita uro. Pomembno si je tukaj zapomniti, da je kondenzator C2 mogoče spremeniti na nižjo vrednost za večjo stopnjo pretvorbe ADC. Toda z večjo hitrostjo se bo natančnost zmanjšala. Torej, če aplikacija zahteva večjo natančnost, izberite kondenzator z višjo vrednostjo, za večjo hitrost pa kondenzator z nižjo vrednostjo.
Kot že rečeno, LM35 zagotavlja + 10mV za vsako stopinjo. Najvišja temperatura, ki jo lahko izmeri LM35, je 150 ° C. Tako bomo imeli na izhodnem terminalu LM35 največ 1,5 V. Toda privzeta referenčna napetost ADC0804 je + 5V. Torej, če uporabimo to referenčno vrednost, bo ločljivost izhoda nizka, ker bi uporabili največ (5 / 1,5) 34% obsega digitalnega izhoda.
Na srečo ima ADC0804 nastavljiv Vref pin (PIN9), kot je prikazano na zgornjem diagramu pinov. Tako bomo Vref čipa nastavili na + 2V. Za nastavitev Vref + 2V moramo na PIN9 zagotoviti napetost + 1V (VREF / 2). Tu uporabljamo 10K lonec za nastavitev napetosti pri PIN9 na + 1V. Uporabite voltmeter, da dobite natančno napetost.
Pred tem smo uporabljali temperaturni senzor LM35 za odčitavanje sobne temperature z Arduino in z mikrokrmilnikom AVR. Preverite tudi merjenje vlažnosti in temperature z uporabo Arduina
Pojasnilo programiranja:
Ko je vse povezano po shemi vezja, lahko vklopimo PI in napišemo program v PYHTON.
Govorili bomo o nekaj ukazih, ki jih bomo uporabili v programu PYHTON, Datoteko GPIO bomo uvozili iz knjižnice, spodnja funkcija nam omogoča programiranje GPIO nožic PI. Prav tako preimenujemo »GPIO« v »IO«, zato bomo v programu, kadar se želimo sklicevati na zatiče GPIO, uporabili besedo »IO«.
uvozi RPi.GPIO kot IO
Včasih, ko zatiči GPIO, ki jih poskušamo uporabiti, morda opravljajo nekatere druge funkcije. V tem primeru bomo med izvajanjem programa prejeli opozorila. Spodaj ukaz PI-ju sporoči, naj prezre opozorila in nadaljuje s programom.
IO.setwarnings (False)
Zatiče GPIO PI lahko označimo bodisi s številko zatiča na krovu bodisi s številko njihove funkcije. Tako kot »PIN 29« na plošči je »GPIO5«. Torej tukaj povemo, ali bomo tu zastopali pin z '29' ali '5'.
IO.setmode (IO.BCM)
Kot vhodne zatiče nastavljamo 8 nožic. S temi nožicami bomo zaznali 8-bitne podatke ADC.
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)
Če je pogoj v oklepajih resničen, se stavki znotraj zanke izvedejo enkrat. Torej, če gre GPIO pin 19 visoko, se bodo stavki znotraj zanke IF izvedli enkrat. Če zatič GPIO 19 ne gre visoko, stavki znotraj zanke IF ne bodo izvedeni.
if (IO.input (19) == True):
Spodaj se ukaz uporablja kot zanka za vedno, s tem ukazom se bodo stavki znotraj te zanke izvajali neprekinjeno.
Medtem ko 1:
Nadaljnja razlaga kode je podana v spodnjem razdelku kode.
Po pisanju programa je čas, da ga zaženete. Pred izvajanjem programa omogoči pogovor o dogajanju v vezju kot povzetek. Prvi senzor LM35 zazna sobno temperaturo in na svojem izhodu zagotovi analogno napetost. Ta spremenljiva napetost linearno predstavlja temperaturo z + 10mV na ºC. Ta signal se napaja na čip ADC0804, ta čip pretvori analogno vrednost v digitalno vrednost s 255/200 = 1,275 štetjem na 10 mv ali 1,275 številom za 1 stopinjo. To štetje prevzame PI GPIO. Program pretvori štetje v vrednost temperature in ga prikaže na zaslonu. Tipična temperatura, ki jo prebere PI, je prikazana spodaj, Zato smo ta temperaturni monitor Raspberry Pi.