- ADC0804 și Raspberry Pi:
- Senzor de temperatură LM35:
- Componente necesare:
- Circuit și explicație de lucru:
- Explicație de programare:
Am acoperit în cea mai mare parte toate componentele de bază care interacționează cu Raspberry Pi din seria noastră de tutoriale Raspberry Pi. Am acoperit toate tutorialele într-un mod simplu și detaliat, astfel încât oricine, indiferent dacă a lucrat sau nu cu Raspberry Pi, poate învăța cu ușurință din această serie. Și după ce ați parcurs toate tutorialele, veți putea construi câteva proiecte de nivel înalt folosind Raspberry Pi.
Deci, aici proiectăm prima aplicație pe baza tutorialelor anterioare. Prima aplicație de bază este temperatura camerei de lectură de Raspberry Pi. Și puteți monitoriza citirile pe computer.
După cum sa discutat în tutorialele anterioare, nu există canale ADC furnizate intern în Raspberry Pi. Deci, dacă vrem să interfațăm orice senzori analogici, avem nevoie de o unitate de conversie ADC. Și într-unul dintre tutorialele noastre avem cipul Interfaced ADC0804 la Raspberry Pi pentru a citi o valoare analogică. Deci, parcurgeți-l înainte de a construi acest termometru pentru temperatura camerei.
ADC0804 și Raspberry Pi:
ADC0804 este un cip conceput pentru a converti semnalul analogic în date digitale pe 8 biți. Acest cip este una dintre seriile populare de ADC. Este o unitate de conversie de 8 biți, deci avem valori sau 0 până la 255 de valori. Rezoluția acestui cip se modifică pe baza tensiunii de referință pe care o alegem, vom vorbi mai multe despre el mai târziu. Mai jos este prezentarea ADC0804:
Acum, un alt lucru important aici este că ADC0804 funcționează la 5V și astfel oferă ieșire în semnal logic de 5V. În ieșirea cu 8 pini (reprezentând 8 biți), fiecare pin furnizează o ieșire de + 5V pentru a reprezenta logica '1'. Deci problema este că logica PI este de + 3,3 v, deci nu puteți da logică + 5 V pinului + 3,3 V GPIO al PI. Dacă dați + 5V oricărui pin GPIO de PI, placa se deteriorează.
Deci, pentru a reduce nivelul logic de la + 5V, vom folosi circuitul divizor de tensiune. Am discutat despre circuitul divizorului de tensiune pentru a le analiza anterior pentru clarificări suplimentare. Ceea ce vom face este să folosim două rezistențe pentru a împărți logica + 5V în logici 2 * 2.5V. Deci, după împărțire, vom da logică + 2,5v PI. Deci, ori de câte ori logica „1” este prezentată de ADC0804, vom vedea + 2,5V la pinul GPIO PI, în loc de + 5V.
Senzor de temperatură LM35:
Acum, pentru citirea temperaturii camerei, avem nevoie de un senzor. Aici vom folosi senzorul de temperatură LM35. Temperatura este de obicei măsurată în „Celsius” sau „Fahrenheit”. Senzorul „LM35” oferă ieșire în grade Celsius.
După cum se arată în figură, LM35 este un dispozitiv cu tranzistor cu trei pini. Pinii sunt numerotați ca, PIN1 = Vcc - Alimentare (conectat la + 5V)
PIN2 = Semnal sau ieșire (conectat la cipul ADC)
PIN3 = Masă (conectată la masă)
Acest senzor asigură tensiune variabilă la ieșire, în funcție de temperatură. Pentru fiecare creștere a temperaturii de +1 centigradi, va exista o tensiune cu + 10mV mai mare la pinul de ieșire. Deci, dacă temperatura este de 0◦ C, ieșirea senzorului va fi de 0V, dacă temperatura este de 10◦ C, ieșirea senzorului va fi de + 100mV, dacă temperatura este de 25◦ C, ieșirea senzorului va fi de + 250mV.
Componente necesare:
Aici folosim Raspberry Pi 2 Model B cu Raspbian Jessie OS. Toate cerințele de bază privind hardware-ul și software-ul sunt discutate anterior, le puteți căuta în Introducerea Raspberry Pi, altele decât cele de care avem nevoie:
- Pinii de conectare
- Rezistor 1KΩ (17 bucăți)
- Ghiveci de 10K
- Condensator 0.1µF
- Condensator 100µF
- Condensator 1000µF
- ADC0804 IC
- Senzor de temperatură LM35
- Pâine
Circuit și explicație de lucru:
Conexiunile efectuate pentru conectarea Raspberry la ADC0804 și LM35 sunt prezentate în schema de circuit de mai jos.
Ieșirea LM35 are multe fluctuații de tensiune; deci se folosește un condensator 100uF pentru a netezi ieșirea, așa cum se arată în figură.
ADC are întotdeauna mult zgomot, acest zgomot poate afecta foarte mult performanța, așa că folosim condensator 0.1uF pentru filtrarea zgomotului. Fără aceasta vor exista o mulțime de fluctuații la ieșire.
Cipul funcționează pe ceasul oscilatorului RC (Rezistor-Condensator). Așa cum se arată în schema de circuite , C2 și R20 formează un ceas. Lucrul important de reținut aici este că condensatorul C2 poate fi schimbat la o valoare mai mică pentru o rată mai mare de conversie ADC. Cu toate acestea, cu o viteză mai mare va exista o scădere a preciziei. Deci, dacă aplicația necesită o precizie mai mare, alegeți condensatorul cu valoare mai mare și pentru o viteză mai mare alegeți condensatorul cu valoare mai mică.
După cum am spus mai devreme, LM35 oferă + 10mV pentru fiecare centigrad. Temperatura maximă care poate fi măsurată de LM35 este de 150 ° C. Deci vom avea maximum 1,5V la terminalul de ieșire LM35. Dar tensiunea de referință implicită a ADC0804 este + 5V. Deci, dacă folosim acea valoare de referință, rezoluția ieșirii va fi scăzută, deoarece vom folosi maximum (5 / 1,5) 34% din domeniul de ieșire digitală.
Din fericire, ADC0804 are un pin Vref reglabil (PIN9), așa cum este prezentat în Diagrama Pinului de mai sus. Deci, vom seta Vref-ul cipului la + 2V. Pentru a seta Vref + 2V, trebuie să furnizăm o tensiune de + 1V (VREF / 2) la PIN9. Aici folosim potul de 10K pentru a regla tensiunea la PIN9 la + 1V. Folosiți voltmetrul pentru a obține tensiunea exactă.
Am folosit anterior senzorul de temperatură LM35 pentru a citi temperatura camerei cu Arduino și cu microcontrolerul AVR. De asemenea, verificați măsurarea umidității și temperaturii folosind Arduino
Explicație de programare:
Odată ce totul este conectat conform schemei circuitului, putem porni PI pentru a scrie programul în PYHTON.
Vom vorbi despre câteva comenzi pe care le vom folosi în programul PYHTON, Vom importa fișierul GPIO din bibliotecă, funcția de mai jos ne permite să programăm pinii GPIO ai PI. De asemenea, redenumim „GPIO” în „IO”, așa că în program ori de câte ori dorim să ne referim la pinii GPIO vom folosi cuvântul „IO”.
import RPi.GPIO ca IO
Uneori, când pinii GPIO, pe care încercăm să îi folosim, ar putea să îndeplinească alte funcții. În acest caz, vom primi avertismente în timpul executării programului. Comanda de mai jos îi spune PI să ignore avertismentele și să continue programul.
IO.setwarnings (Fals)
Putem consulta pinii GPIO ai PI, fie prin numărul pinului la bord, fie prin numărul funcției lor. La fel ca „PIN 29” de pe tablă este „GPIO5”. Deci, spunem aici fie că vom reprezenta pinul aici cu „29” sau „5”.
IO.setmode (IO.BCM)
Setăm 8 pini ca pini de intrare. Vom detecta 8 biți de date ADC prin acești pini.
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)
În cazul în care condiția din paranteze este adevărată, instrucțiunile din buclă vor fi executate o singură dată. Deci, dacă pinul GPIO 19 se ridică, atunci instrucțiunile din bucla IF vor fi executate o singură dată. Dacă pinul GPIO 19 nu se ridică, atunci instrucțiunile din bucla IF nu vor fi executate.
if (IO.input (19) == True):
Comanda de mai jos este utilizată ca buclă pentru totdeauna, cu această comandă instrucțiunile din această buclă vor fi executate continuu.
În timp ce 1:
Explicații suplimentare despre cod sunt date în secțiunea de cod de mai jos.
După ce ați scris programul, este timpul să îl executați. Înainte de a executa programul, permite discuții despre ceea ce se întâmplă în circuit ca un rezumat. Primul senzor LM35 detectează temperatura camerei și furnizează o tensiune analogică la ieșire. Această tensiune variabilă reprezintă temperatura liniar cu + 10mV per ºC. Acest semnal este alimentat către cipul ADC0804, acest cip convertește valoarea analogică în valoare digitală cu 255/200 = 1.275 număr pe 10mv sau 1.275 număr pentru 1 grad. Acest număr este preluat de PI GPIO. Programul convertește numărul în valoare de temperatură și îl afișează pe ecran. Temperatura tipică citită de PI este prezentată mai jos, Prin urmare, noi acest monitor de temperatură Raspberry Pi.