- ADC0804 un Aveņu Pi:
- LM35 temperatūras sensors:
- Nepieciešamās sastāvdaļas:
- Ķēdes un darba skaidrojums:
- Programmēšanas skaidrojums:
Mēs galvenokārt esam aptvēruši visus pamatkomponentus, kas mijiedarbojas ar Raspberry Pi, mūsu Raspberry Pi apmācību sērijā. Mēs esam viegli un detalizēti izskatījuši visas apmācības, lai ikviens, neatkarīgi no tā, vai viņš ir strādājis ar Raspberry Pi, varētu viegli mācīties no šīs sērijas. Pēc visu apmācību apmeklēšanas jūs varēsiet izveidot dažus augsta līmeņa projektus, izmantojot Raspberry Pi.
Tāpēc šeit mēs izstrādājam pirmo lietojumprogrammu, pamatojoties uz iepriekšējām apmācībām. Pirmā pamata lietojumprogramma ir Raspberry Pi lasītavas temperatūra. Un jūs varat kontrolēt rādījumus datorā.
Kā tika apspriests iepriekšējās apmācībās, Raspberry Pi iekšēji nav nodrošināti ADC kanāli. Tātad, ja mēs vēlamies saskarni ar jebkuru analogo sensoru, mums ir nepieciešama ADC pārveidošanas vienība. Vienā no mūsu apmācībām mēs esam sasaistījuši ADC0804 mikroshēmu ar Raspberry Pi, lai nolasītu analogo vērtību. Tāpēc iet caur to, pirms uzbūvējat šo istabas temperatūras termometru.
ADC0804 un Aveņu Pi:
ADC0804 ir mikroshēma, kas paredzēta analogā signāla konvertēšanai 8 bitu digitālos datos. Šī mikroshēma ir viena no populārākajām ADC sērijām. Tā ir 8 bitu konversijas vienība, tāpēc mums ir vērtības vai 0 līdz 255 vērtības. Šīs mikroshēmas izšķirtspēja mainās, pamatojoties uz mūsu izvēlēto atsauces spriegumu, mēs par to vairāk runāsim vēlāk. Zemāk ir ADC0804 pinout:
Vēl viena svarīga lieta šeit 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 + 5V 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 piešķirsim PI 2,5 v loģiku. Tātad, ikreiz, kad loģiku “1” uzrāda ADC0804, PI GPIO tapā + 5V vietā redzēsim + 2,5V.
LM35 temperatūras sensors:
Tagad, lai lasītu istabas temperatūru, mums ir nepieciešams sensors. Šeit mēs izmantosim LM35 temperatūras sensoru. Temperatūru parasti mēra “Centigrade” vai “Fahrenheit”. “LM35” sensors nodrošina izvadi Celsija grādos.
Kā parādīts attēlā, LM35 ir trīs kontaktu tranzistoram līdzīga ierīce. Adatas ir numurētas kā
PIN1 = Vcc - barošana (savienots ar + 5V)
PIN2 = signāls vai izeja (savienots ar ADC mikroshēmu)
PIN3 = Zeme (savienota ar zemi)
Šis sensors nodrošina mainīgu spriegumu izejā, pamatojoties uz temperatūru. Katram +1 ° C temperatūras paaugstinājumam pie izejas tapas būs + 10mV lielāks spriegums. Tātad, ja temperatūra ir 0 ° C, sensora izeja būs 0 V, ja temperatūra ir 10 ° C, sensora jauda būs + 100 mV, ja temperatūra ir 25 ° C, sensora jauda būs + 250 mV.
Nepieciešamās sastāvdaļas:
Šeit mēs izmantojam Raspberry Pi 2 B modeli ar Raspbian Jessie OS. Visas aparatūras un programmatūras pamatprasības ir iepriekš apspriestas, jūs to varat meklēt Raspberry Pi ievadā, izņemot to, kas mums nepieciešams:
- Savienojošās tapas
- 1KΩ rezistors (17 gab.)
- 10K katls
- 0,1µF kondensators
- 100µF kondensators
- 1000µF kondensators
- ADC0804 IC
- LM35 temperatūras sensors
- Maizes dēlis
Ķēdes un darba skaidrojums:
Savienojumi, kas tiek veikti, lai Raspberry savienotu ar ADC0804 un LM35, ir parādīti zemāk esošajā shēmā.
LM35 izejā ir daudz sprieguma svārstību; tāpēc izejas izlīdzināšanai tiek izmantots 100uF kondensators, kā parādīts attēlā.
ADC vienmēr ir daudz trokšņu, šis troksnis var ievērojami ietekmēt veiktspēju, tāpēc trokšņu filtrēšanai mēs izmantojam 0,1uF kondensatoru. Bez tā būs daudz svārstību pie izejas.
Mikroshēma darbojas uz RC (rezistors-kondensators) oscilatora pulksteņa. Kā parādīts shēmā , C2 un R20 veido pulksteni. Šeit ir svarīgi atcerēties, ka kondensatoru C2 var mainīt uz zemāku vērtību, lai iegūtu augstāku ADC konversijas ātrumu. Tomēr ar lielāku ātrumu samazināsies precizitāte. Tātad, ja lietojumprogrammai ir nepieciešama lielāka precizitāte, izvēlieties kondensatoru ar lielāku vērtību un lielākam ātrumam - ar mazāku vērtību.
Kā teicām iepriekš, LM35 nodrošina + 10 mV par katru centigrādi. Maksimālā temperatūra, ko var izmērīt ar LM35, ir 150º Celsija. Tātad LM35 izejas terminālī mums būs maksimums 1,5 V. Bet ADC0804 noklusējuma atsauces spriegums ir + 5V. Tātad, ja mēs izmantojam šo atsauces vērtību, izejas izšķirtspēja būs zema, jo mēs izmantotu maksimāli (5 / 1,5) 34% no digitālās izejas diapazona.
Par laimi, ADC0804 ir regulējams Vref tapa (PIN9), kā parādīts tā tapu diagrammā. Tātad mēs iestatīsim mikroshēmas Vref uz + 2V. Lai iestatītu Vref + 2V, mums PIN9 jānodrošina spriegums + 1V (VREF / 2). Šeit mēs izmantojam 10K pot, lai noregulētu spriegumu pie PIN9 līdz + 1V. Izmantojiet voltmetru, lai iegūtu precīzu spriegumu.
Iepriekš mēs izmantojām LM35 temperatūras sensoru, lai nolasītu istabas temperatūru ar Arduino un ar AVR mikrokontrolleru. Izmantojot Arduino, pārbaudiet arī mitruma un temperatūras mērīšanu
Programmēšanas skaidrojums:
Kad viss ir savienots, kā norādīts shēmā, mēs varam ieslēgt PI, lai programmu ierakstītu PYHTON.
Mēs runāsim par dažām komandām, kuras mēs izmantosim PYHTON programmā, Mēs importēsim GPIO failu no bibliotēkas, zemāk esošā funkcija ļauj mums ieprogrammēt PI GPIO tapas. Mēs arī pārdēvējam “GPIO” par “IO”, tāpēc programmā, kad vien mēs vēlamies atsaukties uz GPIO tapām, mēs izmantosim vārdu “IO”.
importēt RPi.GPIO kā IO
Dažreiz, kad GPIO tapas, kuras mēs cenšamies izmantot, iespējams, veic citas funkcijas. Tādā gadījumā mēs saņemsim brīdinājumus, izpildot programmu. Zemāk komanda liek PI ignorēt brīdinājumus un turpināt programmu.
IO.setwarnings (False)
Mēs varam atsaukties uz PI GPIO tapām vai nu pēc tapas numura uz kuģa, vai pēc to funkcijas numura. Tāpat kā “PIN 29” uz tāfeles ir “GPIO5”. Tātad mēs šeit sakām, vai nu mēs šeit parādīsim tapu ar “29” vai “5”.
IO.setmode (IO.BCM)
Mēs iestatām 8 tapas kā ievades tapas. Pēc šīm tapām mēs noteiksim 8 bitu ADC datus.
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)
Gadījumā, ja nosacījums lencēs ir patiess, paziņojumi cilpas iekšpusē tiks izpildīti vienu reizi. Tātad, ja GPIO spraudnis 19 iet uz augšu, tad IF cilpas paziņojumi tiks izpildīti vienu reizi. Ja GPIO 19. kontakts nenokļūst augstā līmenī, IF loka iekšējie priekšraksti netiks izpildīti.
ja (IO.input (19) == True):
Zemāk esošā komanda tiek izmantota kā uz visiem laikiem, ar šo komandu šīs cilpas iekšējie paziņojumi tiks izpildīti nepārtraukti.
Kamēr 1:
Papildu koda skaidrojums ir norādīts zemāk esošajā koda sadaļā.
Pēc programmas uzrakstīšanas ir pienācis laiks to izpildīt. Pirms programmas izpildes ļauj sarunām, kas notiek ķēdē, kā kopsavilkums. Pirmais LM35 sensors nosaka telpas temperatūru un nodrošina izejas analogo spriegumu. Šis mainīgais spriegums attēlo temperatūru lineāri ar + 10 mV uz ºC. Šis signāls tiek padots ADC0804 mikroshēmai, šī mikroshēma pārveido analogo vērtību digitālā vērtībā ar 255/200 = 1,275 skaits uz 10mv vai 1,275skaits par 1 pakāpi. Šo skaitīšanu veic PI GPIO. Programma pārvērš skaitīšanu temperatūras vērtībā un parāda to ekrānā. Tipiskā PI nolasītā temperatūra ir parādīta zemāk, Tādējādi mēs šo Raspberry Pi temperatūras monitoru.