- ADC0804 a Raspberry Pi:
- Snímač teploty LM35:
- Požadované komponenty:
- Vysvětlení obvodu a práce:
- Vysvětlení programování:
V naší výukové sérii Raspberry Pi jsme většinou pokryli všechny základní komponenty propojující Raspberry Pi. Prošli jsme všechny výukové programy jednoduchým a podrobným způsobem, aby se kdokoli, ať už pracoval s Raspberry Pi nebo ne, mohl snadno učit z této série. A po absolvování všech tutoriálů budete moci pomocí Raspberry Pi stavět některé projekty na vysoké úrovni.
Tady tedy navrhujeme první aplikaci založenou na předchozích výukových programech. První základní aplikací je teplota čtecí místnosti od Raspberry Pi. Odečty můžete sledovat na počítači.
Jak je popsáno v předchozích cvičeních, v Raspberry Pi nejsou interně poskytované žádné kanály ADC. Pokud tedy chceme propojit jakékoli analogové senzory, potřebujeme konverzní jednotku ADC. A v jednom z našich tutoriálů jsme na Raspberry Pi vložili čip ADC0804 pro čtení analogové hodnoty. Projděte si to tedy před sestavením tohoto teploměru pro pokojovou teplotu.
ADC0804 a Raspberry Pi:
ADC0804 je čip určený k převodu analogového signálu na 8bitová digitální data. Tento čip je jednou z populárních řad ADC. Je to 8bitová konverzní jednotka, takže máme hodnoty nebo 0 až 255 hodnot. Rozlišení tohoto čipu se mění na základě referenčního napětí, které zvolíme, o tom si povíme později. Níže je Pinout z ADC0804:
Další důležitá věc je, že ADC0804 pracuje na 5V a tak poskytuje výstup v 5V logickém signálu. Na 8 pinovém výstupu (představujícím 8 bitů) poskytuje každý pin výstup + 5 V, který představuje logiku '1'. Takže problém je v tom, že PI logika je +3,3 V, takže nemůžete dát + 5V logiku na +3,3 V GPIO pin PI. Pokud dáte + 5V kterémukoli GPIO pinu PI, deska se poškodí.
Takže k sestupné logické úrovni z + 5V budeme používat obvod děliče napětí. Diskutovali jsme o obvodu děliče napětí dříve, abychom jej pro další objasnění prozkoumali. To, co uděláme, je použít dva odpory k rozdělení logiky + 5V na logiku 2 * 2,5V. Po rozdělení tedy dáme PI + 2,5 V logiku. Takže kdykoli ADC0804 prezentuje logiku „1“, uvidíme na PI GPIO Pinu + 2,5 V namísto + 5 V.
Snímač teploty LM35:
Nyní pro čtení teploty v místnosti potřebujeme senzor. Zde použijeme teplotní senzor LM35. Teplota se obvykle měří ve stupních Celsia nebo Fahrenheita. Senzor „LM35“ poskytuje výstup ve stupních Celsia.
Jak je znázorněno na obrázku, LM35 je třípólové zařízení podobné tranzistoru. Kolíky jsou očíslovány jako, PIN1 = Vcc - napájení (připojeno k + 5 V)
PIN2 = signál nebo výstup (připojený k čipu ADC)
PIN3 = uzemnění (připojeno k zemi)
Tento snímač poskytuje proměnlivé napětí na výstupu na základě teploty. Při každém zvýšení teploty o +1 ° C bude na výstupním pinu o +10 mV vyšší napětí. Pokud je tedy teplota 0 ° C, výstup snímače bude 0 V, pokud je teplota 10 ° C, výstup snímače bude + 100 mV, pokud je teplota 25 ° C, výstup snímače bude + 250 mV.
Požadované komponenty:
Zde používáme Raspberry Pi 2 Model B s Raspbian Jessie OS. Všechny základní požadavky na hardware a software jsou dříve diskutovány, můžete si je vyhledat v úvodu k Raspberry Pi, kromě toho, co potřebujeme:
- Spojovací kolíky
- 1KΩ rezistor (17 kusů)
- 10K hrnec
- Kondenzátor 0,1µF
- 100µF kondenzátor
- 1000µF kondenzátor
- ADC0804 IC
- Snímač teploty LM35
- Chlebová deska
Vysvětlení obvodu a práce:
Připojení, která se provádí pro připojení Raspberry k ADC0804 a LM35, jsou uvedena v schématu zapojení níže.
Výstup LM35 má velké kolísání napětí; takže k vyhlazení výstupu se používá kondenzátor 100uF, jak je znázorněno na obrázku.
ADC má vždy spoustu šumu, tento hluk může výrazně ovlivnit výkon, proto pro filtraci šumu používáme kondenzátor 0,1uF. Bez toho bude na výstupu spousta výkyvů.
Čip pracuje na RC (Resistor-Capacitor) oscilátorových hodinách. Jak je znázorněno na schématu zapojení , C2 a R20 tvoří hodiny. Důležité je pamatovat na to, že kondenzátor C2 lze změnit na nižší hodnotu pro vyšší rychlost převodu ADC. S vyšší rychlostí však dojde ke snížení přesnosti. Pokud tedy aplikace vyžaduje vyšší přesnost, zvolte kondenzátor s vyšší hodnotou a pro vyšší rychlost zvolte kondenzátor s nižší hodnotou.
Jak již bylo řečeno, LM35 poskytuje + 10 mV pro každý stupeň Celsia. Maximální teplota, kterou lze měřit pomocí LM35, je 150 ° C. Na výstupní svorce LM35 tedy budeme mít maximálně 1,5V. Ale výchozí referenční napětí ADC0804 je + 5V. Pokud tedy použijeme tuto referenční hodnotu, rozlišení výstupu bude nízké, protože bychom použili maximálně (5 / 1,5) 34% rozsahu digitálního výstupu.
Naštěstí má ADC0804 nastavitelný kolík Vref (PIN9), jak je znázorněno výše ve schématu kolíků. Takže nastavíme Vref čipu na + 2V. Chcete-li nastavit Vref + 2V, musíme na PIN9 poskytnout napětí + 1V (VREF / 2). Zde používáme 10K pot pro nastavení napětí na PIN9 na + 1V. K získání přesného napětí použijte voltmetr.
Dříve jsme použili snímač teploty LM35 ke čtení pokojové teploty pomocí Arduina a AVR mikrokontroléru. Zkontrolujte také měření vlhkosti a teploty pomocí Arduina
Vysvětlení programování:
Jakmile je vše připojeno podle schématu zapojení, můžeme zapnout PI pro zápis programu do PYHTONU.
Budeme mluvit o několika příkazech, které budeme používat v programu PYHTON, Chystáme se importovat soubor GPIO z knihovny, níže uvedená funkce nám umožňuje programovat GPIO piny PI. Přejmenováváme také „GPIO“ na „IO“, takže v programu, kdykoli budeme chtít odkazovat na piny GPIO, použijeme slovo „IO“.
importovat RPi.GPIO jako IO
Někdy, když piny GPIO, které se snažíme použít, mohou dělat nějaké další funkce. V takovém případě obdržíme varování při provádění programu. Níže uvedený příkaz říká PI, aby ignoroval varování a pokračoval v programu.
IO.setwarnings (False)
Můžeme označit GPIO piny PI, buď číslem kolíku na desce, nebo jejich číslem funkce. Jako „PIN 29“ na desce je „GPIO5“. Řekneme tedy, že zde buď budeme reprezentovat špendlík číslem '29' nebo '5'.
IO.setmode (IO.BCM)
Nastavujeme 8 pinů jako vstupní piny. Těmito piny detekujeme 8 bitů dat 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 případě, že je podmínka ve složených závorkách pravdivá, budou příkazy uvnitř smyčky provedeny jednou. Pokud tedy pin 19 GPIO stoupne vysoko, budou příkazy uvnitř smyčky IF provedeny jednou. Pokud GPIO pin 19 nedosáhne vysoké hodnoty, příkazy uvnitř smyčky IF nebudou provedeny.
if (IO.input (19) == True):
Níže uvedený příkaz se používá jako navždy smyčka, s tímto příkazem budou příkazy uvnitř této smyčky prováděny nepřetržitě.
Zatímco 1:
Další vysvětlení kódu je uvedeno v části o kódu níže.
Po napsání programu je čas jej spustit. Před spuštěním programu pojďme mluvit o tom, co se děje v okruhu, jako shrnutí. První snímač LM35 detekuje teplotu v místnosti a na svém výstupu poskytuje analogové napětí. Toto proměnné napětí představuje teplotu lineárně s + 10 mV na ° C. Tento signál je přiváděn na čip ADC0804, tento čip převádí analogovou hodnotu na digitální s 255/200 = 1,275 počítáním na 10 mv nebo 1,275 počítáním na 1 stupeň. Tento počet přijímá PI GPIO. Program převede počet na hodnotu teploty a zobrazí ji na obrazovce. Typická teplota odečtená PI je uvedena níže, Proto jsme tento monitor teploty Raspberry Pi.