- Nepieciešamais materiāls:
- ADC0804 viena kanāla 8 bitu ADC modulis:
- Shēmas shēma un skaidrojums:
- Aveņu Pi programmēšana:
- Rāda Flex Sensor vērtību LCD, izmantojot Raspberry Pi:
Raspberry Pi ir ARM arhitektūras procesors, kas paredzēts elektronikas inženieriem un vaļaspriekiem. PI ir viena no uzticamākajām projektu izstrādes platformām, kas tur pastāv. Ar lielāku procesora ātrumu un 1 GB RAM PI var izmantot daudziem augsta līmeņa projektiem, piemēram, attēlu apstrādei un lietu internetam. Ir daudz foršu lietu, ko var izdarīt ar PI, taču viena skumja iezīme ir tā, ka tai nav iebūvēta ADC moduļa.
Tikai tad, ja Raspberry Pi varētu sasaistīt ar sensoriem, tas var uzzināt par reālās pasaules parametriem un mijiedarboties ar tiem. Lielākā daļa sensoru, kas tur atrodas, ir analogie sensori, un tāpēc mums vajadzētu iemācīties izmantot ārēju ADC moduli IC ar Raspberry Pi, lai šos sensorus savienotu. Šajā projektā mēs uzzināsim, kā mēs varam saskarni Flex Sensor ar Raspberry Pi un parādīt tā vērtības LCD ekrānā.
Nepieciešamais materiāls:
- Aveņu Pi (jebkurš modelis)
- ADC0804 IC
- 16 * 2 LCD displejs
- Elastīgais sensors
- Rezistori un kondensatori
- Maizes dēlis vai perf.
ADC0804 viena kanāla 8 bitu ADC modulis:
Pirms mēs turpinām turpināt, ļaujiet mums uzzināt par šo ADC0804 IC un kā to izmantot ar aveņu pi. ADC0804 ir viena kanāla 8 bitu IC, tas nozīmē, ka tas var nolasīt vienu ADC vērtību un piesaistīt to 8 bitu digitālajiem datiem. Šos 8 bitu digitālos datus var nolasīt Raspberry Pi, tādējādi vērtība būs 0–255, jo 2 ^ 8 ir 256. Kā parādīts zemāk esošajā IC kontaktinformācijā, tapas no DB0 līdz DB7 izmanto šo digitālo datu lasīšanai. vērtības.
Tagad vēl viena svarīga lieta ir tā, ka ADC0804 darbojas ar 5 V un tādējādi nodrošina izvadi 5 V loģiskā signālā. 8 kontaktu izvadē (kas pārstāv 8 bitus) katrs kontakts nodrošina + 5 V izeju, lai attēlotu loģiku '1'. Tātad problēma ir tā, ka PI loģika ir + 3,3 V, tāpēc jūs nevarat dot + 5 V loģiku PI + 3,3 V GPIO tapai. Ja jūs piešķirat + 5 V jebkurai PI GPIO tapai, tā tiek sabojāta.
Tātad, lai pazeminātu loģisko līmeni no + 5 V, mēs izmantosim sprieguma dalītāja ķēdi. Mēs esam apsprieduši sprieguma dalītāja ķēdi, iepriekš to meklējot, lai to precizētu. Ko mēs darīsim, mēs izmantojam divus rezistorus, lai sadalītu + 5 V loģiku 2 * 2,5 V loģikās. Tātad pēc sadalīšanas mēs Raspberry Pi piešķirsim + 2.5v loģiku. Tātad, ikreiz, kad loģiku “1” uzrāda ADC0804, PI GPIO tapā + 5V vietā redzēsim + 2,5V. Uzziniet vairāk par ADC šeit: Ievads ADC0804.
Zemāk ir ADC moduļa attēls, izmantojot ADC0804 , ko esam izveidojuši uz Perf Board:
Shēmas shēma un skaidrojums:
Pilna ķēdes shēma Flex sensora saskarnei ar Raspberry Pi ir parādīta zemāk. To pašu izskaidro šādi.
Šī aveņu pi elastīgā sensora shēma var šķist mazliet sarežģīta ar daudzām vadiem, taču, ja paskatāties tuvāk, lielākā daļa vadu ir tieši savienoti no LCD un 8 bitu datu tapas ar Raspberry pi. Šī tabula palīdzēs jums izveidot un pārbaudīt savienojumus.
Piespraudes nosaukums |
Aveņu tapas numurs |
Aveņu Pi GPIO nosaukums |
LCD Vss |
4. tapa |
Zeme |
LCD Vdd |
6. tapa |
Vcc (+ 5 V) |
LCD Vee |
4. tapa |
Zeme |
LCD Rs |
38. tapa |
GPIO 20 |
LCD RW |
39. tapa |
Zeme |
LCD E |
40. tapa |
GPIO 21 |
LCD D4 |
3. tapa |
GPIO 2 |
LCD D5 |
5. tapa |
GPIO 3 |
LCD D6 |
7. tapa |
GPIO 4 |
LCD D7 |
11. tapa |
GPIO 17 |
ADC0804 Vcc |
2. tapa |
Vcc (+ 5 V) |
ADC0804 B0 |
19. tapa (caur 5.1K) |
GPIO 10 |
ADC0804 B1 |
21. tapa (caur 5.1K) |
GPIO 9 |
ADC0804 B2 |
23. tapa (caur 5.1K) |
GPIO 11 |
ADC0804 B3 |
29. tapa (caur 5.1K) |
GPIO 5 |
ADC0804 B4 |
31. tapa (caur 5.1K) |
GPIO 6 |
ADC0804 B5 |
33. tapa (caur 5.1K) |
GPIO 13 |
ADC0804 B6 |
35. tapa (caur 5,1 K) |
GPIO 19 |
ADC0804 B7 |
37. tapa (caur 5,1 K) |
GPIO 26 |
ADC0804 WR / INTR |
15. tapa |
GPIO 22 |
Jūs varat izmantot šo attēlu, lai noteiktu adatu skaitu Raspberry kopš.
Tāpat kā visiem ADC moduļiem, arī ADC0804 IC darbībai nepieciešams pulksteņa signāls, par laimi šai IC ir iekšējs pulksteņa avots, tāpēc mums vienkārši jāpievieno RC ķēde CLK in un CLK R tapām, kā parādīts ķēdē. Mēs izmantojām vērtību 10K un 105pf, taču mēs varam izmantot jebkuru tuvu esošu vērtību, piemēram, derētu darboties arī 1uf, 0.1uf, 0.01uf.
Tad, lai savienotu Flex sensoru, mēs esam izmantojuši potenciāla dalītāja ķēdi, izmantojot 100K rezistoru. Tā kā Flex sensors ir saliekts, tā pretestība mainīsies, un potenciālais kritums visā rezistorā arī mainīsies. Šo kritumu mēra ar ADC0804 IC un attiecīgi tiek ģenerēti 8 bitu dati.
Pārbaudiet citus projektus, kas saistīti ar Flex Sensor:
- Elastīgā sensora mijiedarbība ar AVR mikrokontrolleru
- Arduino bāzētais Angry Bird Game Controller, izmantojot Flex Sensor
- Servomotora vadība ar Flex sensoru
- Toņu ģenerēšana, pieskaroties pirkstiem, izmantojot Arduino
Aveņu Pi programmēšana:
Kad savienojumi ir pabeigti, mums vajadzētu izlasīt šo 8 bitu statusu, izmantojot Raspberry Pi, un pārvērst tos decimāldaļās, lai mēs tos varētu izmantot. Programma, kā rīkoties tāpat un iegūto vērtību parādīšanai LCD ekrānā, ir dota šīs lapas beigās. Tālāk kods ir paskaidrots mazos džungļos zemāk.
Mums ir nepieciešama LCD bibliotēka, lai saskarne būtu LCD ar Pi. Šim nolūkam mēs izmantojam shubham izstrādāto bibliotēku, kas mums palīdzēs saskarnē 16 * 2 LCD displeju ar Pi četru vadu režīmā. Arī mums ir nepieciešamas bibliotēkas, lai izmantotu laiku un Pi GPIO tapas.
Piezīme . Lcd.py ir jāielādē no šejienes un jāievieto tajā pašā direktorijā, kurā tiek saglabāta šī programma. Tikai pēc tam kods tiks apkopots.
importēt lcd #Importēt LCD bibliotēku ar [email protected] importēšanas laiku # Importēšanas laika importēšanas RPi.GPIO kā GPIO #GPIO tiks piedāvāts tikai kā GPIO
Ar LCD pin definīcijas tiek piešķirti mainīgajiem, kā parādīts zemāk. Ņemiet vērā, ka šie skaitļi ir GPIO PIN numuri, nevis faktiskie PIN numuri. Lai salīdzinātu GPIO numurus ar PIN numuriem, varat izmantot iepriekšējo tabulu. Binārā masīvā tiks iekļauti visi datu piespraudes numuri, un masīva biti glabās visu GPIO tapu iegūto vērtību.
#LCD tapu definīcijas D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 bināri = (10,9,11,5,6,13,19,26) # Piespraudes masīva savienojums ar DB0- DB7 biti = #rezultatīvās 8 bitu datu vērtības
Tagad mums ir jādefinē ievades un izvades tapas. Septiņi datu tapas būs ievades tapa un sprūda tapa (RST un INTR) būs izejas tapa. Mēs varam nolasīt 8 bitu datu vērtības no ieejas tapas tikai tad, ja saskaņā ar datu lapu noteiktu laiku izejas kontakts ir augsts. Tā kā bināros tapas mēs esam deklarējuši bināru masīvā, deklarēšanai varam izmantot for for loop, kā parādīts zemāk.
bināros bināros: GPIO.setup (binārs, GPIO.IN) # Visas binārās tapas ir ievades tapas #Trigger pin GPIO.setup (22, GPIO.OUT) #WR un INTR tapas tiek izvadītas
Tagad, izmantojot LCD bibliotēkas komandas, mēs varam inicializēt LCD moduli un parādīt nelielu ievadziņu, kā parādīts zemāk.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro ziņojums mylcd.Print ("Elastīgais sensors ar") mylcd.setCursor (2,1) mylcd.Print ("Aveņu Pi ") time.sleep (2) mylcd.clear ()
Bezgalīgā, kamēr cilpa iekšpusē mēs sākam lasīt binārās vērtības, konvertējot tās decimāldaļās, un atjauninām rezultātu LCD. Kā jau iepriekš teicām, pirms mēs lasījām ADC vērtības, lai aktivizētu ADC konversiju, noteiktā laikā sprūda tapai jābūt augstai. Tas tiek darīts, izmantojot šādas rindas.
GPIO.output (22, 1) #Ieslēdziet Trigger time.sleep (0.1) GPIO.output (22, 0) #Izslēdziet trigeri
Tagad mums vajadzētu izlasīt 8 datu tapas un atjaunināt rezultātu bitu masīvā. Lai to izdarītu, mēs izmantojam for for loop, lai salīdzinātu katru ievades tapu ar True un False. Ja taisnība, attiecīgais bitu masīvs tiks izveidots kā 1 cits, tas tiks izgatavots kā 0. Tas bija visi 8 bitu dati tiks veikti 0 un 1 atbilstoši nolasītajām vērtībām.
# Izlasiet ievades tapas un atjauniniet rezultātu bitu masīvā i diapazonā (8): if (GPIO.input (binarys) == True): biti = 1 if (GPIO.input (binarys) == False): biti = 0
Kad esam atjauninājuši bitu masīvu, šis masīvs jāpārvērš decimāldaļā. Tas nav nekas cits kā binārā konversija uz decimālu. 8 bitu binārajiem datiem 2 ^ 8 ir 256. Tātad mēs iegūsim decimāldatus no 0 līdz 255. Pitonā operētājsistēma “**” tiek izmantota jebkuras vērtības jaudas atrašanai. Tā kā biti sākas ar MSB, mēs to reizinām ar 2 ^ (7-pozīcija). Tādā veidā mēs varam pārvērst visas binārās vērtības decimāldaļās un pēc tam parādīt tos LCD
#rēķiniet decimālo vērtību, izmantojot i bitu masīvu diapazonā (8): decimāldaļa = decimāldaļa + (biti * (2 ** (7-i)))
Kad mēs zinām decimālo vērtību, ir viegli aprēķināt sprieguma vērtību. Mums tas tikai jāreizina ar 19,63. Tā kā 8 bitu 5VADC katrs bits ir 19,3 mili voltu analoģija. Rezultātā iegūtā sprieguma vērtība ir sprieguma vērtība, kas parādījusies ADC0804 IC tapām Vin + un Vin-.
# aprēķināt sprieguma vērtību Spriegums = decimāls * 19,63 * 0,001 # viena vienība ir 19,3 mV
Izmantojot sprieguma vērtību, mēs varam noteikt, kā elastīgais sensors ir saliekts un kādā virzienā tas ir saliekts. Zemāk esošajās rindiņās es tikko salīdzināju nolasītās sprieguma vērtības ar iepriekš noteiktām sprieguma vērtībām, lai norādītu Flex sensora pozīciju LCD ekrānā.
#compare sensora spriegums un displeja statuss mylcd.setCursor (1,1) if (Spriegums> 3.8): mylcd.Print ("Bent Forward") elif (Voltage <3.5): mylcd.Print ("Bent Backward") cits: mylcd.Print ("Stabils")
Līdzīgi jūs varat izmantot sprieguma vērtību, lai veiktu jebkuru uzdevumu, kuru vēlaties veikt Raspberry Pi.
Rāda Flex Sensor vērtību LCD, izmantojot Raspberry Pi:
Projekta darbība ir ļoti vienkārša. Bet pārliecinieties, vai esat lejupielādējis galvenes failu lcd.py un ievietojis to tajā pašā direktorijā, kur atrodas jūsu pašreizējā programma. Pēc tam izveidojiet savienojumus, kas parādīti ķēdes shēmā, izmantojot maizes dēli vai perfu dēli, un palaidiet zemāk esošo programmu savā Pi, un jums vajadzētu darboties. Jūsu iestatītajam vajadzētu izskatīties apmēram šādi.
Kā parādīts, LCD displejā tiks parādīta decimālā vērtība, sprieguma vērtība un sensora pozīcija. Vienkārši salieciet sensoru uz priekšu vai atpakaļ, un jums vajadzētu redzēt, kā mainās sprieguma un decimāldaļas vērtība, kā arī tiks parādīts statusa teksts. Jūs varat pieslēgt jebkuru sensoru un pamanīt, ka tajā mainās spriegums.
Pilnīga apmācības darbība ir atrodama zemāk sniegtajā videoklipā. Ceru, ka sapratāt projektu un jums patika veidot kaut ko līdzīgu. Ja jums ir kādas šaubas, atstājiet tos komentāru sadaļā vai forumos, un es centīšos darīt visu iespējamo, atbildot uz tiem.