- Tarvittava materiaali:
- ADC0804 Yksikanavainen 8-bittinen ADC-moduuli:
- Piirikaavio ja selitys:
- Vadelma Pi: n ohjelmointi:
- Flex Sensor -arvon näyttäminen nestekidenäytöllä Raspberry Pi: n avulla:
Raspberry Pi on ARM-arkkitehtuuriprosessoripohjainen kortti, joka on suunniteltu elektroniikkasuunnittelijoille ja harrastajille. PI on yksi luotetuimmista projektien kehittämisalustoista. Suuremmalla prosessorinopeudella ja 1 Gt: n RAM-muistilla PI: tä voidaan käyttää moniin korkean profiilin projekteihin, kuten kuvankäsittelyyn ja esineiden internetiin. PI: llä voidaan tehdä paljon hienoja asioita, mutta yksi surullinen ominaisuus on, että sillä ei ole sisäänrakennettua ADC-moduulia.
Vain jos Vadelma Pi voidaan liittää antureihin, se voi oppia tuntemaan todellisen maailman parametrit ja olemaan vuorovaikutuksessa sen kanssa. Suurin osa antureista on analogisia antureita, joten meidän pitäisi oppia käyttämään ulkoista ADC-moduulia IC Raspberry Pi: n kanssa näiden anturien liittämiseksi. Tässä projektissa opimme, kuinka voimme liittää Flex Sensorin Raspberry Pi: n kanssa ja näyttää sen arvot LCD-näytöllä.
Tarvittava materiaali:
- Vadelma Pi (mikä tahansa malli)
- ADC0804 IC
- 16 * 2 LCD-näyttö
- Joustava anturi
- Vastukset ja kondensaattorit
- Breadboard tai perf board.
ADC0804 Yksikanavainen 8-bittinen ADC-moduuli:
Ennen kuin jatkat, tutustu tähän ADC0804-IC: hen ja miten sitä käytetään vadelma pi: n kanssa. ADC0804 on yksikanavainen 8-bittinen IC, mikä tarkoittaa, että se voi lukea yhden ADC-arvon ja yhdistää sen 8-bittiseen digitaaliseen dataan. Raspberry Pi voi lukea nämä 8-bittiset digitaaliset tiedot, joten arvo on 0 - 255, koska 2 ^ 8 on 256. Kuten alla olevan IC: n pinouteissa näkyy, nastoja DB0 - DB7 käytetään näiden digitaalisten tietojen lukemiseen. arvot.
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-nastaisessa lähdössä (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 + 2,5v logiikan Vadelma Pi: lle. Joten aina kun ADC0804 esittää logiikan '1', PI GPIO -nastassa näkyy + 2,5 V + 5 V: n sijasta. Lisätietoja ADC: stä on täällä: ADC0804: n esittely.
Alla on kuva ADC-moduulista, joka käyttää ADC0804: ää ja jonka olemme rakentaneet Perf Boardille:
Piirikaavio ja selitys:
Täydellinen kytkentäkaavio Flex-anturin ja Raspberry Pi: n liittämistä varten on esitetty alla. Saman selitys on seuraava.
Tämä vadelma pi flex -anturipiiri saattaa tuntua hieman monimutkaiselta, ja siinä on paljon johtoja, mutta jos tarkastelet tarkemmin, suurin osa johtimista on kytketty suoraan nestekidenäytöstä ja 8-bittisestä datanastasta Raspberry pi -laitteeseen. Seuraava taulukko auttaa sinua yhteyksien luomisessa ja tarkistamisessa.
Kiinnitä nimi |
Vadelman pin-numero |
Vadelma Pi GPIO -nimi |
LCD Vss |
Tappi 4 |
Maa |
LCD Vdd |
Tappi 6 |
Vcc (+ 5 V) |
LCD-näyttö |
Tappi 4 |
Maa |
LCD Rs |
Tappi 38 |
GPIO 20 |
LCD RW |
Tappi 39 |
Maa |
LCD E |
Tappi 40 |
GPIO 21 |
LCD D4 |
Tappi 3 |
GPIO 2 |
LCD D5 |
Tappi 5 |
GPIO 3 |
LCD D6 |
Tappi 7 |
GPIO 4 |
LCD D7 |
Tappi 11 |
GPIO 17 |
ADC0804 Vcc |
Tappi 2 |
Vcc (+ 5 V) |
ADC0804 B0 |
Tappi 19 (5,1 K: n kautta) |
GPIO 10 |
ADC0804 B1 |
Tappi 21 (5,1 kt) |
GPIO 9 |
ADC0804 B2 |
Tappi 23 (5,1 K: n kautta) |
GPIO 11 |
ADC0804 B3 |
Tappi 29 (5,1 kt) |
GPIO 5 |
ADC0804 B4 |
Tappi 31 (5,1 kt) |
GPIO 6 |
ADC0804 B5 |
Tappi 33 (5,1 kt) |
GPIO 13 |
ADC0804 B6 |
Tappi 35 (5,1 K: n kautta) |
GPIO 19 |
ADC0804 B7 |
Tappi 37 (5,1 K: n kautta) |
GPIO 26 |
ADC0804 WR / INTR |
Tappi 15 |
GPIO 22 |
Seuraavan kuvan avulla voit määrittää vadelman PIN-numerot.
Kuten kaikki ADC-moduulit, ADC0804 IC vaatii myös kellosignaalin toimiakseen, onneksi tällä IC: llä on sisäinen kellolähde, joten meidän on vain lisättävä RC-piiri CLK in- ja CLK R-nastoihin kuten piirissä on esitetty. Olemme käyttäneet arvoa 10K ja 105pf, mutta voimme käyttää mitä tahansa arvoa lähellä, kuten 1uf, 0.1uf, 0.01uf pitäisi myös toimia.
Sitten Flex-anturin liittämiseen olemme käyttäneet potentiaalijakajapiiriä 100K-vastuksella. Kun Flex-anturi on taivutettu, vastus sen yli vaihtelee ja myös potentiaalinen pudotus vastuksen yli. Tämä pudotus mitataan ADC0804 IC: llä ja vastaavasti generoidaan 8-bittinen data.
Katso muut Flex Sensor -hankkeeseen liittyvät projektit:
- Joustava anturi liitetään AVR-mikrokontrolleriin
- Arduino-pohjainen Angry Bird -peliohjain, joka käyttää Flex Sensoria
- Servomoottorin ohjaus Flex-anturilla
- Äänten luominen napauttamalla sormia Arduinolla
Vadelma Pi: n ohjelmointi:
Kun yhteydet on tehty, meidän tulisi lukea näiden 8-bittisten tila Raspberry Pi: n avulla ja muuntaa ne desimaaliksi, jotta voimme käyttää niitä. Ohjelma tehdä sama ja näyttää tulokset LCD-näytöllä on tämän sivun lopussa. Lisäksi koodi selitetään pieniksi junkeiksi alla.
Tarvitsemme LCD- kirjaston, jotta LCD voidaan liittää Pi: n kanssa. Tätä varten käytämme shubhamin kehittämää kirjastoa, joka auttaa meitä liittämään 16 * 2 LCD-näytön Pi: n kanssa nelijohtimisessa tilassa. Tarvitsemme myös kirjastoja, jotta voimme käyttää aikaa ja Pi GPIO -nastoja.
Huomaa : Lcd.py tulee ladata täältä ja sijoittaa samaan hakemistoon, johon tämä ohjelma on tallennettu. Vasta sitten koodi kootaan.
tuo lcd #Tuoda LCD-kirjasto kirjoittamalla [email protected] tuontiaika #Tuontiajan tuonti RPi.GPIO GPIO: na #GPIO tarjotaan vain GPIO: na
LCD tappi määritelmät ovat muuttujille, kuten on esitetty alla. Huomaa, että nämä numerot ovat GPIO-pin-numeroita eivätkä todellisia pin-numeroita. Voit käyttää yllä olevaa taulukkoa verrata GPIO-numeroita PIN-numeroihin. Binaariryhmä sisältää kaikki datanastanumerot ja matriisibitit tallentavat kaikkien GPIO-nastojen tuloksena olevan arvon.
#LCD-nastamääritykset D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 binaria = (10,9,11,5,6,13,19,26) # Tappilukujen joukko yhdistetään DB0- DB7-bittiä = # 8-bittisen datan tulosarvot
Nyt meidän on määriteltävä tulo- ja lähtönastat. Seitsemän datanasta on tulotappi ja liipaisintappi (RST ja INTR) on lähtönapa. Voimme lukea 8-bittiset data-arvot syöttötapilta vain, jos laukaisemme lähtönastan korkeaksi tietyn ajan tietolomakkeen mukaan. Koska olemme ilmoittaneet binääriset nastat binarys-taulukossa, voimme käyttää for for -silmukkaa ilmoitukseen alla esitetyllä tavalla.
binääreille binääritiedostoissa: GPIO.setup (binaarinen, GPIO.IN) #Kaikki binaariset nastat ovat syöttötappeja #Trigger pin GPIO.setup (22, GPIO.OUT) #WR- ja INTR-nastat lähetetään
Nyt LCD-kirjastokomennoilla voimme alustaa LCD-moduulin ja näyttää pienen introsanoman alla olevan kuvan mukaisesti.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro-viesti mylcd.Print ("Flex Sensor with") mylcd.setCursor (2,1) mylcd.Print ("Vadelma Pi ") time.sleep (2) mylcd.clear ()
Infinite while -silmukan sisällä aloitamme binääriarvojen muuntamisen desimaaleiksi ja päivitämme tuloksen LCD-näytöllä. Kuten aiemmin sanottiin ennen ADC-arvojen lukemista, liipaisintapin tulisi olla korkea tietyn ajan aktivoidakseen ADC-muunnoksen. Tämä tehdään käyttämällä seuraavia rivejä.
GPIO.lähtö (22, 1) #Kytke päälle Liipaisun aika. Lepotila (0,1) GPIO.lähtö (22, 0) #Katkaise laukaisin
Meidän pitäisi nyt lukea 8-data-nastat ja päivittää tulos bittiryhmässä. Tätä varten käytämme for for -silmukkaa verrataksemme kutakin syöttötappia tosi ja väärä. Jos tosi, vastaava bittiryhmä tehdään yhtenä muuna, se tehdään 0. Tämä oli kaikki 8-bittiset tiedot 0 ja 1 vastaavia luetuista arvoista.
#Lue tulonastat ja päivitä tulos i: n bittiryhmään alueella (8): if (GPIO.input (binarys) == True): bittiä = 1 if (GPIO.input (binarys) == False): bittiä = 0
Kun olemme päivittäneet bittiryhmän, meidän pitäisi muuntaa tämä taulukko desimaaliarvoksi. Tämä ei ole muuta kuin binäärinen desimaalimuunnos. 8-bittiselle binääridatalle 2 ^ 8 on 256. Saamme siis desimaalidatan välillä 0 - 255. Pythonissa operaattoria “**” käytetään minkä tahansa arvon tehon löytämiseen. Koska bitit alkavat MSB: stä, kerrotaan se 2 ^: lla (7-asema). Tällä tavalla voimme muuntaa kaikki binääriarvot desimaalitiedoiksi ja näyttää ne sitten nestekidenäytöllä
#laske desimaaliarvo käyttämällä i: n bittiryhmää alueella (8): desimaali = desimaali + (bittiä * (2 ** (7-i)))
Kun tiedämme desimaaliarvon, jännitteen arvo on helppo laskea. Meidän on vain kerrottava se arvolla 19,63. Koska 8-bittiselle 5 VADC: lle kukin bitti on analoginen 19,3 millijännitteestä. Tuloksena oleva jännitearvo on jännitteen arvo, joka on ilmestynyt ADC0804 IC: n nastojen Vin + ja Vin- yli.
# laskea jännitteen arvo Jännite = desimaali * 19,63 * 0,001 # yksi yksikkö on 19,3 mV
Jännitteen arvon avulla voimme määrittää, kuinka taipuunturi on taivutettu ja mihin suuntaan se on taivutettu. Alla olevilla riveillä olen juuri verrannut luettuja jännitearvoja ennalta määrättyihin jännitteen arvoihin osoittamaan Flex-anturin sijaintia LCD-näytöllä.
#vertaa anturin jännitettä ja näyttötilaa mylcd.setCursor (1,1) if (Jännite> 3.8): mylcd.Print ("Taivutettu eteenpäin") elif (Jännite <3.5): mylcd.Print ("Taivutettu taaksepäin") muu: mylcd.Print ("Vakaa")
Vastaavasti voit käyttää jännitearvoa minkä tahansa tehtävän suorittamiseen, jonka haluat Raspberry Pi: n suorittavan.
Flex Sensor -arvon näyttäminen nestekidenäytöllä Raspberry Pi: n avulla:
Projektin työskentely on hyvin yksinkertaista. Varmista kuitenkin, että olet ladannut lcd.py- otsikkotiedoston ja sijoittanut sen samaan hakemistoon, jossa nykyinen ohjelma on. Tee sitten liitännät piirikaavion avulla leivän tai perf-levyn avulla ja suorita alla oleva ohjelma Pi: lläsi ja sinun pitäisi saada asia toimimaan. Perustamasi pitäisi näyttää tältä alla.
Kuten näytetään, nestekidenäytössä näkyy desimaaliarvo, jännite-arvo ja anturin sijainti. Taivuta vain anturia eteen- tai taaksepäin ja sinun pitäisi pystyä näkemään jännitteen ja desimaaliarvojen vaihtelevan, myös tilateksti tulee näkyviin. Voit liittää minkä tahansa anturin ja huomata, että sen jännite vaihtelee.
Opetusohjelman täydellinen toiminta löytyy alla olevasta videosta. Toivottavasti ymmärrät projektin ja nautit rakentamaan jotain vastaavaa. Jos sinulla on epäilyksiä, jätä ne kommenttiosioon tai foorumeille, ja yritän parhaani vastata niihin.