У овом упутству ћемо разговарати и дизајнирати склоп за мерење удаљености. Ово коло је развијено повезивањем ултразвучног сензора „ХЦ-СР04“ са АВР микроконтролером. Овај сензор користи технику која се назива „ЕЦХО“, а то је нешто што добијете када се звук одбије након ударања површином.
Знамо да звучне вибрације не могу продрети кроз чврсте материје. Дакле, оно што се дешава је када извор звука генерише вибрације које путују ваздухом брзином од 220 метара у секунди. Ове вибрације када се сретну са нашим ухом описујемо их као звук. Као што је раније речено, ове вибрације не могу проћи кроз чврсто тело, па се приликом удара површином попут зида рефлектују назад истом брзином до извора, што се назива ехо.
Ултразвучни сензор „ХЦ-СР04“ даје излазни сигнал пропорционалан удаљености на основу еха. Овде сензор генерише звучне вибрације у ултразвучном опсегу након давања окидача, након чега чека да се звучне вибрације врате. Сада на основу параметара, брзине звука (220м / с) и времена потребног да ехо досегне извор, он даје излазни импулс пропорционалан удаљености.
Као што је приказано на слици, у почетку морамо иницирати сензор за мерење удаљености, то је ХИГХ логички сигнал на окидачу пин сензора за више од 10уС, након тога сензор шаље звучну вибрацију, након еха, сензор даје сигнал на излазном пину чија је ширина пропорционална удаљености између извора и препреке.
Ово растојање израчунава се као, растојање (у цм) = ширина импулсног излаза (у сС) / 58.
Овде се ширина сигнала мора узети у вишеструком уС (микро секунда или 10 ^ -6).
Компоненте потребне
Хардвер: АТМЕГА32, напајање (5в), АВР-ИСП ПРОГРАМЕР, ЈХД_162АЛЦД (16к2ЛЦД), кондензатор 1000уФ, отпорник 10КΩ (2 комада), сензор ХЦ-СР04.
Софтвер: Атмел студио 6.1, прогисп или фласх магиц.
Шема и радно објашњење
Овде користимо ПОРТБ за повезивање са ЛЦД портом података (Д0-Д7). Свако ко не жели да ради са БИТИМА ОСИГУРАЧА АТМЕГА32А не може да користи ПОРТЦ, јер ПОРТЦ садржи посебну врсту комуникације која се може онемогућити само променом ФУСЕБИТС-а.
У кругу, примећујете да сам узео само два контролна пина, што даје флексибилност бољег разумевања. Контрастни бит и РЕАД / ВРИТЕ се не користе често, тако да могу бити кратко спојени на масу. Ово ЛЦД поставља у највећи контраст и режим читања. Само треба да контролишемо ЕНАБЛЕ и РС пинове да би у складу са тим слали знакове и податке.
Конекције које се раде за ЛЦД дате су у наставку:
ПИН1 или ВСС на масу
ПИН2 или ВДД или ВЦЦ до + 5в снаге
ПИН3 или ВЕЕ на земљу (даје максимални контраст најбољи за почетнике)
ПИН4 или РС (Избор регистра) на ПД6 од уЦ
ПИН5 или РВ (читање / писање) на масу (ставља ЛЦД у режим читања олакшава комуникацију за корисника)
ПИН6 или Е (Омогући) на ПД5 од уЦ
ПИН7 или Д0 до ПБ0 од уЦ
ПИН8 или Д1 до ПБ1 од уЦ
ПИН9 или Д2 до ПБ2 од уЦ
ПИН10 или Д3 до ПБ3 од уЦ
ПИН11 или Д4 до ПБ4 од уЦ
ПИН12 или Д5 до ПБ5 од уЦ
ПИН13 или Д6 до ПБ6 од уЦ
ПИН14 или Д7 до ПБ7 од уЦ
У кругу можете видети да смо користили 8-битну комуникацију (Д0-Д7), међутим то није обавезно и можемо користити 4-битну комуникацију (Д4-Д7), али са 4-битним комуникацијским програмом постаје помало сложен. Дакле, као што је приказано у горњој табели, повезујемо 10 пинова ЛЦД-а на контролер у којем су 8 пинова пинови за податке и 2 пина за контролу.
Ултразвучни сензор је четворо пин уређај, ПИН1-ВЦЦ или + 5В; ПИН2-ТРИГГЕР; ПИН3- ЕЦХО; ПИН4- ЗЕМЉА. Окидачки клин је место на коме дајемо окидач да кажемо сензору да измери удаљеност. Ецхо је излазни пин где добијамо растојање у облику ширине импулса. Овде је ехо пин повезан са контролером као спољни извор прекида. Дакле, да би се добила ширина излаза сигнала, ехо пин сензора повезан је на ИНТ0 (прекид 0) или ПД2.
1. Покретање сензора повлачењем клина окидача за најмање 12 уС.
2. Једном када се ехо повиси, добијамо спољни прекид и покренућемо бројач (омогућавајући бројач) у ИСР (Интеррупт Сервице Рутине) који се извршава одмах након покретања прекида.
3. Када се ехо поново смањи, генерише се прекид, овог пута ћемо зауставити бројач (онемогућавајући бројач).
4. Дакле, за импулс висок до низак на ехо пину, покренули смо бројач и зауставили га. Овај број се ажурира у меморију за добијање удаљености, јер сада имамо ширину одјека у бројачу.
5. Направићемо даље прорачуне у меморији да бисмо добили растојање у цм
6. Удаљеност се приказује на ЛЦД дисплеју 16к2.
За подешавање горе наведених карактеристика поставићемо следеће регистре:
Горња три регистра треба подесити у складу са тим да би подешавање функционисало и ми ћемо о њима кратко разговарати, ПЛАВО (ИНТ0): овај бит мора бити постављен високо да би се омогућио спољни прекид0, када је овај пин постављен, осећамо логичке промене на ПИНД2 пину.
СМЕЂА (ИСЦ00, ИСЦ01): ова два бита су прилагођена за одговарајућу логичку промену на ПД2, што се сматра прекидом.
Дакле, као што је раније речено, потребан нам је прекид да бисмо започели бројање и зауставили га. Дакле, постављамо ИСЦ00 као један и добијамо прекид када постоји логика ЛОВ то ХИГХ на ИНТ0; још један прекид када постоји логика ВИСОКО ДО НИСКО.
ЦРВЕНА (ЦС10): Овај бит је само за омогућавање и онемогућавање бројача. Иако ради заједно са осталим битовима ЦС10, ЦС12. Овде не вршимо никакво прескалирање, па не треба да бринемо због њих.
Неке важне ствари које овде треба запамтити су:
Користимо интерни такт АТМЕГА32А који је 1МХз. Овде нема прескалирања, не радимо упоређивање прекида за подударање, генерише рутину, тако да нема сложених подешавања регистра.
Вредност бројања након бројања чува се у 16-битном регистру ТЦНТ1.
Такође проверите овај пројекат са ардуином: Мерење удаљености помоћу Ардуина
Објашњење програмирања
Рад сензора за мерење удаљености објашњен је корак по корак у доњем програму Ц.
#инцлуде // заглавље да би се омогућила контрола протока података преко пинова #дефине Ф_ЦПУ 1000000 // казивање учесталости кристалне фреквенције контролера #инцлуде