- Потребан материјал:
- АДЦ0804 Једноканални 8-битни АДЦ модул:
- Шема и објашњење:
- Програмирање Распберри Пи:
- Приказивање вредности Флек сензора на ЛЦД-у помоћу Распберри Пи:
Распберри Пи је плоча заснована на АРМ архитектури заснована за електронске инжењере и хобисте. ПИ је сада једна од најповерљивијих платформи за развој пројеката. Са већом брзином процесора и 1 ГБ РАМ-а, ПИ се може користити за многе пројекте високог профила попут обраде слика и Интернета ствари. Пуно је кул ствари које се могу урадити са ПИ-ом, али једна тужна карактеристика је та што он нема уграђени АДЦ модул.
Само, ако Распберри Пи може да се повеже са сензорима, он може да упозна параметре стварног света и ступи у интеракцију са њим. Већина сензора постоје аналогни сензори и зато бисмо требали научити да користимо спољни АДЦ модул ИЦ са Распберри Пи за повезивање ових сензора. У овом пројекту ћемо научити како можемо повезати Флек сензор са Распберри Пи и приказати његове вредности на ЛЦД екрану.
Потребан материјал:
- Распберри Пи (било који модел)
- АДЦ0804 ИЦ
- ЛЦД екран од 16 * 2
- Флек Сенсор
- Отпорници и кондензатори
- Бреадбоард или перф табла.
АДЦ0804 Једноканални 8-битни АДЦ модул:
Пре него што наставимо даље, сазнајмо више о овом АДЦ0804 ИЦ и како га користити са малином пи. АДЦ0804 је једноканална 8-битна ИЦ, што значи да може да прочита једну вредност АДЦ и преслика је на 8-битне дигиталне податке. Распберри Пи може прочитати ове 8-битне дигиталне податке, па ће вредност бити 0-255, јер је 2 ^ 8 256. Као што је приказано у пиноутима ИЦ доле, пинови ДБ0 до ДБ7 се користе за читање ових дигиталних вредности.
Сада је овде још једна важна ствар, АДЦ0804 ради на 5В и тако даје излаз у 5В логичком сигналу. У 8-пинском излазу (представља 8-битни), сваки пински пружа + 5В излаз који представља логику '1'. Дакле, проблем је у томе што је ПИ логика од + 3,3 в, тако да не можете дати + 5 В логику на + 3,3 В ГПИО пину ПИ. Ако дате било који од 5 В на било који ГПИО пин ПИ, плоча се оштети.
Дакле, да бисмо спустили ниво логике са + 5В, користићемо коло делитеља напона. Раније смо разговарали о кругу за поделу напона, па смо га претходно размотрили ради даљег појашњења. Оно што ћемо урадити је да користимо два отпорника да поделимо + 5В логику на логику 2 * 2.5В. Дакле, након поделе даћемо Распберри Пи-у + 2.5в логику. Дакле, кад год АДЦ0804 представи логику '1', видећемо + 2,5 В на ПИ ГПИО Пин-у, уместо + 5В. Сазнајте више о АДЦ овде: Увод у АДЦ0804.
Испод је слика АДЦ модула који користи АДЦ0804 који смо изградили на Перф Боард-у:
Шема и објашњење:
Комплетна шема кола за повезивање Флек сензора са Распберри Пи приказана је испод. Објашњење истог је следеће.
Ово коло сензора малине пи флек може изгледати помало сложено са пуно жица, али ако боље погледате, већина жица је директно повезана са ЛЦД-ом и 8-битним пином за податке на Распберри пи. Следећа табела ће вам помоћи приликом успостављања и верификације веза.
Пин наме |
Распберри Пин број |
Распберри Пи ГПИО име |
ЛЦД Всс |
Пин 4 |
Приземље |
ЛЦД Вдд |
Пин 6 |
Вцц (+ 5В) |
ЛЦД Вее |
Пин 4 |
Приземље |
ЛЦД Рс |
Пин 38 |
ГПИО 20 |
ЛЦД РВ |
Пин 39 |
Приземље |
ЛЦД Е |
Пин 40 |
ГПИО 21 |
ЛЦД Д4 |
Пин 3 |
ГПИО 2 |
ЛЦД Д5 |
Пин 5 |
ГПИО 3 |
ЛЦД Д6 |
Пин 7 |
ГПИО 4 |
ЛЦД Д7 |
Пин 11 |
ГПИО 17 |
АДЦ0804 Вцц |
Пин 2 |
Вцц (+ 5В) |
АДЦ0804 Б0 |
Пин 19 (до 5.1К) |
ГПИО 10 |
АДЦ0804 Б1 |
Пин 21 (до 5.1К) |
ГПИО 9 |
АДЦ0804 Б2 |
Пин 23 (до 5.1К) |
ГПИО 11 |
АДЦ0804 Б3 |
Пин 29 (до 5.1К) |
ГПИО 5 |
АДЦ0804 Б4 |
Пин 31 (до 5.1К) |
ГПИО 6 |
АДЦ0804 Б5 |
Пин 33 (до 5.1К) |
ГПИО 13 |
АДЦ0804 Б6 |
Пин 35 (до 5.1К) |
ГПИО 19 |
АДЦ0804 Б7 |
Пин 37 (до 5.1К) |
ГПИО 26 |
АДЦ0804 ВР / ИНТР |
Пин 15 |
ГПИО 22 |
Сљедећу слику можете користити за одређивање пин бројева на Распберри-у од.
Као и сви АДЦ модули, и АДЦ0804 ИЦ за рад захтева сигнал такта, срећом овај ИЦ има унутрашњи извор такта, тако да само морамо додати РЦ коло у пинове ЦЛК ин и ЦЛК Р као што је приказано у кругу. Користили смо вредност од 10К и 105пф, али можемо користити било коју вредност блиску попут 1уф, 0.1уф, 0.01уф такође треба да ради.
Затим смо за повезивање Флек сензора користили потенцијални делилни круг помоћу отпорника 100К. Како је Флек сензор савијен, отпор на њему ће варирати, а исто тако и потенцијални пад на отпорнику. Овај пад се мери помоћу АДЦ0804 ИЦ и 8-битни подаци се генеришу у складу с тим.
Погледајте и друге пројекте који се односе на Флек сензор:
- Флексибилно повезивање сензора са АВР микроконтролером
- Ардуино контролер игре Ангри Бирд користећи Флек сензор
- Управљање серво мотором помоћу Флек сензора
- Генерисање тонова тапкањем прстију помоћу Ардуина
Програмирање Распберри Пи:
Када завршимо са везама, требали бисмо прочитати статус ових 8-битова користећи Распберри Пи и претворити их у децималне да бисмо их могли искористити. Програм за исто и приказивање резултујућих вредности на ЛЦД екрану дат је на крају ове странице. Даље, код је објашњен у наставку.
Потребна нам је ЛЦД библиотека да бисмо повезали ЛЦД са Пи. За ово користимо библиотеку коју је развио схубхам која ће нам помоћи да повежемо ЛЦД екран од 16 * 2 са Пи-ом у четворожичном режиму. Такође су нам потребне библиотеке да искористимо време и Пи ГПИО пинове.
Напомена : Лцд.пи треба преузети одавде и сместити га у исти директоријум у коме је овај програм сачуван. Тек тада ће се код саставити.
импорт лцд # Увоз ЛЦД библиотеке схубхам@елецтро-пассион.цом време увоза # Време увоза импорт РПи.ГПИО као ГПИО #ГПИО ће бити приказан само као ГПИО
У дефиниције ЛЦД пинова се додељују варијабле као што је приказано испод. Имајте на уму да су ови бројеви ГПИО пин бројеви, а не стварни пин бројеви. Горњу табелу можете користити за поређење ГПИО бројева са пин бројевима. Бинарни низ ће садржати све бројеве пинова података, а битови низа ће сачувати резултујућу вредност свих ГПИО пинова.
# ЛЦД дефиниције пинова Д4 = 2 Д5 = 3 Д6 = 4 Д7 = 17 РС = 20 ЕН = 21 бинарис = (10,9,11,5,6,13,19,26) # Низ бројева пинова повезује се са ДБ0- ДБ7 битови = # резултујуће вредности 8-битних података
Сада морамо да дефинишемо улазне и излазне пинове. Седам пинова за податке биће улазни, а окидач (РСТ и ИНТР) излазни. Можемо прочитати 8-битне вредности података са улазног пина само ако излазни пин окидамо високо одређено време према табели података. Пошто смо декларисали бинарне пинове у бинарис низу, можемо користити фор петљу за декларацију као што је приказано доле.
за бинарне датотеке у бинарним системима: ГПИО.сетуп (бинарни, ГПИО.ИН) # Сви бинарни пинови су улазни пинови # Покретачки пин ГПИО.сетуп (22, ГПИО.ОУТ) #ВР и ИНТР пинови се излазе
Сада помоћу команди ЛЦД библиотеке можемо иницијализовати ЛЦД модул и приказати малу уводну поруку као што је приказано доле.
милцд = лцд.лцд () милцд.бегин (Д4, Д5, Д6, Д7, РС, ЕН) # Уводна порука милцд.Принт („Флек сензор са“) милцд.сетЦурсор (2,1) милцд.Принт („Распберри Пи ") тиме.слееп (2) милцд.цлеар ()
Унутар бесконачне вхиле петље почињемо да читамо бинарне вредности, претварамо их у децималне и ажурирамо резултат на ЛЦД-у. Као што је речено раније, пре него што читамо вредности АДЦ , требало би да пин окидача буде висок одређено време да бисмо активирали АДЦ конверзију. То се постиже коришћењем следећих редова.
ГПИО.оутпут (22, 1) #Укључи окидач тиме.слееп (0.1) ГПИО.оутпут (22, 0) #Искључи окидач
Сада бисмо требали прочитати пинове са 8 података и ажурирати резултат у битс низу. Да бисмо то урадили, користимо фор петљу за упоређивање сваког улазног пина са тачним и нетачним. Ако је тачно, одговарајући низ битова ће бити направљен као 1, тада ће бити израђен као 0. Ово је било да ће сви 8-битни подаци бити 0 и 1 од прочитаних вредности.
# Прочитајте улазне пинове и ажурирајте резултат у битном низу за и у опсегу (8): иф (ГПИО.инпут (бинарис) == Труе): битс = 1 иф (ГПИО.инпут (бинарис) == Фалсе): битс = 0
Након што ажурирамо низ битова, требали бисмо тај низ претворити у децималну вредност. Ово није ништа друго до претварање у бинарну у децималну. За 8-битне бинарне податке 2 ^ 8 је 256. Тако ћемо добити децималне податке од 0 до 255. У питхону се оператор „**“ користи за проналажење снаге било које вредности. Пошто битови почињу са МСБ, множимо га са 2 ^ (7-позиција). На овај начин можемо претворити све бинарне вредности у децималне податке, а затим их приказати на ЛЦД-у
# израчунајте децималну вредност користећи битни низ за и у опсегу (8): децимал = децимал + (битови * (2 ** (7-и)))
Једном када знамо децималну вредност, лако је израчунати вредност напона. Морамо га само помножити са 19,63. Јер за 8-битни 5ВАДЦ сваки бит је аналогија од 19,3 миливолта. Добијена вредност напона је вредност напона који се појавио на пиновима Вин + и Вин- АДЦ0804 ИЦ.
# израчунајте вредност напона Напон = децимални * 19,63 * 0,001 #једна јединица је 19,3мВ
Користећи вредност напона можемо утврдити како је савијен флекс сензор и у ком смеру је савијен. У доњим редовима управо сам упоредио очитане вредности напона са унапред одређеним вредностима напона да бих указао на положај Флек сензора на ЛЦД екрану.
# упореди напон и статус приказа сензора милцд.сетЦурсор (1,1) ако је (Волтаге> 3.8): милцд.Принт ("Бент Форвард") елиф (Волтаге <3.5): милцд.Принт ("Бент Бацквард") елсе: милцд.Принт („Стабилно“)
Слично томе, вредност напона можете користити за обављање било ког задатка који желите да изврши Распберри Пи.
Приказивање вредности Флек сензора на ЛЦД-у помоћу Распберри Пи:
Рад на пројекту је врло једноставан. Али обавезно преузмите датотеку заглавља лцд.пи и ставите је у исти директоријум у коме је присутан ваш тренутни програм. Затим направите да су везе приказане на дијаграму кола помоћу плоче за одржавање или перф плоче и покрените доњи програм на свом Пи-у и требали бисте покренути ствар. Подесили би требало да изгледа овако некако у наставку.
Као што је приказано, ЛЦД ће приказати децималну вредност, вредност напона и положај сензора. Само савијте сензор напред или назад и могли бисте да видите како напон и децимална вредност варирају, такође ће бити приказан текст статуса. Можете повезати било који сензор и приметити да напон на њему варира.
Комплетан рад овог водича можете пронаћи на видео снимку датом у наставку. Надам се да сте разумели пројекат и уживали сте у изградњи нечег сличног. Ако сумњате, оставите их у одељку за коментаре или на форумима, а ја ћу се потрудити да одговорим на њих.