- ADC0804 ja Vadelma Pi:
- LM35-lämpötila-anturi:
- Vaaditut komponentit:
- Piiri ja työskentely Selitys:
- Ohjelmoinnin selitys:
Raspberry Pi Tutorial -sarjassa olemme enimmäkseen käsittäneet kaikki Raspberry Pi: n kanssa yhteensopivat peruskomponentit. Olemme käsittäneet kaikki oppaat yksinkertaisella ja yksityiskohtaisella tavalla, jotta kuka tahansa, riippumatta siitä, onko hän työskennellyt Raspberry Pi: n kanssa vai ei, voi oppia tästä sarjasta helposti. Ja kun olet käynyt läpi kaikki opetusohjelmat, voit rakentaa joitain korkean tason projekteja Raspberry Pi: n avulla.
Joten tässä suunnittelemme ensimmäisen sovelluksen edellisten oppaiden perusteella. Ensimmäinen perushakemus on Raspberry Pi: n lukuhuoneen lämpötila. Ja voit seurata lukemia tietokoneella.
Kuten edellisissä opetusohjelmissa keskusteltiin, Raspberry Pi: ssä ei ole sisäisesti tarjottuja ADC-kanavia. Joten jos haluamme liittää analogiset anturit, tarvitsemme ADC-muunnosyksikön. Ja yhdessä opetusohjelmistamme olemme liittäneet ADC0804-sirun Raspberry Pi: hen analogisen arvon lukemiseksi. Joten käy sen läpi ennen kuin rakennat tämän huonelämpötilan lämpömittarin.
ADC0804 ja Vadelma Pi:
ADC0804 on siru, joka on suunniteltu muuntamaan analoginen signaali 8-bittiseksi digitaaliseksi dataksi. Tämä siru on yksi suosituimmista ADC-sarjoista. Se on 8-bittinen muunnosyksikkö, joten meillä on arvoja tai 0-255 arvoa. Tämän sirun resoluutio muuttuu valitsemamme vertailujännitteen perusteella, puhumme siitä myöhemmin. Alla on ADC0804: n Pinout:
Toinen tärkeä asia tässä on, että ADC0804 toimii 5 V: n jännitteellä, joten se tuottaa lähtöä 5 V: n loogisessa signaalissa. 8-napaisessa lähdössä (joka edustaa 8 bittiä) jokainen nasta tarjoaa + 5 V: n lähdön edustamaan logiikkaa'1 '. Joten ongelma on, että PI-logiikka on + 3.3v, joten et voi antaa + 5V-logiikkaa PI: n + 3.3V GPIO-nastalle. Jos annat + 5 V mille tahansa PI-GPIO-nastalle, levy vahingoittuu.
Joten logiikkatason alentamiseksi + 5 V: sta käytämme jännitteenjakajan piiriä. Olemme keskustelleet jännitteenjakajapiiristä, etsimme sitä aikaisemmin lisäselvityksiä varten. Mitä teemme, on, että käytämme kahta vastusta jakamaan + 5 V logiikka 2 * 2,5 V logiikaksi. Joten jaon jälkeen annamme PI: lle + 2,5 V logiikan. Joten aina kun ADC0804 esittää logiikan '1', PI GPIO -nastassa näkyy + 2,5 V + 5 V: n sijasta.
LM35-lämpötila-anturi:
Nyt lukeminen lämpötila huoneessa, tarvitsemme anturi. Täällä aiomme käyttää LM35-lämpötila-anturia. Lämpötila mitataan yleensä ”celsiusasteikolla” tai “Fahrenheit”. “LM35” -anturi tuottaa tuotoksen celsiusasteina.
Kuten kuvassa on esitetty, LM35 on kolmitapainen transistorin kaltainen laite. Tapit on numeroitu seuraavasti:
PIN1 = Vcc - virta (kytketty + 5 V)
PIN2 = Signaali tai lähtö (kytketty ADC-siruun)
PIN3 = maa (kytketty maahan)
Tämä anturi tarjoaa ulostulossa vaihtelevan jännitteen lämpötilan perusteella. Jokaista +1 celsiusasteen lämpötilan nousua kohden ulostulotapissa on + 10 mV suurempi jännite. Joten jos lämpötila on 0 ° C, anturin teho on 0 V, jos lämpötila on 10 ° C, anturin teho on + 100 mV, jos lämpötila on 25 ° C, anturin teho on + 250 mV.
Vaaditut komponentit:
Tässä käytämme Raspberry Pi 2 -mallia B Raspbian Jessie -käyttöjärjestelmän kanssa. Kaikista laitteisto- ja ohjelmistovaatimuksista on keskusteltu aiemmin, voit etsiä niitä Raspberry Pi -johdannosta, paitsi mitä tarvitsemme:
- Liitintapit
- 1KΩresistori (17 kpl)
- 10K potti
- 0,1 uF kondensaattori
- 100µF kondensaattori
- 1000µF kondensaattori
- ADC0804 IC
- LM35 Lämpötila-anturi
- Leipälauta
Piiri ja työskentely Selitys:
Yhteydet, jotka tehdään Vadelman liittämiseksi ADC0804: een ja LM35: een, on esitetty alla olevassa piirikaaviossa.
LM35-ulostulossa on paljon jännitteen vaihteluita; joten 100uF-kondensaattoria käytetään ulostulon tasoittamiseksi, kuten kuvassa on esitetty.
ADC: llä on aina paljon melua, tämä melu voi vaikuttaa suuresti suorituskykyyn, joten käytämme 0,1uF-kondensaattoria kohinasuodatukseen. Ilman tätä tuotoksessa on paljon vaihteluita.
Piiri toimii RC (vastus-kondensaattori) oskillaattorikellolla. Kuten piirikaaviossa on esitetty , C2 ja R20 muodostavat kellon. Tärkeä asia, joka tässä on muistettava, on kondensaattori C2, joka voidaan muuttaa pienemmäksi arvoksi ADC-muunnoksen korkeammalle nopeudelle. Suuremmalla nopeudella tarkkuus kuitenkin pienenee. Joten jos sovellus vaatii suurempaa tarkkuutta, valitse kondensaattori, jolla on suurempi arvo, ja suuremmalla nopeudella valitse kondensaattori, jolla on pienempi arvo.
Kuten aiemmin kerrottiin, LM35 tarjoaa + 10 mV jokaista senttimetriä kohti. Suurin lämpötila, joka voidaan mitata LM35: llä, on 150 astetta. Joten meillä on enintään 1,5 V LM35-lähtöliittimessä. Mutta ADC0804: n oletusviitejännite on + 5 V. Joten jos käytämme tätä viitearvoa, lähdön resoluutio on pieni, koska käytämme enintään (5 / 1,5) 34% digitaalilähtöalueesta.
Onneksi ADC0804: ssä on säädettävä Vref-tappi (PIN9), kuten yllä olevassa Pin-kaaviossa on esitetty. Joten asetamme sirun Vref arvoksi + 2V. Vref + 2V: n asettamiseksi meidän on annettava + 1 V: n jännite (VREF / 2) PIN9: ssä. Tässä käytämme 10K-pottia jännitteen säätämiseen PIN9: ssä + 1V: iin. Käytä volttimittaria tarkan jännitteen saamiseksi.
Aikaisemmin olemme käyttäneet LM35-lämpötila-anturia huoneenlämpötilan lukemiseen Arduinon ja AVR-mikrokontrollerin avulla. Tarkista myös kosteuden ja lämpötilan mittaus Arduinolla
Ohjelmoinnin selitys:
Kun kaikki on kytketty piirikaavion mukaisesti, voimme käynnistää PI: n kirjoittamaan ohjelman PYHTON-muodossa.
Puhumme muutamasta komennosta, joita aiomme käyttää PYHTON-ohjelmassa, Aiomme tuoda GPIO-tiedoston kirjastosta, alla oleva toiminto antaa meille mahdollisuuden ohjelmoida PI: n GPIO-nastat. Nimeämme myös "GPIO": n "IO: ksi", joten aina kun haluamme viitata GPIO-nastoihin, käytämme sanaa "IO".
tuo RPi.GPIO IO: ksi
Joskus, kun GPIO-nastat, joita yritämme käyttää, saattavat tehdä joitain muita toimintoja. Siinä tapauksessa saamme varoituksia ohjelman suorituksen aikana. Alla oleva komento kehottaa PI: tä ohittamaan varoitukset ja jatkamaan ohjelmaa.
IO.setwarnings (väärä)
Voimme viitata PI: n GPIO-nastoihin joko aluksella olevalla pin-numerolla tai niiden toimintonumerolla. Kuten taululla oleva PIN-koodi 29, on GPIO5. Joten sanomme täällä joko aion edustaa tappi tässä '29' tai '5'.
IO.setmode (IO.BCM)
Asetamme 8 nastaa syöttönapeiksi. Havaitsemme 8-bittiset ADC-tiedot näistä nastoista.
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)
Jos aaltosulkeiden ehto on totta, silmukan sisällä olevat lauseet suoritetaan kerran. Joten jos GPIO-nasta 19 nousee korkealle, IF-silmukan sisällä olevat lauseet suoritetaan kerran. Jos GPIO-nasta 19 ei mene korkealle, IF-silmukan sisällä olevia lauseita ei suoriteta.
jos (IO.tulo (19) == Tosi):
Alla olevaa komentoa käytetään ikuisesti silmukana, tällä komennolla tämän silmukan sisällä olevat lauseet suoritetaan jatkuvasti.
Vaikka 1:
Koodin lisäselvitys on annettu alla olevassa Koodi-osiossa.
Ohjelman kirjoittamisen jälkeen on aika suorittaa se. Ennen kuin suoritat ohjelman, antaa keskustelujen tapahtua piirissä Yhteenvetona. Ensimmäinen LM35-anturi havaitsee huonelämpötilan ja tuottaa analogisen jännitteen lähdössä. Tämä vaihteleva jännite edustaa lämpötilaa lineaarisesti + 10 mV / ºC. Tämä signaali syötetään ADC0804-sirulle, tämä siru muuntaa analogisen arvon digitaaliseksi arvoksi 255/200 = 1,275 count per 10mv tai 1,275count 1degree. PI GPIO ottaa tämän määrän. Ohjelma muuntaa laskennan lämpötilan arvoksi ja näyttää sen näytöllä. PI: n luoma tyypillinen lämpötila on esitetty alla, Siksi me tämä Vadelma Pi lämpötilavalvonta.