Како измерити растојање између две тачке помоћу Ардуина?

У електроници се већином ултразвучни сензори користе за мерење удаљености од одређене тачке до друге. Врло је лако написати код на Ардуино плочу и интегрисати ан ултразвучни сензор да изврши овај задатак. Али у овом чланку ћемо усвојити другачији приступ. Користићемо два одвојена ултразвучна сензора која ће бити интегрисана са два одвојена Ардуина. Ова два модула биће постављена на две различите тачке између којих се мери удаљеност. Један сензор биће направљен од пријемника, а други од предајника. На тај начин моћи ћемо да измеримо удаљеност између њих само лоцирањем положаја предајника помоћу многих ултразвучних пријемника. Названа је Техника коју овде користимо Триангулација.



Мерење удаљености помоћу Ардуина

Овде коришћена техника је корисна само у системима малих размера где се може наћи мала удаљеност. Да би се применила у великом обиму, сигурно су потребне неке модификације. Сви изазови са којима се суочавали током извођења овог пројекта разматрани су у наставку.



Како се користи Ардуино и ултразвучни сензор за мерење удаљености?

Пошто знамо сажетак који стоји иза пројекта, кренимо даље и прикупљајмо додатне информације како бисмо започели пројекат.



Корак 1: Прикупљање компонената (хардвер)

Ако желите да избегнете било какве непријатности усред било ког пројекта, најбољи приступ је направити комплетну листу свих компонената које ћемо користити. Други корак, пре него што почнемо да правимо коло, је да прођемо кроз кратку студију свих ових компоненти. Списак свих компоненти које су нам потребне у овом пројекту дат је у наставку.



  • Јумпер Вирес
  • 5В адаптер за наизменичну и једносмерну струју (к2)

Корак 2: Прикупљање компонената (софтвер)

  • Протеус 8 Профессионал (Може се преузети са Ево )

Након преузимања Протеус 8 Профессионал, дизајнирајте коло на њему. Овде сам уврстио софтверске симулације како би почетницима било згодно да дизајнирају склоп и направе одговарајуће везе на хардверу.

Корак 3: Рад ХЦР-05

Како сада знамо главни сажетак нашег пројекта, кренимо даље и прођите кроз кратку студију о раду ХЦР-05 . Главни рад овог сензора можете разумети на следећем дијаграму.

Овај сензор има два пина, окидач, и еко пин које се користе за мерење растојања између две одређене тачке. Процес се започиње слањем ултразвучног таласа са сензора. Овај задатак се обавља активирањем клина триг за 10ус. Чим се овај задатак заврши, одашиљач шаље 8 звучних рафала ултразвучних таласа. овај талас ће путовати у ваздуху и чим удари у предмет на путу, узвратиће ударац и примити га од пријемника уграђеног у сензор.



Када пријемник прими ултразвучни талас након што одбије сензор, он ће ставити еко пин до високе државе. Овај пин ће остати у високом стању током времена које ће бити тачно једнако времену које је ултразвучном таласу требало да пређе од предајника и назад до пријемника сензора.

Да направите свој ултразвучни сензор предајник само, само направите триг пин као излазни пин и пошаљите висок импулс на овај пин за 10ус. Ултразвучни рафал ће се покренути чим се то уради. Дакле, кад год се талас преноси, мора се контролисати само окидач на ултразвучном сензору.

Не постоји начин да ултразвучни сензор направите као а само пријемник јер пораст ЕКО пина не може да контролише микроконтролер јер је повезан са триг пином сензора. Али постоји једна ствар коју можемо да урадимо је да предајник овог ултразвучног сензора можемо прекрити селотејпом да не би изашао УВ талас. Тада предајник неће утицати на ЕКО пин овог предајника.

Корак 4: Рад круга

Сад, како смо учинили да оба сензора раде одвојено као предајник и пријемник, постоји велики проблем са којим се овде суочавамо. Пријемник неће знати колико је времена требало ултразвучном таласу да пређе од предајника до пријемника, јер не зна тачно када је тај талас пренет.

