DIY ultratovushli masofa sensori. Ultrasonik masofa o'lchagich hc-sr04 - O'lchash texnologiyasi - Asboblar

Arduino ultratovushli masofa sensorlari nisbatan soddaligi, yetarlicha aniqligi va mavjudligi tufayli robototexnika loyihalarida juda mashhur. Ular to'siqlardan qochish, ob'ektlarning o'lchamlarini olish, xonaning xaritasini taqlid qilish va ob'ektlarga yaqinlashish yoki olib tashlash signalini beruvchi qurilmalar sifatida ishlatilishi mumkin. Bunday qurilmaning keng tarqalgan variantlaridan biri bu masofa sensori bo'lib, uning dizayni HC SR04 ultratovushli masofa o'lchagichni o'z ichiga oladi. Ushbu maqolada biz masofa sensori ishlash printsipi bilan tanishamiz, Arduino platalariga ulanishning bir nechta variantlarini, o'zaro ta'sir diagrammasi va namuna eskizlarini ko'rib chiqamiz.

Ultrasonik sensorning ob'ektgacha bo'lgan masofani aniqlash qobiliyati sonar printsipiga asoslanadi - ultratovush nurini yuborish va uning aksini kechikish bilan qabul qilish orqali qurilma ob'ektlarning mavjudligini va ularga bo'lgan masofani aniqlaydi. Qabul qilgich tomonidan yaratilgan, to'siqdan aks ettirilgan ultratovush signallari ma'lum vaqtdan keyin unga qaytadi. Aynan shu vaqt oralig'i ob'ektgacha bo'lgan masofani aniqlashga yordam beradigan xususiyatga aylanadi.

Diqqat! Operatsion printsipi ultratovushga asoslanganligi sababli, bunday sensor tovushni yutuvchi ob'ektlarga masofani aniqlash uchun mos emas. O'lchash uchun tekis, silliq yuzaga ega ob'ektlar optimal hisoblanadi.

HC SR04 sensorining tavsifi

Arduino masofa sensori kontaktsiz turdagi qurilma bo'lib, yuqori aniqlik va barqarorlikni ta'minlaydi. Uning o'lchov diapazoni 2 dan 400 sm gacha.Uning ishlashi elektromagnit nurlanish va quyosh energiyasidan sezilarli ta'sir ko'rsatmaydi. HC SR04 arduino bilan modullar to'plami qabul qiluvchi va uzatuvchini ham o'z ichiga oladi.

HC SR04 ultratovushli masofa o'lchagich quyidagi texnik parametrlarga ega:

  • Ta'minot kuchlanishi 5V;
  • Ishlaydigan oqim parametri 15 mA;
  • Passiv holatdagi joriy quvvat< 2 мА;
  • Ko'rish burchagi - 15 °;
  • teginish o'lchamlari - 0,3 sm;
  • O'lchash burchagi - 30 °;
  • Pulsning kengligi – 10-6 s.

Sensor to'rtta sim bilan jihozlangan (standart 2,54 mm):

  • Ijobiy turdagi quvvat kontakti - +5V;
  • Trig (T) – kirish signalining chiqishi;
  • Echo (R) – chiqish signalining chiqishi;
  • GND - "tuproq" pin.

Arduino uchun SR04 modulini qayerdan sotib olish mumkin

Masofa sensori juda keng tarqalgan komponent bo'lib, uni onlayn-do'konlarda osongina topish mumkin. Eng arzon variantlar (har bir parcha uchun 40-60 rubldan), an'anaviy ravishda taniqli veb-saytda.

Arduino uchun HC-SR04 masofa sensori moduli Ishonchli yetkazib beruvchidan HC-SR04 ultratovush sensori uchun yana bir variant
Yaqinlik sensorlari SR05 Ultrasonic HC-SR05 (yaxshilangan ishlash) Ishonchli yetkazib beruvchidan UNO R3 MEGA2560 DUE uchun HC-SR05 HY-SRF05 moduli

Arduino bilan o'zaro ta'sir qilish sxemasi

Ma'lumotlarni olish uchun siz quyidagi harakatlar ketma-ketligini bajarishingiz kerak:

  • Trig chiqishiga 10 mikrosekundlik impulsni qo'llang;
  • Arduino-ga ulangan hc sr04 ultratovush diapazonida signal emitter orqali oldinga yuboriladigan 40 kHz chastotali 8 ta impulsga aylanadi;
  • Impulslar to'siqqa yetganda, ular undan aks etadi va R qabul qilgich tomonidan qabul qilinadi, bu Echo chiqishida kirish signalini beradi;
  • Nazoratchi tomonida qabul qilingan signal formulalar yordamida masofaga aylantirilishi kerak.

Impuls kengligini 58,2 ga bo'lganda, biz ma'lumotlarni santimetrda olamiz, 148 ga bo'linganda, biz dyuymdagi ma'lumotlarni olamiz.

HC SR04-ni Arduino-ga ulash

Ultrasonik masofa sensorini Arduino platasiga ulash juda oddiy. Ulanish diagrammasi rasmda ko'rsatilgan.

Biz tuproq pinini Arduino platasidagi GND piniga ulaymiz va quvvat chiqishini 5V ga ulaymiz. Trig va Echo chiqishlarini raqamli pinlar orqali arduinoga ulaymiz. Non taxtasi yordamida ulanish opsiyasi:

