- Szükséges anyag:
- ADC0804 egycsatornás, 8 bites ADC modul:
- Áramkör és magyarázat:
- A Raspberry Pi programozása:
- A Flex Sensor értékének megjelenítése az LCD-n Raspberry Pi segítségével:
A Raspberry Pi egy ARM architektúra processzor alapú tábla, amelyet elektronikus mérnököknek és hobbistáknak terveztek. A PI az egyik legmegbízhatóbb projektfejlesztési platform odakinn. Nagyobb processzorsebességgel és 1 GB RAM-mal a PI számos nagy horderejű projekthez használható, például képfeldolgozáshoz és a tárgyak internetéhez. Nagyon sok jó dolgot lehet elvégezni a PI-vel, de az egyik szomorú tulajdonság, hogy nincs beépített ADC modulja.
Csak akkor, ha a Raspberry Pi összekapcsolható az érzékelőkkel, megismerheti a valós paramétereket és kölcsönhatásba léphet velük. A legtöbb szenzor analóg érzékelő, ezért meg kell tanulnunk egy külső ADC modult használni Raspberry Pi-vel ezen érzékelők összekapcsolására. Ebben a projektben megtanuljuk, hogyan tudjuk összekapcsolni a Flex Sensor-t a Raspberry Pi-vel és miként jeleníthetjük meg az értékeit az LCD-képernyőn.
Szükséges anyag:
- Raspberry Pi (bármilyen modell)
- ADC0804 IC
- 16 * 2 LCD kijelző
- Flex Sensor
- Ellenállások és kondenzátorok
- Kenyérlap vagy perf tábla.
ADC0804 egycsatornás, 8 bites ADC modul:
Mielőtt tovább folytatnánk, ismerkedjünk meg ezzel az ADC0804 IC-vel és hogyan használhatjuk ezt a málna pi-vel. Az ADC0804 egycsatornás, 8 bites IC, vagyis egyetlen ADC értéket képes leolvasni és 8 bites digitális adatokra leképezni. Ezeket a 8 bites digitális adatokat a Raspberry Pi olvashatja, így az értéke 0–255 lesz, mivel a 2 ^ 8 értéke 256. Amint az az IC alábbi pinoutjaiban látható, a DB0 – DB7 csapok használhatók ezeknek a digitális adatoknak az olvasására. értékek.
Most egy másik fontos dolog az, hogy az ADC0804 5 V feszültségen működik, és így 5 V logikai jelként szolgáltatja a kimenetet. 8 tűs kimenetben (amely 8 bitet képvisel) minden érintkező + 5 V kimenetet biztosít az '1' logika képviseletére. Tehát a probléma az, hogy a PI logika + 3,3 V, tehát nem adhat + 5 V logikát a PI 3,3 V GPIO tűjéhez. Ha + 5 V-ot ad a PI bármely GPIO-tűjéhez, a kártya megsérül.
Tehát a logikai szint + 5V-ról történő csökkentéséhez feszültségosztó áramkört fogunk használni. Megbeszéltük a Feszültségosztó áramkört, korábban keressük a további tisztázást. Amit meg fogunk tenni, az az, hogy két ellenállást használunk az + 5 V-os logika 2 * 2,5 V-os logikára történő felosztására. Tehát az osztás után + 2,5v logikát adunk a Raspberry Pi-nek. Tehát, amikor az ADC0804 bemutatja az '1' logikát, + 5V helyett + 2,5V-t fogunk látni a PI GPIO Pin-en. Tudjon meg többet az ADC-ről itt: Bevezetés az ADC0804-be.
Az alábbiakban bemutatjuk az ADC0804-et használó ADC modul képét , amelyet a Perf Board-ra építettünk:
Áramkör és magyarázat:
Az alábbiakban a Flex Sensor és a Raspberry Pi összekapcsolásának teljes kapcsolási rajza látható. Ugyanez magyarázata a következő.
Ez a málna pi flex érzékelő áramkör kissé összetettnek tűnhet sok vezetékkel, de ha jobban megnézzük, a legtöbb vezeték közvetlenül az LCD-ről és a 8 bites adatcsatlakozóról van összekötve a Raspberry pi-vel. Az alábbi táblázat segítséget nyújt a kapcsolatok létrehozása és ellenőrzése során.
PIN neve |
Málna tű száma |
Raspberry Pi GPIO név |
LCD Vss |
4. tű |
Talaj |
LCD Vdd |
6. tű |
Vcc (+ 5V) |
LCD Vee |
4. tű |
Talaj |
LCD Rs |
38-as tű |
GPIO 20 |
LCD RW |
39-es tű |
Talaj |
LCD E |
40-es tű |
GPIO 21 |
LCD D4 |
3. tű |
GPIO 2 |
LCD D5 |
5. tű |
GPIO 3 |
LCD D6 |
7. tű |
GPIO 4 |
LCD D7 |
11. tű |
GPIO 17 |
ADC0804 Vcc |
2. tű |
Vcc (+ 5V) |
ADC0804 B0 |
19. tű (5.1K-ig) |
GPIO 10 |
ADC0804 B1 |
21. tű (5.1K-ig) |
GPIO 9 |
ADC0804 B2 |
23. tű (5.1K-ig) |
GPIO 11 |
ADC0804 B3 |
29. tű (5.1K-ig) |
GPIO 5 |
ADC0804 B4 |
31. tű (5.1K-ig) |
GPIO 6 |
ADC0804 B5 |
33. tű (5.1K-ig) |
GPIO 13 |
ADC0804 B6 |
35-ös tű (5,1 K-ig) |
GPIO 19 |
ADC0804 B7 |
37. tű (5.1K-ig) |
GPIO 26 |
ADC0804 WR / INTR |
15. tű |
GPIO 22 |
A következő kép segítségével meghatározhatja a Raspberry PIN-kódjait.
Mint minden ADC modulhoz, az ADC0804 IC-hez is órajelre van szükség a működéshez, szerencsére ennek az IC-nek van egy belső óraforrása, ezért csak hozzá kell adnunk az RC áramkört a CLK in és CLK R csapokhoz, ahogy azt az áramkör mutatja. 10K és 105pf értéket használtunk, de bármilyen olyan közeli értéket használhatunk, mint az 1uf, 0.1uf, 0.01uf is működnie kell.
Ezután a Flex érzékelő csatlakoztatásához egy potenciálosztó áramkört használtunk 100K ellenállás segítségével. Ahogy a Flex érzékelő hajlított, az ellenállás változik, és az ellenálláson is csökken a potenciál. Ezt a csökkenést az ADC0804 IC méri és ennek megfelelően generál 8 bites adatokat.
Ellenőrizze a Flex Sensor-hoz kapcsolódó egyéb projekteket:
- Flex Sensor interfész az AVR mikrokontrollerrel
- Arduino alapú Angry Bird Game Controller a Flex Sensor segítségével
- Szervomotor vezérlés Flex Sensor segítségével
- Hangok előállítása az ujjak megérintésével az Arduino segítségével
A Raspberry Pi programozása:
Miután végeztünk a kapcsolatokkal, el kell olvasnunk ezen 8 bitek állapotát a Raspberry Pi használatával, és tizedessé kell alakítanunk őket, hogy felhasználni tudjuk őket. A program ugyanarra a célra, és az így kapott értékeket megjeleníti az LCD képernyőn az oldal végén található. Az alábbiakban a kódot kis junkkákra magyarázzuk.
Szükségünk van egy LCD könyvtárra, hogy összekapcsoljuk az LCD-t Pi-vel. Ehhez a shubham által kifejlesztett könyvtárat használjuk, amely segít egy 16 * 2-es LCD kijelző összekapcsolásában Pi-vel négy vezetékes módban. Szükségünk van könyvtárakra az idő és a Pi GPIO csapok felhasználásához.
Megjegyzés : Az lcd.py fájlt innen kell letölteni, és abba a könyvtárba kell helyezni, ahová ezt a programot mentették. Csak akkor áll össze a kód.
lcd importálása # Az LCD könyvtár importálása a [email protected] címre. importálási idő # Importálási idő RPi.GPIO importálása GPIO-ként #GPIO csak GPIO-ként jelenik meg
Az LCD tűdefiníciók az alábbiak szerint vannak hozzárendelve a változókhoz. Ne feledje, hogy ezek a számok a GPIO PIN-kódok, és nem a tényleges PIN-kódok. A fenti táblázat segítségével összehasonlíthatja a GPIO-számokat a PIN-számokkal. A bináris tömb tartalmazza az összes adat pin számot, és a tömb bitek az összes GPIO érintkezõ eredményét tárolják.
#LCD tűdefiníciók D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 binarys = (10,9,11,5,6,13,19,26) # A PIN-kódok tömbje kapcsolódik a DB0- DB7 bit = 8-bites adatok #eredményei
Most meg kell határoznunk a bemeneti és kimeneti csapokat. A hét adatcsap lesz a bemeneti tű, a kiváltó tű (RST és INTR) pedig a kimeneti tű. A 8 bites adatértékeket csak akkor tudjuk kiolvasni a bemeneti tűről, ha az adatlap szerint egy adott időre magasan kiváltjuk a kimeneti tűt. Mivel a bináris csapokat deklaráltuk a binarys tömbben, a deklaráláshoz a for ciklust használhatjuk, az alábbiak szerint.
bináris bináris tárolókban: GPIO.setup (bináris, GPIO.IN) #Minden bináris láb bemeneti tüske #Trigger pin GPIO.setup (22, GPIO.OUT) #WR és INTR láb
Most az LCD könyvtár parancsokkal inicializálhatjuk az LCD modult, és megjeleníthetünk egy kis bevezető üzenetet az alábbiak szerint.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro Message mylcd.Print ("Flexor Sensor with") mylcd.setCursor (2,1) mylcd.Print ("Málna Pi ") time.sleep (2) mylcd.clear ()
A végtelen, míg a ciklus belsejében elkezdjük olvasni a bináris értékeket tizedessé konvertálva, és frissítjük az eredményt az LCD-n. Amint azt korábban elmondtuk, mielőtt az ADC értékeket elolvastuk, a kiváltó csapot magasra kell állítanunk egy adott ideig az ADC konverzió aktiválásához. Ez a következő sorok használatával történik.
GPIO.output (22, 1) # Kapcsolja be az időzítőt (alvás) (0.1) GPIO.output (22, 0) #Kapcsolja
Most el kell olvasnunk a 8 adat pint, és frissítenünk kell az eredményt a bit tömbben. Ehhez egy for ciklust használunk, hogy összehasonlítsuk az egyes bemeneti tűket az Igaz és Hamis értékekkel. Ha igaz, akkor a megfelelő bit tömböt 1-ként állítjuk elő, 0-ként. Ez az összes 8 bites adat 0 és 1 érték lesz a beolvasott értékeknek megfelelően.
# Olvassa el a bemeneti tüskéket és frissítse az eredményt az i bittömbben a (8) tartományban: if (GPIO.input (bináris fájlok) == Igaz): bitek = 1 if (GPIO.input (binárisok) == Hamis): bitek = 0
Miután frissítettük a bit tömböt, ezt a tömböt tizedesértékre kell átalakítanunk. Ez nem más, mint bináris-decimális konverzió. 8 bites bináris adatok esetén a 2 ^ 8 értéke 256. Tehát 0 és 255 közötti decimális adatokat kapunk. A pythonban a „**” operátort használjuk bármely érték erejének megtalálásához. Mivel a bitek MSB-vel kezdődnek, megszorozzuk 2 ^ -vel (7-pozíció). Így az összes bináris értéket tizedesre konvertálhatjuk, majd megjeleníthetjük az LCD-n
# számolja ki a tizedesértéket az i bittömb segítségével a (8) tartományban: decimális = decimális + (bit * (2 ** (7-i)))
Miután megtudtuk a tizedes értéket, könnyen kiszámítható a feszültség értéke. Csak meg kell szorozni 19,63-mal. Mivel egy 8 bites 5 VADC esetén minden bit 19,3 millil volt analógiája. Az így kapott feszültség értéke az ADC0804 IC Vin + és Vin- érintkezõin megjelenõ feszültség értéke.
# feszültségérték kiszámítása Feszültség = tizedes * 19,63 * 0,001 #egyik egység 19,3mV
A feszültség értékének felhasználásával meghatározhatjuk, hogy a flex érzékelő hogyan hajlott és milyen irányban hajlott. Az alábbi sorokban csak összehasonlítottam az olvasott feszültségértékeket előre meghatározott feszültségértékekkel, hogy jelezzem a Flex érzékelő helyzetét az LCD képernyőn.
#compare érzékelő feszültségének és kijelzőjének állapota mylcd.setCursor (1,1) if (Feszültség> 3.8): mylcd.Print ("Bent Forward") elif (Voltage <3.5): mylcd.Print ("Bent Backward") else: mylcd.Print ("Stabil")
Hasonlóképpen használhatja a feszültségértéket bármely olyan feladat elvégzésére, amelyet a Raspberry Pi végrehajtani kíván.
A Flex Sensor értékének megjelenítése az LCD-n Raspberry Pi segítségével:
A projekt működése nagyon egyszerű. De győződjön meg arról, hogy letöltötted az lcd.py fejlécfájlt, és ugyanabba a könyvtárba helyezted, ahol az aktuális programod található. Ezután hajtsa végre a kapcsolási rajzokat a kapcsolási rajzon egy kenyérlap vagy egy tökéletes tábla segítségével, és futtassa az alábbi programot a Pi-jén, és működnie kell. A beállítottnak alábbinak kell kinéznie.
Amint látható, az LCD kijelzi a tizedes értéket, a feszültség értékét és az érzékelő helyzetét. Csak hajlítsa előre vagy hátra az érzékelőt, és láthatja, hogy a feszültség és a tizedesérték változik, és egy állapot szöveg is megjelenik. Bármely érzékelőt csatlakoztathat, és észreveheti, hogy a feszültség változik.
A bemutató teljes működése megtalálható az alábbi videóban. Remélem, megértette a projektet, és élvezett valami hasonlót. Ha kétségei vannak, hagyja őket a megjegyzés rovatban vagy a fórumokon, és én mindent megteszek a válaszadásban.