Да бисмо решили овај проблем, оно што морамо да урадимо је да пошаљемо ВИСОКО сигнал на ЕЦО пријемника чим се ултразвучни талас пренесе преко сензора предајника. Или једноставним речима, можемо рећи да ЕКО пријемника и окидач предајника треба истовремено слати на ХИГХ. Дакле, да бисмо то постигли, некако ћемо учинити да се окидач пријемника повиси чим се окидач предајника повиси. Овај окидач пријемника остаће висок док се не укључи ЕЦО пин ЛОВ . Када ЕЦО пин пријемника прими ултразвучни сигнал, он иде НИСКО. То ће значити да је окидач сензора предајника управо добио ВИСОК сигнал. Сада, чим ЕЦО падне, сачекаћемо познато одлагање и поставити окидач пријемника ВИСОКО. На тај начин окидачи оба сензора ће се синхронизовати и удаљеност ће се израчунати знајући временско кашњење путовања таласа.

Корак 5: Састављање компонената

Иако користимо само предајник једног ултразвучног сензора и пријемник другог, али обавезно је повезати сва четири пина ултразвучни сензор до Ардуина. Да бисте повезали коло, следите кораке дате у наставку:

  1. Узмите два ултразвучна сензора. Покријте пријемник првог сензора и предајник другог сензора. У ту сврху користите белу селотејп траку и уверите се да су ове две у потпуности покривене тако да ниједан сигнал не напусти предајник другог сензора и да сигнал не уђе у пријемник првог сензора.
  2. Повежите два Ардуина на две одвојене плоче и повежите њихове одговарајуће сензоре. Прикључите пин окидача на пин9 Ардуина и ецоПин на пин10 Ардуина. Појачајте ултразвучни сензор од 5В Ардуина и уједините све основе.
  3. Пошаљите код пријемника у Ардуино пријемника, а код предајника у Ардуино предајника.
  4. Сада отворите серијски монитор пријемне стране и забележите удаљеност која се мери.

Шема овог пројекта изгледа:

Кружни дијаграм

Корак 6: Почетак рада са Ардуином

Ако већ нисте упознати са Ардуино ИДЕ-ом, не брините јер је у наставку објашњен корак по корак за подешавање и употребу Ардуино ИДЕ-а са плочом микроконтролера.

  1. Преузмите најновију верзију Ардуино ИДЕ са Ардуино.
  2. Повежите своју Ардуино Нано плочу са преносним рачунаром и отворите контролну таблу. на контролној табли кликните на Хардвер и звук . Сада кликните на Уређаји и штампачи. Овде пронађите порт на који је повезана плоча вашег микроконтролера. У мом случају јесте ЦОМ14 али је различито на различитим рачунарима.

    Проналажење луке

  3. Кликните на мени Алат. и поставите плочу на Ардуино Нано из падајућег менија.

    Одбор за постављање

  4. У истом менију Алат поставите порт на број порта који сте раније приметили у Уређаји и штампачи .

    Подешавање порта

  5. У истом менију Алат поставите процесор на АТмега328П (Олд Боотлоадер ).

    Процесор

  6. Преузмите доленаведени код и налепите га у свој Ардуино ИДЕ. Кликните на отпремити дугме за нарезивање кода на плочи микроконтролера.

    Отпремити

Да бисте преузели код, кликните овде.

Корак 7: Разумевање кодекса

Код који се користи у овом пројекту је врло једноставан и прилично добро коментарисан. У приложеној фасцикли налазе се две датотеке с кодовима. Код за предајник и код за пријемник дају се одвојено. Учитаћемо ове кодове на обе одговарајуће Ардуино плоче. Иако је саморазумљиво, укратко је описано у наставку.

Шифра на страни предајника

1. На почетку се иницијализују пинови Ардуино плоче који ће бити повезани са ултразвучним сензором. Затим се декларишу променљиве које ће се користити за чување вредности за израчунавање времена и удаљености током времена извођења кода.

// дефинише бројеве пинова цонст инт тригПин = 9; // Повежите триг пин ултразвучног сензора са пин 9 Ардуино цонст инт ецхоПин = 10; // Повежите еко пин ултразвучног сензора са пин 10 Ардуина // дефинише дуго трајање променљивих; // променљива за складиштење времена које ултразвучни талас прелази т на даљину; // променљива за чување израчунате удаљености

2 воид сетуп () је функција која се покреће само једном у старту када се плоча укључи или притисне дугме за омогућавање. Овде су обе пинове Ардуина проглашене да се користе као УЛАЗНИ и ИЗЛАЗ . Баудрате је подешен у овој функцији. Брзина преноса података је брзина у битовима у секунди којом микроконтролер комуницира са ултразвучним сензором.

