- ADC0804 a Raspberry Pi:
- Požadované komponenty:
- Vysvětlení obvodu:
- Vysvětlení programování:
- Pracovní:
Raspberry Pi je deska založená na procesoru architektury ARM určená pro elektronické inženýry a fandy. PI je jednou z nejdůvěryhodnějších platforem pro vývoj projektů. Díky vyšší rychlosti procesoru a 1 GB RAM lze PI použít pro mnoho významných projektů, jako je zpracování obrazu a internet věcí.
Při provádění některého z vysoce profilovaných projektů je třeba porozumět základním funkcím PI. V těchto cvičeních se budeme věnovat všem základním funkcím Raspberry Pi. V každém tutoriálu probereme jednu z funkcí PI. Na konci této série tutoriálů Raspberry Pi budete moci sami dělat vysoce postavené projekty. Projděte si níže výukové programy:
- Začínáme s Raspberry Pi
- Konfigurace Raspberry Pi
- LED Blinky
- Rozhraní tlačítka Raspberry Pi
- Generace PWM Raspberry Pi
- Ovládání stejnosměrného motoru pomocí Raspberry Pi
- Ovládání krokového motoru s Raspberry Pi
- Rozhraní Shift Register s Raspberry Pi
V tomto tutoriálu budeme propojovat čip ADC (analogově-digitální převod) s Raspberry Pi. Známe všechny parametry analogu, to znamená, že se tam průběžně mění v čase. Řekněme například, že teplota v místnosti se neustále mění. Tato teplota je opatřena desetinnými čísly. Ale v digitálním světě neexistují žádná desetinná čísla, takže musíme převést analogovou hodnotu na digitální hodnotu. Tento proces převodu se provádí technikou ADC. Více informací o ADC se dozvíte zde: Úvod do ADC0804
ADC0804 a Raspberry Pi:
Normální řadiče mají kanály ADC, ale pro PI nejsou interně poskytovány žádné kanály ADC. Pokud tedy chceme propojit jakékoli analogové senzory, potřebujeme konverzní jednotku ADC. Z tohoto důvodu tedy budeme používat rozhraní ADC0804 s 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. S měřicím napětím maximálně 5 V budeme mít změnu za každých 19,5 mV. 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.
Zde se dozvíte více o pinech GPIO Raspberry Pi a projdete si naše předchozí výukové programy.
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
- 220Ω nebo 1KΩ rezistor (17 kusů)
- 10K hrnec
- Kondenzátor 0,1µF (2 kusy)
- ADC0804 IC
- Chlebová deska
Vysvětlení obvodu:
Funguje na napájecí napětí + 5 V a může měřit rozsah proměnného napětí v rozsahu 0-5 V.
Tyto přípojky pro propojení ADC0804 na Raspberry Pi, jsou uvedeny ve schématu zapojení výše.
ADC má vždy spoustu šumu, tento hluk může výrazně ovlivnit výkon, takže pro filtrování š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.
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í programu je uvedeno v části o kódu níže.
Pracovní:
Po napsání programu a jeho spuštění uvidíte na obrazovce „0“. „0“ znamená 0 voltů na vstupu.
Pokud nastavíme 10K hrnec připojený k čipu, uvidíme změnu hodnot na obrazovce. Hodnoty na obrazovce se neustále posouvají, jedná se o digitální hodnoty čtené PI.
Řekněme, že pokud dostaneme hrnec do středu, máme na vstupu ADC0804 + 2,5V. Na obrazovce tedy vidíme 128, jak je znázorněno níže.
Pro analogovou hodnotu + 5 V budeme mít 255.
Takže změnou banku měníme napětí od 0 do + 5 V na vstupu ADC0804. S tímto PI přečtěte hodnoty od 0-255. Hodnoty jsou vytištěny na obrazovce.
Takže jsme propojili ADC0804 na Raspberry Pi.