- ADC0804 a Raspberry Pi:
- Snímač teploty LM35:
- Požadované komponenty:
- Vysvetlenie obvodu a práce:
- Vysvetlenie programovania:
Väčšinou sme v našej sérii výučby Raspberry Pi pokryli všetky základné komponenty prepojené s Raspberry Pi. Všetky návody sme prebrali jednoduchým a podrobným spôsobom, aby sa ktokoľvek, či už pracoval s Raspberry Pi alebo nie, mohol ľahko učiť z tejto série. A po absolvovaní všetkých výukových programov budete môcť pomocou Raspberry Pi zostaviť niekoľko projektov na vysokej úrovni.
Takže tu navrhujeme prvú aplikáciu založenú na predchádzajúcich tutoriáloch. Prvou základnou aplikáciou je teplota miestnosti na čítanie od spoločnosti Raspberry Pi. A môžete sledovať namerané hodnoty na počítači.
Ako už bolo spomenuté v predchádzajúcich tutoriáloch, v Raspberry Pi nie sú interne poskytované žiadne kanály ADC. Takže ak chceme prepojiť akékoľvek analógové snímače, potrebujeme prevodnú jednotku ADC. A v jednom z našich tutoriálov sme nasadili čip ADC0804 na Raspberry Pi na čítanie analógovej hodnoty. Preto si ho pred zostavením tohto teplomera na izbovú teplotu prejdite.
ADC0804 a Raspberry Pi:
ADC0804 je čip určený na prevod analógového signálu na 8-bitové digitálne dáta. Tento čip je jednou z populárnych sérií ADC. Je to 8bitová prevodná jednotka, takže máme hodnoty alebo 0 až 255 hodnôt. Rozlíšenie tohto čipu sa mení na základe referenčného napätia, ktoré si zvolíme, o ňom si povieme viac neskôr. Nižšie je Pinout z ADC0804:
Ďalšou dôležitou vecou je, že ADC0804 pracuje pri 5 V, a preto poskytuje výstup v 5 V logickom signáli. Na 8 pinovom výstupe (predstavuje 8 bitov) poskytuje každý pin + 5 V výstup, ktorý predstavuje logiku '1'. Takže problém je v tom, že PI logika je +3,3 V, takže nemôžete dať + 5V logiku na +3,3 V GPIO pin PI. Ak dáte + 5 V akémukoľvek pinu GPIO PI, doska sa poškodí.
Takže na zostupnú logickú úroveň z + 5 V budeme používať obvod deliča napätia. Diskutovali sme o obvode Divider Divider Circuit, ktorý sme predtým podrobnejšie preskúmali. Čo urobíme je, že pomocou dvoch rezistorov rozdelíme logiku + 5V na 2 * 2,5V logiku. Takže po rozdelení dáme PI + 2,5v logiku. Takže kedykoľvek ADC0804 predstavuje logiku „1“, uvidíme na PI GPIO Pin + 2,5 V namiesto + 5 V.
Snímač teploty LM35:
Teraz potrebujeme senzor na čítanie teploty miestnosti. Tu použijeme teplotný snímač LM35. Teplota sa zvyčajne meria v stupňoch Celzia alebo Fahrenheita. Snímač „LM35“ poskytuje výstup v stupňoch Celzia.
Ako je znázornené na obrázku, LM35 je trojpinové tranzistorové zariadenie. Kolíky sú očíslované ako, PIN1 = Vcc - napájanie (pripojené k + 5 V)
PIN2 = signál alebo výstup (pripojený k čipu ADC)
PIN3 = zem (pripojený k zemi)
Tento snímač poskytuje premenlivé napätie na výstupe na základe teploty. Pri každom zvýšení teploty o +1 ° C bude na výstupnom kolíku o 10 mV vyššie napätie. Takže ak je teplota 0 ° C, výstup snímača bude 0 V, ak je teplota 10 ° C, výstup snímača bude + 100 mV, ak je teplota 25 ° C, výstup snímača bude + 250 mV.
Požadované komponenty:
Tu používame Raspberry Pi 2 Model B s Raspbian Jessie OS. Všetky základné hardvérové a softvérové požiadavky sú už diskutované. Môžete si ich vyhľadať v úvode k Raspberry Pi, okrem toho, čo potrebujeme:
- Spojovacie čapy
- 1KΩ rezistor (17 kusov)
- 10K hrniec
- 0,1µF kondenzátor
- 100µF kondenzátor
- 1000µF kondenzátor
- ADC0804 IC
- Snímač teploty LM35
- Chlebová doska
Vysvetlenie obvodu a práce:
Pripojenia, ktoré sa vykonávajú na pripojenie Raspberry k ADC0804 a LM35, sú zobrazené v schéme zapojenia nižšie.
Výstup LM35 má veľa výkyvov napätia; takže na vyhladenie výstupu sa používa kondenzátor 100uF, ako je to znázornené na obrázku.
ADC má vždy veľa šumu, tento šum môže výrazne ovplyvniť výkon, preto na filtráciu šumu používame kondenzátor 0,1uF. Bez toho bude veľa kolísania na výstupe.
Čip pracuje na RC (Resistor-Capacitor) oscilátorových hodinách. Ako je znázornené na schéme zapojenia , C2 a R20 tvoria hodiny. Tu je dôležité pamätať na to, že kondenzátor C2 je možné zmeniť na nižšiu hodnotu pre vyššiu rýchlosť konverzie ADC. S vyššou rýchlosťou však dôjde k poklesu presnosti. Pokiaľ teda aplikácia vyžaduje vyššiu presnosť, zvoľte kondenzátor s vyššou hodnotou a pre vyššiu rýchlosť zvoľte kondenzátor s nižšou hodnotou.
Ako už bolo povedané, LM35 poskytuje +10 mV na každý stupeň Celzia. Maximálna teplota, ktorú je možné merať pomocou LM35, je 150 ° C. Na výstupnom termináli LM35 teda budeme mať maximálne 1,5V. Ale predvolené referenčné napätie ADC0804 je + 5V. Takže ak použijeme túto referenčnú hodnotu, rozlíšenie výstupu bude nízke, pretože by sme používali maximálne (5 / 1,5) 34% rozsahu digitálneho výstupu.
Našťastie má ADC0804 nastaviteľný kolík Vref (PIN9), ako je to znázornené na obrázku vyššie. Takže nastavíme Vref čipu na + 2V. Aby sme nastavili Vref + 2V, musíme na PIN9 poskytnúť napätie + 1V (VREF / 2). Tu používame 10K pot na nastavenie napätia na PIN9 na + 1V. Na získanie presného napätia použite voltmetr.
Predtým sme používali snímač teploty LM35 na čítanie teploty v miestnosti pomocou Arduina a mikrokontroléra AVR. Skontrolujte tiež meranie vlhkosti a teploty pomocou Arduina
Vysvetlenie programovania:
Keď je všetko zapojené podľa schémy zapojenia, môžeme zapnúť PI a program napísať do PYHTONU.
Povieme si o niekoľkých príkazoch, ktoré použijeme v programe PYHTON, Chystáme sa importovať súbor GPIO z knižnice, funkcia nižšie nám umožňuje programovať GPIO piny PI. Premenujeme „GPIO“ na „IO“, takže v programe budeme kedykoľvek, keď budeme chcieť odkazovať na piny GPIO, použiť slovo „IO“.
importovať RPi.GPIO ako IO
Niekedy, keď piny GPIO, ktoré sa snažíme používať, môžu robiť nejaké ďalšie funkcie. V takom prípade dostaneme varovania počas vykonávania programu. Príkaz dole povie PI, aby ignoroval varovania a pokračoval v programe.
IO.setwarnings (False)
Môžeme označiť GPIO piny PI, buď číslom kolíka na doske, alebo počtom ich funkcií. Rovnako ako „PIN 29“ na doske je „GPIO5“. Takže tu hovoríme, že tu budeme špendlík reprezentovať číslom „29“ alebo „5“.
IO.setmode (IO.BCM)
Nastavujeme 8 pinov ako vstupné piny. Podľa týchto pinov detekujeme 8 bitov dát 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)
V prípade, že je podmienka v zložených zátvorkách pravdivá, príkazy vo vnútri cyklu sa vykonajú raz. Takže ak pin 19 GPIO stúpne, potom sa príkazy vo vnútri slučky IF vykonajú raz. Pokiaľ GPIO pin 19 nejde vysoko, potom sa príkazy vo vnútri IF cyklu nebudú vykonávať.
if (IO.input (19) == True):
Nasledujúci príkaz sa používa ako večná slučka, s týmto príkazom sa budú príkazy vo vnútri tejto slučky vykonávať nepretržite.
Zatiaľ čo 1:
Ďalšie vysvetlenie kódu je uvedené v časti venovanej kódu.
Po napísaní programu je čas ho vykonať. Pred vykonaním programu si povieme, čo sa deje v obvode, zhrnutie. Prvý snímač LM35 detekuje teplotu v miestnosti a na svojom výstupe poskytuje analógové napätie. Toto premenné napätie predstavuje teplotu lineárne s + 10 mV na ° C. Tento signál je privádzaný do čipu ADC0804, tento čip prevádza analógovú hodnotu na digitálnu s 255/200 = 1,275 počtom na 10 mv alebo 1,275 počtom na 1 stupeň. Tento počet prijíma PI GPIO. Program prevedie počet na hodnotu teploty a zobrazí ju na obrazovke. Typická teplota odčítaná PI je uvedená nižšie, Preto sme tento monitor teploty Raspberry Pi.