- ADC0804 și Raspberry Pi:
- Componente necesare:
- Explicația circuitului:
- Explicație de programare:
- Lucru:
Raspberry Pi este o placă bazată pe procesor de arhitectură ARM, concepută pentru ingineri electronici și pasionați. PI este una dintre cele mai de încredere platforme de dezvoltare a proiectelor de acum. Cu o viteză mai mare a procesorului și 1 GB RAM, PI poate fi utilizat pentru multe proiecte de profil înalt, cum ar fi procesarea imaginilor și Internetul obiectelor.
Pentru realizarea oricăror proiecte de profil, trebuie să înțelegeți funcțiile de bază ale PI. Vom acoperi toate funcționalitățile de bază ale Raspberry Pi în aceste tutoriale. În fiecare tutorial vom discuta una dintre funcțiile PI. Până la sfârșitul acestei serii de tutoriale Raspberry Pi, veți putea face singuri proiecte de profil înalt. Parcurgeți tutorialele de mai jos:
- Noțiuni introductive despre Raspberry Pi
- Configurare Raspberry Pi
- LED intermitent
- Interfață buton Raspberry Pi
- Generație Raspberry Pi PWM
- Controlul motorului DC folosind Raspberry Pi
- Control motor pas cu pas cu Raspberry Pi
- Interfață Shift Register cu Raspberry Pi
În acest tutorial, vom interfața un cip ADC (analogic la conversie digitală) la Raspberry Pi. Știm toți parametrii analogului, înseamnă că variază continuu în timp. Spuneți, de exemplu, că temperatura camerei variază în funcție de timp. Această temperatură este prevăzută cu numere zecimale. Dar în lumea digitală, nu există numere zecimale, deci trebuie să convertim valoarea analogică în valoare digitală. Acest proces de conversie se face prin tehnica ADC. Aflați mai multe despre ADC aici: Introducere în ADC0804
ADC0804 și Raspberry Pi:
Controlerele normale au canale ADC, dar pentru PI nu există canale ADC furnizate intern. Deci, dacă vrem să interfațăm orice senzori analogici, avem nevoie de o unitate de conversie ADC. Deci, în acest scop, vom accesa interfața ADC0804 cu 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. Cu o tensiune de măsurare de maxim 5V, vom avea o schimbare pentru fiecare 19,5mV. 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.
Aflați mai multe despre Pinii GPIO ai Raspberry Pi aici și parcurgeți tutorialele noastre anterioare.
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 220Ω sau 1KΩ (17 bucăți)
- Ghiveci de 10K
- Condensator 0.1µF (2 bucăți)
- ADC0804 IC
- Pâine
Explicația circuitului:
Funcționează la o tensiune de alimentare de + 5v și poate măsura un interval de tensiune variabil în intervalul 0-5V.
Cele conexiuni pentru interfațare ADC0804 la Raspberry PI, sunt prezentate în diagrama circuitului de mai sus.
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ă.
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 program sunt date în secțiunea de cod de mai jos.
Lucru:
După ce ați scris programul și l-ați executat, veți vedea „0” pe ecran. „0” înseamnă 0 volți la intrare.
Dacă reglăm potul de 10K conectat la cip, vom vedea schimbarea valorilor pe ecran. Valorile de pe ecran continuă să deruleze, acestea sunt valorile digitale citite de PI.
Spuneți dacă ajungem potul la punctul mediu, avem + 2,5V la intrarea ADC0804. Deci, vedem 128 pe ecran așa cum se arată mai jos.
Pentru valoarea analogică de + 5V, vom avea 255.
Deci, prin variația potului, vom varia tensiunea de la 0 la + 5V la intrarea ADC0804. Cu acest PI citiți valori de la 0-255. Valorile sunt imprimate pe ecran.
Deci, avem interfață ADC0804 cu Raspberry Pi.