- ADC0804 i Raspberry Pi:
- LM35 senzor temperature:
- Potrebne komponente:
- Objašnjenje sklopa i rada:
- Objašnjenje programiranja:
U našoj seriji lekcija o Raspberry Pi uglavnom smo pokrili sve osnovne komponente koje povezuju Raspberry Pi. Sve smo upute pokrili na jednostavan i detaljan način, tako da svatko, bez obzira je li radio s Raspberry Pi ili ne, može lako učiti iz ove serije. A nakon što prođete sve vodiče, moći ćete izgraditi neke projekte na visokoj razini koristeći Raspberry Pi.
Dakle, ovdje dizajniramo prvu aplikaciju na temelju prethodnih vodiča. Prva osnovna aplikacija je temperatura čitaonice tvrtke Raspberry Pi. A očitanja možete pratiti na računalu.
Kao što je raspravljano u prethodnim vodičima, u Raspberry Pi nema interno osiguranih ADC kanala. Dakle, ako želimo povezati bilo koji analogni senzor, trebamo ADC jedinicu za pretvorbu. I u jednom od naših vodiča povezali smo ADC0804 čip s Raspberry Pi kako bismo očitali analognu vrijednost. Dakle, prođite kroz njega prije izgradnje ovog termometra za sobnu temperaturu.
ADC0804 i Raspberry Pi:
ADC0804 je čip dizajniran za pretvaranje analognog signala u 8-bitne digitalne podatke. Ovaj je čip jedna od popularnih serija ADC-a. To je 8-bitna jedinica za pretvorbu, tako da imamo vrijednosti ili 0 do 255 vrijednosti. Razlučivost ovog čipa mijenja se na temelju odabranog referentnog napona, o čemu ćemo više razgovarati kasnije. Ispod je Pinout ADC0804:

Sada je ovdje još jedna važna stvar, ADC0804 radi na 5V i tako daje izlaz u 5V logičkom signalu. U 8-polnom izlazu (koji predstavlja 8-bit), svaki pin ima + 5V izlaza za predstavljanje logike'1 '. Dakle, problem je u tome što je PI logika od + 3,3 v, tako da ne možete dati + 5 V logiku na + 3,3 V GPIO pinu PI. Ako dajete + 5V na bilo koji GPIO pin PI, ploča se oštećuje.
Dakle, za spuštanje logičke razine od + 5V, koristit ćemo krug djelitelja napona. Ranije smo razgovarali o krugu djelitelja napona, a prethodno smo ga istražili radi daljnjeg pojašnjenja. Ono što ćemo učiniti je da koristimo dva otpora da podijelimo + 5V logiku u logiku 2 * 2,5V. Dakle, nakon podjele dat ćemo PI logiku + 2.5v. Dakle, kad god ADC0804 predstavi logiku '1' vidjet ćemo + 2,5V na PI GPIO Pinu, umjesto + 5V.
LM35 senzor temperature:
Sada za očitavanje temperature u sobi trebamo senzor. Ovdje ćemo koristiti senzor temperature LM35. Temperatura se obično mjeri u "Celzijevim stupnjevima" ili "Fahrenheitima". Senzor "LM35" daje izlaz u stupnjevima Celzijevih.


Kao što je prikazano na slici, LM35 je tropolni tranzistorski uređaj. Pribadače su numerirane kao, PIN1 = Vcc - Napajanje (povezano na + 5V)
PIN2 = signal ili izlaz (spojen na ADC čip)
PIN3 = uzemljenje (spojeno na uzemljenje)
Ovaj senzor daje promjenjivi napon na izlazu, ovisno o temperaturi. Za svaki porast temperature od +1 stupnjeva bit će + 10mV viši napon na izlaznom zatiču. Dakle, ako je temperatura 0◦C, izlaz senzora će biti 0V, ako je temperatura 10◦C, izlaz senzora će biti + 100mV, ako je temperatura 25◦C, izlaz senzora će biti + 250mV.
Potrebne komponente:
Ovdje koristimo Raspberry Pi 2 Model B s Raspbian Jessie OS. Svi osnovni hardverski i softverski zahtjevi su prethodno raspravljeni, možete ih potražiti u Uvodu o Raspberry Pi, osim onoga što nam treba:
- Spojne igle
- Otpor 1KΩ (17 komada)
- 10K lonac
- 0.1µF kondenzator
- Kondenzator od 100µF
- Kondenzator od 1000µF
- ADC0804 IC
- LM35 Senzor temperature
- Daska za kruh
Objašnjenje sklopa i rada:
Priključci koji su izvedeni za povezivanje Raspberry-a s ADC0804 i LM35, prikazani su na donjoj shemi spojeva.