воид сетуп () {пинМоде (тригПин, ОУТПУТ); // поставља тригПин као излазни пинМоде (ецхоПин, ИНПУТ); // поставља ецхоПин као улазни серијски.бегин (9600); // Покреће серијску комуникацију}

3. воид лооп () је функција која се изнова и изнова изводи у петљи. Овде смо кодирали микроконтролер тако да шаље ВИСОКИ сигнал на Триггер пин ултразвучног сензора, сачека 20 микросекунди и пошаље му ЛОВ сигнал.

воид лооп () {// Поставља тригПин у ХИГХ стање на 10 микро секунди дигиталВрите (тригПин, ХИГХ); // пошаље ХИГХ сигнал на окидачу првог сензора делаиМицросецондс (10); // сачекајте 10 микро секунди дигиталВрите (тригПин, ЛОВ); // шаље ЛОВ сигнал окидачу првог кашњења сензора (2); // сачекајте 0,2 секунде}

Шифра на страни пријемника

1. На почетку се иницијализују пинови Ардуино плоче који ће бити повезани са ултразвучним сензором. Затим се декларишу променљиве које ће се користити за чување вредности за израчунавање времена и удаљености током времена извођења кода.

// дефинише бројеве пинова цонст инт тригПин = 9; // Повежите триг пин ултразвучног сензора са пин 9 Ардуино цонст инт ецхоПин = 10; // Повежите еко пин ултразвучног сензора са пин 10 Ардуина // дефинише дуго трајање променљивих; // променљива за складиштење времена које ултразвучни талас прелази т на даљину; // променљива за чување израчунате удаљености

2 воид сетуп () је функција која се покреће само једном у старту када се плоча укључи или притисне дугме за омогућавање. Овде су обе пинове Ардуина проглашене да се користе као ИНПУТ и ОУТПУТ. Баудрате је подешен у овој функцији. Брзина преноса података је брзина у битовима у секунди којом микроконтролер комуницира са ултразвучним сензором.

воид сетуп () {пинМоде (тригПин, ОУТПУТ); // поставља тригПин као излазни пинМоде (ецхоПин, ИНПУТ); // поставља ецхоПин као улазни серијски.бегин (9600); // Покреће серијску комуникацију}

3. воид Триггер_УС () је функција која ће бити позвана за лажно окидање окидача другог ултразвучног сензора. Синхронизоваћемо време окидања триг пин-а оба сензора.

воид Триггер_УС () {// Лажни окидач америчког сензора дигиталВрите (тригПин, ХИГХ); // Пошаљите ВИСОКИ сигнал на пин окидача секунде делаиМицросецондс (10); // чекамо 10 микросекунди дигиталВрите (тригПин, ЛОВ); // слање НИЗКОГ сигнала на други окидач пина окидача}

Четири. воид Цалц () је функција која се користи за израчунавање времена које ултразвучном сигналу треба за путовање од првог сензора до другог сензора.

воид Цалц () // функција за израчунавање времена које ултразвучном таласу треба за путовање {трајање = 0; // трајање иницијално постављено на нулу Триггер_УС (); // позивамо функцију Триггер_УС вхиле (дигиталРеад (ецхоПин) == ХИГХ); // док је статус ео пина у великом кашњењу (2); // ставимо кашњење од 0,2 секунде Триггер_УС (); // позивамо функцију Триггер_УС дуратион = пулсеИн (ецхоПин, ХИГХ); // израчунавање потребног времена}

5. Овде у воид лооп () функција израчунавамо удаљеност користећи време које ултразвучни сигнал узима за путовање од првог сензора до другог сензора.

воид лооп () {Пдистанце = дистанце; Цалц (); // позивамо функцију Цалц () дистанце = трајање * 0,034; // израчунавање удаљености коју прелази ултразвучни талас ако (Пдаљеност == растојање || Пдаљење == растојање + 1 || Пдаљење == растојање-1) {Сериал.принт ('Меасуред Дистанце:'); // штампање на серијском монитору Сериал.принтлн (дистанце / 2); // испис на серијском монитору} //Сериал.принт('Дистанце: '); //Сериал.принтлн(дистанце/2); кашњење (500); // сачекајте 0,5 секунде}