HC SR04 bilan ishlash uchun kutubxona

Arduino-da HC SR04 masofa sensori bilan ishlashni osonlashtirish uchun siz NewPing kutubxonasidan foydalanishingiz mumkin. Unda ping bilan bog'liq muammolar yo'q va ba'zi yangi xususiyatlar qo'shiladi.

Kutubxonaning xususiyatlariga quyidagilar kiradi:

  • Turli ultratovushli sensorlar bilan ishlash qobiliyati;
  • Faqat bitta pin orqali masofa sensori bilan ishlashi mumkin;
  • Echo ping bo'lmaganda 1 soniya kechikish yo'q;
  • Oddiy xatolarni tuzatish uchun o'rnatilgan raqamli filtr mavjud;
  • Eng aniq masofani hisoblash.

NewPing kutubxonasini yuklab olishingiz mumkin

HC SR04 sensori bilan masofani o'lchashning aniqligi

Sensorning aniqligi bir necha omillarga bog'liq:

  • havo harorati va namligi;
  • ob'ektga masofa;
  • sensorga nisbatan joylashuvi (radiatsiya diagrammasi bo'yicha);
  • sensor modul elementlarining ishlash sifati.

Har qanday ultratovush sensorining ishlash printsipi havoda tarqaladigan akustik to'lqinlarni aks ettirish fenomeniga asoslanadi. Ammo fizika kursidan ma'lumki, havoda tovushning tarqalish tezligi o'sha havoning o'ziga xos xususiyatlariga (birinchi navbatda haroratga) bog'liq. Sensor, to'lqinlarni chiqaradigan va ular qaytib kelguniga qadar vaqtni o'lchaydi, ular qanday muhitda tarqalishlari haqida hech qanday tasavvurga ega emas va hisob-kitoblar uchun ma'lum miqdorni oladi. o'rtacha qiymat. IN real sharoitlar Havo harorati omili tufayli HC-SR04 1 dan 3-5 sm gacha xatolikka ega bo'lishi mumkin.

Ob'ekt omiliga masofa muhim, chunki ... qo'shni ob'ektlardan aks ettirish ehtimoli ortadi va signalning o'zi masofa bilan susayadi.

Bundan tashqari, aniqlikni oshirish uchun siz sensorni to'g'ri yo'naltirishingiz kerak: ob'ekt radiatsiya naqshining konusi ichida ekanligiga ishonch hosil qiling. Oddiy qilib aytganda, HC-SR04 ning "ko'zlari" to'g'ridan-to'g'ri mavzuga qarashi kerak.

Xatolar va o'lchov noaniqligini kamaytirish uchun odatda quyidagi harakatlar amalga oshiriladi:

  • qiymatlar o'rtacha hisoblanadi (biz bir necha marta o'lchaymiz, shpiklarni olib tashlaymiz, keyin o'rtachani topamiz);
  • datchiklar yordamida (masalan, ) harorat aniqlanadi va tuzatish omillari qo'llaniladi;
  • sensor servomotorga o'rnatiladi, uning yordamida biz "boshni aylantiramiz", radiatsiya naqshini chapga yoki o'ngga siljitamiz.

Masofa sensoridan foydalanishga misollar

Keling, oddiy taxta loyihasining misolini ko'rib chiqaylik Arduino Uno va masofa sensori HC SR04. Eskizda biz ob'ektlargacha bo'lgan masofaning qiymatini olamiz va ularni Arduino IDE-dagi port monitoriga chiqaramiz. Eskiz va ulanish sxemasini osongina o'zgartirishingiz mumkin, shunda sensor ob'ekt yaqinlashganda yoki uzoqlashayotganda signal beradi.

Sensorni Arduino-ga ulash

Eskizni yozishda sensorni ulash uchun quyidagi pinout opsiyasi ishlatilgan:

  • VCC: +5V
  • Trig - 12 pin
  • Echo - 11 pin
  • Zamin (GND) - Yer (GND)

Eskiz namunasi

Keling, tashqi kutubxonalardan foydalanmasdan, nisbatan murakkab versiya bilan darhol sensor bilan ishlashni boshlaylik.

Ushbu eskizda biz quyidagi harakatlar ketma-ketligini bajaramiz:

  • Qisqa impuls (2-5 mikrosekund) bilan biz masofa sensorini echolocation rejimiga o'tkazamiz, bunda 40 KHz chastotali ultratovush to'lqinlari atrofdagi kosmosga yuboriladi.
  • Biz sensorni aks ettirilgan signallarni tahlil qilishini kutamiz va kechikish asosida masofani aniqlaymiz.
  • Biz masofa qiymatini olamiz. Buning uchun HC SR04 ECHO kirishidagi masofaga mutanosib impuls hosil qilguncha kuting. Biz pulsning davomiyligini pulseIn funktsiyasidan foydalanib aniqlaymiz, bu bizga signal darajasi o'zgarishidan oldin o'tgan vaqtni qaytaradi (bizning holatlarimizda, pulsning tushadigan qirrasi paydo bo'lishidan oldin).
  • Vaqtni olganimizdan so'ng, biz qiymatni doimiyga bo'lish orqali uni santimetrdagi masofaga aylantiramiz (SR04 sensori uchun bu "bor" signali uchun 29,1, "orqa" signali uchun bir xil, bu jami 58,2 ni beradi. ).

Agar masofa sensori signalni o'qimasa, u holda chiqish signalini konvertatsiya qilish hech qachon qisqa pulsning qiymatini olmaydi - LOW. Ba'zi sensorlar uchun kechikish vaqti ishlab chiqaruvchiga qarab o'zgarganligi sababli, yuqoridagi eskizlardan foydalanganda uning qiymatini qo'lda o'rnatish tavsiya etiladi (biz buni tsiklning boshida qilamiz).

Agar masofa 3 metrdan ortiq bo'lsa, HC SR04 yomon ishlay boshlasa, kechikish vaqtini 20 ms dan ortiqroqqa belgilash yaxshiroqdir, ya'ni. 25 yoki 30 ms.

#define PIN_TRIG 12 #define PIN_ECHO 11 uzoq davomiylik, sm; void setup() ( // Serial.begin (9600) seriyali port orqali aloqani ishga tushiring); // Kirish va chiqishlarni aniqlang pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT); ) void loop() ( // Birinchi 2-5 mikrosekundlik qisqa puls hosil qiling digitalWrite(PIN_TRIG, LOW); delayMicroseconds(5); digitalWrite(PIN_TRIG, HIGH); // Signal darajasini yuqori o'rnating, taxminan 10 mikrosekund kuting. Ayni paytda sensor signallarni yuboradi. chastotasi 40 KHz.delayMicroseconds(10);digitalWrite(PIN_TRIG, LOW); // Exolokatordagi akustik signal uchun kechikish vaqti.daration = pulseIn(PIN_ECHO, HIGH); // Endi vaqtni ga aylantirish qoladi. masofa sm = (davomiylik / 2) / 29.1; Seriya. print("Ob'ektgacha bo'lgan masofa: "); Serial.print(sm); Serial.println(" sm."); // To'g'ri ishlashi uchun o'lchovlar orasidagi kechikish eskiz kechikishi (250); )

NewPing kutubxonasidan foydalanib eskiz

Endi NewPing kutubxonasidan foydalangan holda eskizni ko'rib chiqamiz. Kod sezilarli darajada soddalashtiriladi, chunki ilgari tasvirlangan barcha harakatlar kutubxona ichida yashiringan. Biz qilishimiz kerak bo'lgan narsa - masofa sensorini ulaydigan va ob'ekt usullaridan foydalanadigan pinlarni ko'rsatib, NewPing sinfining ob'ektini yaratish. Bizning misolimizda masofani santimetrda olish uchun biz ping_cm() dan foydalanishimiz kerak.

#o'z ichiga oladi #define PIN_TRIG 12 #define PIN_ECHO 11 #define MAX_DISTANCE 200 // Biz to'g'ri deb hisoblaydigan maksimal masofani aniqlash uchun doimiy. // Biz masofani olish uchun usullaridan foydalanadigan ob'ekt yarating. // Parametrlar sifatida biz sensorning ECHO va TRIG chiqishlari ulangan pin raqamlarini o'tkazamiz NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE); void setup() ( // 9600 tezlikda ketma-ket port orqali aloqani ishga tushiring Serial.begin(9600); ) void loop() ( // To'g'ri ishlash uchun boshlash kechikishi kerak. delay(50); // Qiymatni oling masofa sensoridan va uni imzosiz int o'zgaruvchisiga saqlang = sonar.ping_cm(); // port monitorida masofani chop eting Serial.print(distance); Serial.println("cm"); )

HC SR04 ultratovushli masofa o'lchagichni bitta pin bilan ulash misoli

HC-SR04-ni Arduino-ga ulash bitta pin yordamida amalga oshirilishi mumkin. Agar siz katta loyiha ustida ishlayotgan bo'lsangiz va etarli bo'sh pinlar bo'lmasa, ushbu parametr foydalidir. Ulanish uchun siz TRIG va ECHO pinlari orasiga 2,2K rezistorni o'rnatishingiz va TRIG pinini Arduino-ga ulashingiz kifoya.

#o'z ichiga oladi #define PIN_PING 12 // Arduino pin masofa sensoridagi tetik va echo pinlariga ulangan #define MAX_DISTANCE 200 // Biz nazorat qila oladigan maksimal masofa (400-500 sm). NewPing sonar(PIN_PING, PIN_PING, MAX_DISTANCE); // PIN-kodlarni va maksimal masofani sozlash void setup() ( Serial.begin(9600); // Ma'lumotlar va uzatish chastotasi 115200 bps bo'lgan protokolni ochadi. ) void loop() ( kechikish (50); // Kechikish 50 hosil qilingan to'lqinlar orasidagi ms. 29 ms - minimal ruxsat etilgan qiymat unsigned int distanceSm = sonar.ping(); // Signal yarating, uning davomiyligi parametrini µs (uS) da oling. Serial.print("Ping: "); Seriya. print(distanceSm / US_ROUNDTRIP_CM); // Vaqt parametrini masofa qiymatiga aylantiring va natijani ko'rsating (0 ruxsat etilgan chegaradan oshib ketishga to'g'ri keladi) Serial.println("cm"); )

Qisqacha xulosalar

Ultrasonik masofa datchiklari ko'p qirrali va ko'pchilik hobbi loyihalarida foydalanish uchun etarlicha aniqdir. Maqolada Arduino platasiga osongina ulanadigan juda mashhur HC SR04 sensori muhokama qilinadi (buning uchun siz darhol ikkita bepul pinni taqdim etishingiz kerak, ammo bitta pin bilan ulanish imkoniyati mavjud). Sensor bilan ishlash uchun bir nechta variant mavjud. bepul kutubxonalar(maqolada ulardan faqat bittasi, NewPing muhokama qilinadi), lekin siz ularsiz qila olasiz - sensorning ichki boshqaruvchisi bilan o'zaro ishlash algoritmi juda oddiy, biz buni ushbu maqolada ko'rsatdik.

O'z tajribamga asoslanib, HC-SR04 sensori 10 sm dan 2 m gacha bo'lgan masofada bir santimetrgacha aniqdir.Qisqaroq va uzoqroq masofalarda kuchli shovqin paydo bo'lishi mumkin, bu atrofdagi narsalarga va foydalanish usuliga juda bog'liq. Lekin ko'pincha HC-SR04 ajoyib ish qildi.

Bruno Gavand

Masofani o‘lchash uchun ultratovushli datchik uchun oddiy va arzon yechimni ko‘rib chiqadigan loyiha kompaniyaning PIC16F877A mikrokontrolleriga asoslangan, biroq manba kodini foydalanuvchilar boshqa mikrokontrollerlarga moslashtira oladi. Sensor maxsus dizayn va qurilmalarga o'rnatilishi mumkin: mavjudlik detektorlari, robotlar, avtoturargoh tizimlari, masofani o'lchash moslamalari va boshqalar.

O'ziga xos xususiyatlar:

  • oz miqdordagi tashqi komponentlar;
  • kod hajmi 200 bayt;
  • ish masofasi diapazoni: 30 sm - 200 sm;
  • o'lchov aniqligi ±1 sm;
  • o'lchov chegaralaridan oshib ketganligini ko'rsatish.

Ma'lumki, havodagi tovush tezligi taxminan 340 m/s ni tashkil qiladi. Shunday qilib, ultratovush sensori printsipi 40 kHz chastotali ultratovush impulsini yuborish va aks ettirilgan signalni (echo) kuzatishdir. Albatta, siz hech qanday tovushni eshitmaysiz, lekin ultratovush sensori aks ettirilgan impulsni aniqlashga qodir. Shuning uchun, pulsning sayohat vaqtini va aks ettirilgan ultratovush signalini bilib, biz masofani olishimiz mumkin. Ikkiga bo'linib, biz ultrasonik sensordan signal aks ettirilgan birinchi to'siqqa qadar masofani olamiz.

Qurilma MA40B8S piezoseramik ultratovushli emitent va MA40B8R piezoseramik ultratovush sensoridan foydalanadi. ochiq turi. Asosiy parametrlar quyidagi jadvalda ko'rsatilgan.

Qurilma Maqsad Chastotasi Yo'nalish,
do'l
Imkoniyatlar,
pF
Mintaqa
aniqlash,
m
Kiritish
Kuchlanishi,
maksimal, V
MA40B8S Emitent 40 kHz 50 (simmetrik) 2000 0.2 … 6 40
MA40B8R Sensor 40 kHz 50 (simmetrik) 2000 0.2 … 6

Sinov uchun kompaniyaning disk raskadrovka platformasidan foydalanilgan.

Biroq, foydalanuvchi kamida bitta ADC kanali va bitta PWM kanaliga ega bo'lgan har qanday PIC mikrokontrolleridan foydalanishi mumkin.

Ultrasonik sensorning sxematik diagrammasi

Emitent BD135 tranzistori orqali boshqariladi. 1N4007 diodi tranzistorni teskari kuchlanishdan himoya qilish uchun ishlatiladi. 330 mkH induktor L1 va emitentning o'zi tomonidan hosil qilingan kondansatkichning parallel ulanishi natijasida hosil bo'lgan tranzistor va rezonansli kontaktlarning zanglashiga olib kelishi tufayli emitentning besleme kuchlanishi taxminan 20 V ni tashkil qiladi, bu aniqlash diapazonini ta'minlaydi. 200 sm gacha. Shuni ta'kidlash kerakki, emitent to'g'ridan-to'g'ri mikrokontroller chiqishidan boshqarilishi mumkin, ammo bu holda masofa oralig'i 50 sm dan oshmaydi.

Sensor to'g'ridan-to'g'ri mikrokontrollerning ADC ga ulangan (PIC16F877A - ADC ning 1-kanalidan foydalanilganda), empedansni moslashtirish uchun sensorga parallel ravishda ulangan rezistor kerak.

Avval siz ultratovush impulsini yuborishingiz kerak. 40 kHz signal apparat PWM mikrokontrolleri yordamida osongina olinadi. Sensordan aks ettirilgan signal ADC ga kiradi, ADC o'lchamlari 4 mV ni tashkil qiladi, bu sensordan ma'lumotlarni o'qish uchun juda etarli va qo'shimcha komponentlar kerak emas.

Ultrasonik sensorni ishlab chiqish platasining tashqi ko'rinishi


Ushbu sensor eng oddiy echimdir va shuning uchun bir nechta kamchiliklarga ega: ultratovush qabul qilgichning engil tebranishi noto'g'ri o'lchovlarga olib kelishi mumkin. Yuborilgan impuls modulyatsiyalanmagan yoki kodlanmaganligi sababli, ultratovush chastotasining begona manbalari o'lchovga xalaqit berishi mumkin, bularning barchasi noto'g'ri natijalar(o'lchov chegaralaridan tashqariga chiqish).

Rasmdagi izohlar:

ultratovushli portlash - ultratovush zarbasi;
mexanik aks sado (dasturiy ta'minot tomonidan olib tashlanadi) - mexanik aks sado (dastur tomonidan olib tashlanadi);
uzoq ob'ekt tomonidan aks ettirilgan ultratovush to'lqini - uzoq ob'ektdan aks ettirilgan ultratovush to'lqini.

Osiloskopning bo'linish qiymati: gorizontal - 1 ms / div, vertikal - 5 mV / div.

Mexanik aks-sado dasturiy ta'minotda kechikishni kiritish orqali yo'q qilinadi. Taxminan 40 mV amplitudaga ega bo'lgan aks ettirilgan to'lqin yuborilgan pulsdan 9,5 ms keyin qabul qilindi. Ovoz tezligi 340 m/s ekanligini hisobga olsak, biz quyidagilarni olamiz:

0,0095 / 2 × 340 = 1,615 m.

Aslida, bu sensordan 172 sm masofada joylashgan xonaning tomi edi; disk raskadrovka taxtasida o'rnatilgan LCD displeyda 170 sm qiymati ko'rsatilgan.

Yuklashlar

PIC16F877A mikrokontrolleridagi loyiha uchun manba kodi (mikroC kompilyatori) -

Vaqti-vaqti bilan men o'zimga HC-SR04 ultratovushli masofa o'lchagich sotib oldim. Qurilma ikkita piezo emitrli modul bo'lib, ulardan biri emitent, ikkinchisi esa ultratovush to'lqinining qabul qiluvchisi sifatida xizmat qiladi; emitent va qabul qilgichni boshqarish uchun plyus nazorat elektroniği. Ulanish uchun modulda 4 pinli ulagich mavjud: ulardan ikkitasi quvvatni ta'minlaydi (5 volt kerak), yana ikkitasi mikrokontroller bilan aloqa qilish uchun.

Bu erda aloqa interfeysi juda sodda tarzda tashkil etilgan: biz kirishga 10-15 mikrosekundlik qisqa pulsni qo'llaymiz va chiqishda pulsni kutamiz. Aks ettirilgan to'lqin qabul qilgichga etib borishi bilan modulning o'zi masofani hisoblab chiqadi va Echo oyog'iga 25 ms gacha yuqori darajadagi impuls yuboradi. Chiqish impulsining uzunligi ultratovush to'lqini aks ettirilgan to'siqgacha bo'lgan masofaga mutanosib bo'ladi. Biz qilishimiz kerak bo'lgan yagona narsa bu impulsni ushlab turish, uning uzunligini hisoblash va bu qiymatni masofaga aylantirishdir.

Texnik xususiyatlari:

  • Ta'minot kuchlanishi: 5V
  • Sokin oqim:< 2 мА
  • Samarali ko'rish burchagi:< 15 °
  • Masofa oralig'i: 2 sm - 500 sm
  • Ruxsat: 0,3 sm

Xarakteristikalar modul uchun hujjatlardan ko'chirildi. Bundan tashqari, ishlab chiqaruvchi pulsning davomiyligiga qarab masofani hisoblash uchun formulani taqdim etadi.

S=F/58 ; Bu erda S - santimetrdagi masofa, F - mikrosekundlarda puls uzunligi

Ko'rib turganingizdek, tovush tezligini bilish ham shart emas.

Sinov uchun men quyidagi sxemani yig'dim:

Modul to'g'ridan-to'g'ri mikrokontrollerga ulanadi. Pull-up rezistorlarini o'rnatishning hojati yo'q, ular allaqachon modul taxtasida.

Shunday qilib, biz faqat bitta impulsni ushlab, keyin uning uzunligini hisoblashimiz kerak. Avvaliga men bu maqsadda mikrokontrollerning tashqi uzilishlaridan birini ishlatmoqchi bo'ldim va uzilish ham oldingi chekkada (pastlikdan yuqori holatga o'tish) va tushadigan chekkada (yuqoridan pastgacha) sodir bo'lishi kerak edi. Ya'ni, siz ushbu uzilishning konfiguratsiyasini tezda o'zgartirishingiz kerak bo'ladi. Bundan tashqari, puls uzunligini o'lchashi kerak bo'lgan taymerlardan birini ishlatishingiz kerak. Kichkina signalni tuzatish operatsiyasi uchun juda murakkab.. Bascom-AVR bu holat uchun maxsus buyruqqa ega Pulsein . Bu buyruq yordamida signalni qanday tutishga misol:

Pulsein A, Pind, 5 , 1

Bu erda o'zgaruvchida A impuls uzunligining qiymati yoziladi o'nlab mikrosoniyalar oyoqdan olingan Pind.5. Buyruqning oxiridagisi, siz yuqori darajadagi signalni olishingiz kerakligini aytadi. Agar 0 ga o'zgartirilsa, boshqaruvchi past darajadagi signalni ushlaydi.

Bu buyruq uzilishlar yoki apparat taymeridan foydalanmaydi, lekin impulsning paydo bo'lishini aniqlash va uning uzunligini 10 mks o'lchamlari bilan yozishga qodir. Buyruq impuls uzunligini saqlash uchun 2 baytli o'zgaruvchi turidan foydalanadi, shuning uchun qabul qilingan signalning maksimal uzunligi 655,35 ms bo'lishi mumkin. Bu vazifani bajarish uchun etarli, ammo agar kerak bo'lsa, siz mcs.lib kutubxona faylini tahrirlashingiz va yozilgan pulsning maksimal davomiyligini o'zgartirishingiz mumkin.

Dasturning to'liq ro'yxati quyida keltirilgan

$regfile = "m8def.dat"

$kristal = 8000000

displeyni MK portlariga ulash konfiguratsiyasi

Konfiguratsiya LCD = 16 * 2

Konfiguratsiya Lcdpin= Pin, Rs= Portc. 5 , E= Portc. 4 , Db4= Portc. 3 , Db5= Portc. 2 , Db6= Portc. 1 , Db7= Portc. 0

Konfiguratsiya Portd. 4 = Chiqish "Trigger oyog'ini ulash uchun chiqish

TriggerTaxallus Portd. 4

Trigger= 0

Konfiguratsiya Portd. 5 = Kiritish "Echo impulsi uchun kirish

Konfiguratsiya Portd. 7 = Chiqish "LED ulanishi uchun konfiguratsiya

LEDTaxallus Portd. 7

LED= 0

Xira ASifatida So'z "Signal uzunligi qiymati bu erda ko'chiriladi

Xira SSifatida Yagona masofani saqlash uchun "o'zgaruvchi

Const K= 0 . 1725 "puls uzunligini masofaga aylantirish koeffitsienti

Kutishlar 50

Kursor Oʻchirilgan

Cls

LCD "Sonar HC-SR04"

Toping 2 , 1

LCD "veb-sayt"

LED= 1

Kutishlar 100

LED= 0

Kutmoq 3

Do

Trigger= 1 "Biz Portd.4 oyog'iga 15 mks davomiylik bilan impuls beramiz

Waitus 15

Trigger= 0

Waitus 10

Pulsein A, Pind, 5 , 1 "Biz PinD.5-da yuqori darajadagi impulsni ushlaymiz

Rang o'lchagich ob'ektgacha bo'lgan masofani o'lchash uchun qurilma. Masofa o'lchagich robotlarga turli vaziyatlarda yordam beradi. Oddiy g‘ildirakli robot to‘siqlarni aniqlash uchun ushbu qurilmadan foydalanishi mumkin. Uchuvchi dron oldindan belgilangan balandlikda yer ustida uchib ketish uchun masofa o‘lchagichdan foydalanadi. Masofa o'lchagichdan foydalanib, siz hatto maxsus SLAM algoritmi yordamida xonaning xaritasini yaratishingiz mumkin.

1. Ishlash printsipi

Bu safar biz eng mashhur sensorlardan biri - ultratovushli (AQSh) masofa o'lchagichning ishlashini tahlil qilamiz. Ko'p turli xil modifikatsiyalar mavjud shunga o'xshash qurilmalar, lekin ularning barchasi aks ettirilgan tovushning sayohat vaqtini o'lchash printsipi asosida ishlaydi. Ya'ni, sensor ma'lum bir yo'nalishda ovozli signal yuboradi, keyin aks ettirilgan aks-sadoni ushlaydi va tovushning sensordan to'siqqa va orqaga parvoz vaqtini hisoblab chiqadi. Maktab fizikasi kursidan ma'lum muhitda tovush tezligi doimiy, lekin muhitning zichligiga bog'liqligini bilamiz. Havodagi tovush tezligini va tovushning nishonga uchish vaqtini bilib, biz tovushning bosib o'tgan masofasini formuladan foydalanib hisoblashimiz mumkin: s = v*t Bu erda v - tovush tezligi m/s, t - soniyalarda vaqt. Ovozning havodagi tezligi, aytmoqchi, 340,29 m/s. O'z vazifasini bajarish uchun masofa o'lchagich ikkita muhim ahamiyatga ega dizayn xususiyatlari. Birinchidan, tovush to'siqlardan yaxshi aks etishi uchun sensor 40 kHz chastotali ultratovush chiqaradi. Buning uchun sensorda bunday yuqori chastotali tovushni yaratishga qodir bo'lgan piezokeramik emitent mavjud. Ikkinchidan, emitent shunday yaratilganki, ovoz barcha yo'nalishlarda tarqalmaydi (odatiy dinamiklarda bo'lgani kabi), lekin tor yo'nalishda. Rasmda odatiy ultratovushli masofa o'lchagichning radiatsiya sxemasi ko'rsatilgan. Diagrammada ko'rinib turganidek, eng oddiy ultratovushli masofa o'lchagichning ko'rish burchagi taxminan 50-60 daraja. Sensor uning oldidagi to'siqlarni aniqlagan odatiy foydalanish holati uchun bu ko'rish burchagi juda mos keladi. Ultratovush hatto stulning oyog'ini ham aniqlay oladi, masalan, lazerli masofa o'lchagich buni sezmasligi mumkin. Agar biz masofa o'lchagichni radar kabi aylana bo'ylab aylantirib, atrofdagi bo'shliqni skanerlashga qaror qilsak, ultratovushli masofa o'lchagich bizga juda noto'g'ri va shovqinli tasvirni beradi. Bunday maqsadlar uchun lazerli masofa o'lchagichdan foydalanish yaxshiroqdir. Ultrasonik masofa o'lchagichning ikkita jiddiy kamchiliklarini ham ta'kidlash kerak. Birinchisi, gözenekli tuzilishga ega bo'lgan sirtlar ultratovushni yaxshi qabul qiladi va sensor ularga masofani o'lchay olmaydi. Misol uchun, agar biz multikopterdan baland o'tli dala yuzasiga masofani o'lchashga qaror qilsak, biz juda noaniq ma'lumotlarni olamiz. Ko'pikli kauchuk bilan qoplangan devorga masofani o'lchashda bizni xuddi shunday muammolar kutmoqda. Ikkinchi kamchilik tovush to'lqinining tezligi bilan bog'liq. Bu tezlik o'lchov jarayonini tez-tez bajarish uchun etarlicha tez emas. Aytaylik, robotning oldida 4 metr masofada to'siq bor. Ovozning oldinga va orqaga tarqalishi uchun 24 ms vaqt ketadi. Uchuvchi robotlarga ultratovushli masofa o'lchagichni o'rnatishdan oldin siz 7 marta o'lchashingiz kerak.

2. Ultrasonik masofa o'lchagich HC-SR04

Ushbu qo'llanmada biz HC-SR04 sensori va Arduino Uno boshqaruvchisi bilan ishlaymiz. Ushbu mashhur masofa o'lchagich 1-2 sm dan 4-6 metrgacha bo'lgan masofani o'lchashi mumkin. Shu bilan birga, o'lchov aniqligi 0,5 - 1 sm.Bir xil HC-SR04 ning turli xil versiyalari mavjud. Ba'zilar yaxshiroq ishlaydi, boshqalari esa yomonroq. Siz ularni teskari tomondagi taxtaning naqshiga ko'ra farqlashingiz mumkin. Yaxshi ishlaydigan versiya quyidagicha ko'rinadi:

Mana muvaffaqiyatsiz bo'lishi mumkin bo'lgan versiya:

3. HC-SR04 ulanishi

HC-SR04 sensori to'rtta chiqishga ega. Tuproq (Gnd) va quvvat (Vcc) dan tashqari, Trig va Echo ham mavjud. Bu ikkala pin ham raqamli, shuning uchun biz ularni Arduino Uno ning istalgan pinlariga ulaymiz:
HC-SR04 GND VCC Trig Echo
Arduino Uno GND +5V 3 2
Qurilmaning sxematik diagrammasi Tartib ko'rinishi

4. Dastur

Shunday qilib, keling, sensorga zondlovchi ultratovush impulsini yuborishni buyurishga harakat qilaylik va keyin uning qaytishini yozib oling. Keling, HC-SR04 ning vaqt diagrammasi qanday ko'rinishini ko'rib chiqaylik.
Diagramma shuni ko'rsatadiki, o'lchashni boshlash uchun biz chiqishda hosil qilishimiz kerak Trig 10 mks uzunlikdagi ijobiy impuls. Shundan so'ng, sensor 8 ta zarba seriyasini chiqaradi va chiqishdagi darajani oshiradi Echo, aks ettirilgan signalni kutish rejimiga o'tish. Masofa o'lchagich ovoz qaytganini sezgandan so'ng, u ijobiy pulsni yakunlaydi Echo. Ma'lum bo'lishicha, biz faqat ikkita narsani qilishimiz kerak: o'lchashni boshlash uchun Trig-da impuls yarating va Echo-da pulsning uzunligini o'lchaymiz, shunda biz oddiy formuladan foydalanib masofani hisoblashimiz mumkin. Keling buni bajaramiz. int echoPin = 2; int trigPin = 3; void setup() ( Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); ) void loop() ( int davomiyligi, sm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin, YUQORI); kechikishMikrosekundlar(10); digitalWrite(trigPin, LOW); davomiylik = pulseIn(echoPin, HIGH); sm = davomiylik / 58; Serial.print(sm); Serial.println("sm"); kechikish (100); ) Funktsiya pulseIn echoPin oyog'idagi musbat pulsning uzunligini mikrosekundlarda o'lchaydi. Dasturda biz tovushning parvoz vaqtini davomiylik o'zgaruvchisida yozamiz. Avvalroq bilib olganimizdek, vaqtni tovush tezligiga ko'paytirishimiz kerak bo'ladi: s = davomiyligi * v = davomiyligi * 340 m/s Ovoz tezligini m/s dan sm/ms ga aylantiring: s = davomiyligi * 0,034 m/ms Qulaylik uchun biz o'nli kasrni oddiy kasrga aylantiramiz: s = davomiyligi * 1/29 = davomiyligi / 29 Endi eslaylikki, tovush ikki talab qilinadigan masofani bosib o'tgan: nishonga va orqaga. Keling, hamma narsani 2 ga ajratamiz: s = davomiyligi / 58 Endi biz dasturdagi 58 raqami qaerdan kelganini bilamiz! Dasturni Arduino Uno-ga yuklang va ketma-ket port monitorini oching. Keling, sensorni turli ob'ektlarga qaratib, monitordagi hisoblangan masofani ko'rib chiqaylik.

Vazifalar

Endi masofa o'lchagich yordamida masofani hisoblashimiz mumkin, biz bir nechta foydali qurilmalarni qilamiz.
  1. Qurilish masofa o'lchagich. Dastur masofa o'lchagich yordamida har 100 ms masofani o'lchaydi va natijani ramziy LCD displeyda ko'rsatadi. Qulaylik uchun, hosil bo'lgan qurilma kichik qutiga joylashtirilishi va batareyalar bilan quvvatlanishi mumkin.
  2. Ultrasonik qamish. Keling, o'lchangan masofaga qarab turli xil chastotalarda signalni "bip" qiladigan dastur yozaylik. Misol uchun, agar to'siqgacha bo'lgan masofa uch metrdan ortiq bo'lsa, signal har yarim soniyada bir marta ovoz chiqaradi. 1 metr masofada - har 100msda bir marta. 10 sm dan kam - doimiy signal beradi.

Xulosa

Ultrasonik masofa o'lchagich foydalanish uchun qulay, arzon va aniq sensor bo'lib, minglab robotlarda o'z vazifasini yaxshi bajargan. Darsda bilib olganimizdek, sensorning kamchiliklari bor, ular robotni qurishda e'tiborga olinishi kerak. Yaxshi yechim lazer bilan birlashtirilgan ultratovushli masofa o'lchagichdan foydalanish bo'ladi. Bunday holda, ular bir-birining kamchiliklarini tekislaydilar.

HC-SR04 robototexnikadagi eng keng tarqalgan va arzon masofa o'lchagichlardan biridir. Bu sizga 2 sm dan 4 m gacha (ehtimol ko'proq) masofalarni 0,3-1 sm aniqlik bilan o'lchash imkonini beradi. Chiqish raqamli signal bo'lib, uning davomiyligi to'siqlargacha bo'lgan masofaga proportsionaldir.

Ultrasonik masofa o'lchagich

Men bu sensorni uzoq vaqt oldin sotib olganman va uning qutisida yotgan edim, deyarli unutilgan. Ammo bitta loyiha doirasida u ochiq yorug'likka chiqarildi va ma'lumot uchun, uning va voltmetr taxtasi asosida juda ixcham masofa o'lchagich qurilgan.

Ultrasonik masofa o'lchagich HC-SR04

Sensor xususiyatlari:

Quvvat - 5V
Joriy iste'mol: 2mA dan kam
Samarali ko'rish burchagi - 15 daraja
O'lchash masofasi - 2 sm - 5 m
Aniqlik - 3 mm
Sensor uchun hujjatlardan olingan

HC-SR04 ning ishlash printsipi

Ish printsipi

Modulda 4 ta pin bor, ulardan ikkitasi quvvat - tuproq va +5V, yana ikkitasi ma'lumot. Modul quyidagi tarzda so'raladi: Trig piniga 10 mks davomiylikdagi impuls yuboriladi. Diapazon o'lchagich 8 ta ultratovushli 40 KHz impulslar to'plamini ishlab chiqaradi. Ko'pgina sirtlardan aks ettirilgan, agar ular yo'lda yo'qolmasa, qaytib keladi. Signalni Trigga yuborganimizdan so'ng, biz Echo chiqishidan 150 mks dan 25 ms gacha davom etadigan ijobiy javob signalini kutishni boshlaymiz, bu ob'ektgacha bo'lgan masofaga proportsionaldir. Aniqrog'i, sensordan to'siqqa va orqaga sayohat vaqti. Agar javob bo'lmasa (sensor uning aks-sadosini eshitmaydi), u holda signal 38 ms uzunlikda qaytadi. Ob'ekt (to'siq)gacha bo'lgan masofa quyidagi oddiy formula yordamida hisoblanadi:

Bu erda: L - ob'ektgacha bo'lgan santimetrdagi masofa va F - Echo pinidagi zarba uzunligi.
Tavsiya etilgan sensorli so'rov vaqti 50ms yoki 20Hz.

Ushbu modulning birinchi sinovlari raqamli osiloskop yordamida amalga oshirildi, u moduldan javob oldi va qo'lda Trigni + quvvatga tezda qisqartirish orqali 10 mks impulsni olishga harakat qildi. Yarim hollarda u ishladi [ :)].

Dizayn

Sensor umumiy anodli voltmetr taxtasiga ulangan, u bilan ishlash uchun biroz o'zgartirilgan (kondensatorli keraksiz ajratgich olib tashlandi va RA3 dan chiqish qo'shildi). Voltmetrning 5-versiyasidan mikrokontroller ishlatilgan - PIC16F688, ultratovushli masofa o'lchagich uchun dasturiy ta'minot qayta ko'rib chiqilgan.