Izlaz LM35 ima puno kolebanja napona; tako da se kondenzator od 100uF koristi za izravnavanje izlaza, kao što je prikazano na slici.
ADC uvijek ima puno buke, ta buka može uvelike utjecati na performanse, pa za filtriranje buke koristimo kondenzator od 0,1 uF. Bez toga bit će puno fluktuacija na izlazu.
Čip radi na RC (Resistor-Capacitor) oscilator taktu. Kao što je prikazano na shemi spojeva , C2 i R20 čine sat. Ovdje je važno upamtiti da se kondenzator C2 može promijeniti na nižu vrijednost za veću brzinu pretvorbe ADC-a. Međutim, s većom brzinom doći će do smanjenja točnosti. Dakle, ako aplikacija zahtijeva veću točnost, odaberite kondenzator veće vrijednosti, a za veću brzinu kondenzator manje vrijednosti.
Kao što je ranije rečeno, LM35 osigurava + 10mV za svaku Celzijusu. Maksimalna temperatura koju može izmjeriti LM35 je 150 ° C. Tako ćemo na izlaznom terminalu LM35 imati maksimalno 1,5 V. Ali zadani referentni napon ADC0804 je + 5V. Dakle, ako koristimo tu referentnu vrijednost, razlučivost izlaza bit će niska jer bismo koristili maksimalno (5 / 1,5) 34% raspona digitalnog izlaza.
Srećom, ADC0804 ima prilagodljivi Vref pin (PIN9) kao što je prikazano na gornjem dijagramu pin-a. Tako ćemo postaviti Vref čipa na + 2V. Da bismo postavili Vref + 2V, moramo osigurati napon od + 1V (VREF / 2) na PIN9. Ovdje koristimo 10K lonac za podešavanje napona na PIN9 na + 1V. Upotrijebite voltmetar da biste dobili točan napon.
Prije smo koristili temperaturni senzor LM35 za očitavanje sobne temperature s Arduinom i s AVR mikrokontrolerom. Također provjerite Mjerenje vlažnosti i temperature pomoću Arduina
Objašnjenje programiranja:
Nakon što se sve spoji prema shemi spojeva, možemo UKLJUČITI PI za pisanje programa u PYHTON.
Razgovarat ćemo o nekoliko naredbi koje ćemo koristiti u programu PYHTON, Uvest ćemo GPIO datoteku iz knjižnice, donja funkcija omogućuje nam programiranje GPIO pinova PI. Također smo preimenovali "GPIO" u "IO", pa ćemo u programu kad god se želimo pozvati na GPIO pinove upotrijebiti riječ "IO".
uvezi RPi.GPIO kao IO
Ponekad, kada GPIO pinovi, koje pokušavamo koristiti, možda rade neke druge funkcije. U tom ćemo slučaju primiti upozorenja tijekom izvršavanja programa. Ispod naredba govori PI-u da zanemari upozorenja i nastavi s programom.
IO.setwarnings (False)
GPIO pinove PI možemo uputiti bilo brojem pina na ploči ili brojem njihove funkcije. Poput 'PIN 29' na ploči je 'GPIO5'. Dakle, ovdje kažemo ili ćemo ovdje predstavljati pin s '29' ili '5'.
IO.setmode (IO.BCM)
Postavljamo 8 pinova kao ulazne pinove. Ovim ćemo iglama otkriti 8 bit ADC podataka.
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)
U slučaju da je uvjet u zagradama istinit, izrazi unutar petlje izvršit će se jednom. Dakle, ako GPIO pin 19 pređe visoko, tada će se izrazi unutar IF petlje izvršiti jednom. Ako GPIO pin 19 ne ide visoko, tada se izvodi unutar IF petlje neće izvršiti.
if (IO.input (19) == True):
Ispod se koristi naredba zauvijek, s ovom naredbom će se izrazi unutar ove petlje kontinuirano izvršavati.
Dok je 1:
Daljnje objašnjenje koda dato je u odjeljku koda ispod.
Nakon pisanja programa vrijeme je da ga izvršite. Prije izvođenja programa, dopušta razgovorima što se događa u krugu kao sažetak. Prvi LM35 senzor detektira sobnu temperaturu i daje analogni napon na svom izlazu. Ovaj promjenjivi napon linearno predstavlja temperaturu s + 10mV po ºC. Ovaj signal se dovodi na ADC0804 čip, ovaj čip pretvara analognu vrijednost u digitalnu vrijednost sa 255/200 = 1,275 broja na 10mv ili 1,275broja za 1 stupanj. Ovo brojanje uzima PI GPIO. Program pretvara brojanje u vrijednost temperature i prikazuje ga na zaslonu. Tipična temperatura koju očitava PI prikazana je u nastavku, Stoga smo mi ovaj temperaturni monitor Raspberry Pi.
