Ushbu maqolada biz HC-SR04 ultratovush masofasini aniqlovchi-sonarni Arduino bilan bog'laymiz.
Kerakli
- - Arduino;
- - ultratovush sensori HC-SR04;
- - simlarni ulash.
Ko'rsatmalar
1-qadam
HC-SR04 ultratovush masofadan o'lchagichining harakati echolokatsiya printsipiga asoslanadi. U kosmosga tovush impulslarini chiqaradi va to'siqdan aks etgan signalni qabul qiladi. Ob'ektgacha bo'lgan masofa tovush to'lqinining to'siq va orqaga tarqalish vaqti bilan belgilanadi.
Ovoz to'lqini masofani o'lchash moslamasining TRIG oyog'iga kamida 10 mikrosaniyadagi musbat impulsni qo'llash orqali paydo bo'ladi. Puls tugashi bilanoq, masofani o'lchash moslamasi oldidagi bo'shliqqa 40 kHz chastotali ovozli impulslarni chiqaradi. Shu bilan birga, aks ettirilgan signalning kechikish vaqtini aniqlash algoritmi ishga tushiriladi va masofani o'lchash moslamasining ECHO oyog'ida mantiqiy birlik paydo bo'ladi. Sensor aks ettirilgan signalni aniqlagandan so'ng, ECHO pinida mantiqiy nol paydo bo'ladi. Ushbu signalning davomiyligi (rasmdagi "Echo kechikishi") ob'ektga bo'lgan masofani aniqlaydi.
Masofani o'lchash oralig'i HC-SR04 - 0,3 sm o'lchamlari bilan 4 metrgacha, kuzatish burchagi - 30 daraja, samarali burchak - 15 daraja. Kutish rejimida joriy iste'mol 2 mA, ish paytida - 15 mA.
2-qadam
Ultratovushli masofadan o'lchash moslamasining quvvat manbai +5 V kuchlanish bilan amalga oshiriladi. Qolgan ikkita pin Arduinoning har qanday raqamli portlariga ulangan, biz 11 va 12 ga ulanamiz.
3-qadam
Endi to'siqgacha bo'lgan masofani aniqlaydigan va uni ketma-ket portga chiqaradigan eskizni yozamiz. Birinchidan, biz TRIG va ECHO pinlarining raqamlarini o'rnatdik - bular 12 va 11-pinlar. Keyin biz triggerni chiqish deb e'lon qilamiz va echo-ni kirish sifatida e'lon qilamiz. Biz ketma-ket portni 9600 bod darajasida ishga tushiramiz. Loop () ning har bir takrorlanishida biz masofani o'qiymiz va uni portga chiqaramiz.
GetEchoTiming () funktsiyasi trigger impulsini hosil qiladi. U shunchaki 10 mikrosaniyadagi impuls oqimini hosil qiladi, bu esa tovush paketining masofani o'lchash moslamasi tomonidan kosmosga nurlanish boshlanishiga turtki beradi. Keyin u tovush to'lqinining uzatilishidan boshlanib, aks sado kelguniga qadar bo'lgan vaqtni eslaydi.
GetDistance () funktsiyasi ob'ektga bo'lgan masofani hisoblab chiqadi. Maktab fizikasi kursidan biz masofani vaqtga ko'paytiriladigan tezlikka teng ekanligini eslaymiz: S = V * t. Havodagi tovush tezligi 340 m / s, biz bilgan mikrosaniyadagi vaqt "duratuion" dir. Vaqtni soniyalarda olish uchun 1 000 000 ga bo'ling. Ovoz masofadan ikki marta - ob'ektga va orqaga qarab yurganligi uchun masofani yarmiga bo'lish kerak. Shunday qilib, biz eskizda yozgan ob'ektgacha bo'lgan masofa S = 34000 sm / sek * davomiyligi / 1.000.000 sek / 2 = 1.7 sm / sek / 100. Mikrokontroller ko'paytishni bo'linishdan tezroq bajaradi, shuning uchun "/ 100" ni "* 0, 01" ga tenglashtirdim.
4-qadam
Shuningdek, ko'plab kutubxonalar ultratovush masofani o'lchagich bilan ishlash uchun yozilgan. Masalan, bu: https://robocraft.ru/files/sensors/Ultrasonic/HC-SR04/ultrasonic-HC-SR04.zip. Kutubxona standart tarzda o'rnatiladi: Arduino IDE papkasida joylashgan kutubxonalar katalogiga yuklab oling, oching. Shundan so'ng kutubxonadan foydalanish mumkin.
Kutubxonani o'rnatib, yangi eskiz yozamiz. Uning ishi natijasi bir xil - ketma-ket port monitori ob'ektga masofani santimetrda aks ettiradi. Agar siz float dist_cm = ultrasonic. Ranging (INC) yozsangiz, eskizda masofa dyuym bilan ko'rsatiladi.
5-qadam
Shunday qilib, biz HC-SR04 ultratovush masofadan o'lchash moslamasini Arduino-ga uladik va undan ma'lumotlarni ikki xil usulda oldik: maxsus kutubxonadan foydalanish va holda.
Kutubxonadan foydalanishning afzalligi shundaki, kod miqdori sezilarli darajada kamayadi va dasturning o'qilishi yaxshilanadi, siz qurilmaning nozikliklari bilan tanishishingiz shart emas va siz darhol uni ishlatishingiz mumkin. Ammo bu kamchilik ham: siz qurilmaning qanday ishlashini va unda qanday jarayonlar sodir bo'lishini kamroq tushunasiz. Qanday bo'lmasin, qaysi usuldan foydalanish sizga bog'liq.