Ko'rishlar: 164 Muallif: Greys Nashr qilish vaqti: 2021-07-26 Kelib chiqishi: Sayt
The HC-SR04 ultratovush sensori Arduino loyihalari uchun eng mashhur masofani o'lchash modullaridan biridir. U to'siqlardan qochish robotlarida, to'xtash datchiklarida, darajani aniqlashda, aqlli axlat qutilarida, masofa o'lchagichlarda va boshqa kontaktsiz sensorli ilovalarda keng qo'llaniladi.
Modul transmitter orqali 40 kHz ultratovush to'lqinlarini chiqaradi. Ovoz to'lqini ob'ekt bilan uchrashganda, u qabul qiluvchiga qaytariladi. Echo vaqtini o'lchash va tovush tezligidan foydalanib, Arduino sensor va ob'ekt orasidagi masofani hisoblashi mumkin.
| Parametr | Qiymat |
| Oddiy ish kuchlanishi | 5V DC |
| Statik ish oqimi | Ba'zi modul versiyalarida 5mA dan kam |
| Ishlash chastotasi | 40 kHz ultratovush to'lqini |
| Aniqlash masofasi | Umumiy diapazon: 2 sm dan 400 sm gacha; Ba'zi daromad sozlangan versiyalar uzoqroq masofani qo'llab-quvvatlashi mumkin. |
| Aniqlash burchagi | Odatda 15 daraja ichida; yuqori daromadli ba'zi versiyalar taxminan 30 darajaga yetishi mumkin. |
| Aniqlik | Tegishli sinov sharoitida taxminan 0,3 sm gacha |
| Ko'r zona | Taxminan 2 sm minimal o'lchash masofasi |
HC-SR04 ultratovush moduli to'rtta pinga ega: VCC, TRIG, ECHO va GND. Arduino TRIG piniga qisqa tetik pulsni yuboradi, keyin ECHO pinidan qaytish pulsini o'qiydi.
| HC-SR04 pin | Arduino ulanishi | Funktsiya |
| VCC | 5V | Ultrasonik modul uchun quvvat manbai. |
| TRIG | Raqamli pin 9 | Trigger kiritish. Arduino diapazonni boshlash uchun 10us pulsni qo'llaydi. |
| ECHO | Raqamli pin 10 | Echo chiqishi. Arduino masofani hisoblash uchun puls kengligini o'qiydi. |
| GND | GND | Yerga ulanish. |
HC-SR04 parvoz vaqtini o'lchash orqali ishlaydi. Arduino TRIG piniga kamida 10 mikrosekundlik yuqori darajadagi tetik signalini yuboradi. Keyin modul avtomatik ravishda sakkizta 40 kHz ultratovush impulslarini yuboradi va aks ettirilgan aks-sadoni kutadi.
Aks ettirilgan ultratovush signali aniqlanganda, ECHO pin yuqori darajadagi pulsni chiqaradi. Ushbu impulsning davomiyligi ultratovush to'lqinining aylanma sayohat vaqtidir.
Masofa = Echo yuqori darajadagi vaqt × Ovoz tezligi / 2
Arduino kodida umumiy soddalashtirilgan formula:
Smdagi masofa = davomiyligi × 0,0343 / 2
Vaqtni belgilash jarayoni oddiy: Arduino TRIGni qisqa vaqt ichida past darajada ushlab turadi, 10us yuqori puls yuboradi, so‘ngra TRIGni past darajaga qaytaradi. HC-SR04 ultratovushli portlashni yuboradi va aks ettirilgan signal qaytguncha yoki o'lchash vaqti tugamaguncha ECHO ni yuqori darajada o'rnatadi.
Stabil bo'lmagan ko'rsatkichlarga yo'l qo'ymaslik uchun o'lchovlar orasida qisqa vaqtni qoldiring. Taxminan 60 ms o'lchov tsikli odatda qo'llaniladi, shuning uchun oldingi ultratovush aks-sadosi keyingi tetiklashdan oldin yo'qolishi uchun vaqt topadi.
Arduino pulseIn() funktsiyasi raqamli pin qancha vaqt YUQORI yoki LOW bo'lishini o'lchash uchun ishlatiladi. HC-SR04 uchun Arduino pulseIn(echoPin, HIGH) dan foydalanadi. ECHO pinidan yuqori darajadagi impuls kengligini o'qish uchun
| Sintaksis | Ma'nosi |
| pulseIn(pin, qiymat) | YUQORI yoki PAST pulsning davomiyligini o'qiydi. |
| pulseIn (pin, qiymat, vaqt tugashi) | Vaqt tugashi qiymati bilan pulsni mikrosekundlarda o'qiydi. |
Vaqt tugashidan foydalanish tavsiya etiladi. Agar aks-sado qaytarilmasa, funktsiya kutishni to'xtatib, dasturni juda uzoq vaqt davomida bloklash o'rniga 0 ni qaytarishi mumkin.
Simlarni ulash oddiy. VCC ni 5V ga, GND ni GND ga, TRIG ni Arduino raqamli chiqish piniga va ECHO ni Arduino raqamli kirish piniga ulang. Quyidagi misolda Arduino Uno, 9-pinda TRIG va 10-pinda ECHO ishlatiladi.
Quyidagi odatiy Arduino dasturi 10us tetik pulsini yuboradi, ECHO puls kengligini o'qiydi, masofani santimetrda hisoblab chiqadi va natijani ketma-ket monitorda chop etadi.
const int trigPin = 9; const int echoPin = 10; uzoq muddat; suzish masofasiCm; void setup() { pinMode(trigPin, OUTPUT); pinMode (echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin, HIGH); kechikishMikrosekundlar(10); digitalWrite (trigPin, LOW); davomiyligi = pulseIn (echoPin, HIGH, 30000); if (davomiyligi == 0) { Serial.println('diapazondan tashqarida'); } else { masofaCm = davomiyligi * 0,0343 / 2; Serial.print('Masofa: '); Serial.print(masofa Cm); Serial.println(' sm'); } kechikish (60); }
Agar siz ketma-ket monitorda masofa qiymatlarini ko'rsangiz, HC-SR04 ultratovush sensori va Arduino simlari to'g'ri ishlayapti. Keyin masofa maʼlumotlaridan toʻsiqlarni aniqlash, robot harakatini boshqarish, avtomatik eshiklar, toʻxtash joyi haqida eslatmalar yoki suyuqlik darajasidagi loyihalar uchun foydalanishingiz mumkin.
O'lchangan ob'ektni tavsiya etilgan masofa oralig'ida va 2 sm ko'r zonadan tashqarida saqlang.
Yaxshiroq ultratovushli aks ettirish uchun tekis va mustahkam maqsadli sirtdan foydalaning.
Yumshoq, burchakli, g'ovakli yoki tovushni yutuvchi materiallarni o'lchashdan saqlaning.
Barqaror 5V quvvat manbaidan foydalaning va simlarni qisqa va xavfsiz saqlang.
Hech qanday aks-sado qaytarilmasa, uzoq vaqt blokirovka qilishning oldini olish uchun pulseIn() ga kutish vaqti qo'shing.
Shovqinni kamaytirish uchun bir nechta ko'rsatkichlarni o'rtacha yoki median-filtrlang.
Yuqori aniqlik uchun haroratni kompensatsiya qiling, chunki ovoz tezligi havo harorati bilan o'zgaradi.
| Ilova | HC-SR04 qanday ishlatiladi |
| To'siqlardan qochish roboti | Yaqin atrofdagi narsalarni aniqlaydi va robotga yo'nalishni o'zgartirishga yordam beradi. |
| Avtoturargoh masofasi sensori | Avtomobil va to'siq orasidagi masofani o'lchaydi. |
| Suyuqlik darajasini aniqlash | Sensordan suyuqlik yuzasigacha bo'lgan masofani kontaktsiz o'lchaydi. |
| Aqlli axlat qutisi | Yaqin-atrofdagi qo'l yoki ob'ektni aniqlaydi va qopqoqning avtomatik ochilishini ishga tushiradi. |
Arduino bilan HC-SR04 ultratovush sensoridan foydalanish uchun VCC ni 5V ga, GND ni GND ga, TRIG ni raqamli chiqish piniga va ECHO ni raqamli kirish piniga ulang. 10us tetik pulsni yuboring, pulseIn() yordamida aks-sado davomiyligini o'qing va parvoz vaqti formulasi bilan masofani hisoblang.
HC-SR04 arzon, ishlatish uchun qulay va ko'plab Arduino masofasini o'lchash loyihalari uchun javob beradi. Eng yaxshi natijalarga erishish uchun maqsadli sirtga, o'lchash burchagiga, ko'r zonaga, barqaror quvvatga, kutish vaqti va harorat effektlariga e'tibor bering.
Arduino TRIG piniga 10us puls yuboradi. HC-SR04 sakkizta 40 kHz ultratovush impulslarini chiqaradi va aks ettirilgan ovoz qaytguncha ECHO pinini baland qilib qo'yadi. Arduino bu puls vaqtini o'lchaydi va masofani hisoblaydi.
Formula masofa = davomiylik × tovush tezligi / 2. Santimetrlarda umumiy Arduino formulasi masofaCm = davomiylik × 0,0343 / 2 bo'lib, bu erda davomiylik mikrosekundlarda o'lchanadi.
O'lchangan aks-sado vaqti - sensordan ob'ektga va sensorga qaytib borish vaqti. 2 ga bo'linish sensor va ob'ekt orasidagi bir tomonlama masofani beradi.
Ko'pgina Arduino raqamli pinlaridan foydalanishingiz mumkin. Ko'pgina misollarda TRIG raqamli pin 9 ga ulangan va ECHO raqamli pin 10 ga ulangan. Kod sizning simlaringizda ishlatiladigan pinlarga mos kelishi kerak.
Umumiy sabablar orasida bo'shashgan simlar, beqaror 5V quvvat, noto'g'ri TRIG yoki ECHO pin raqamlari, diapazonda hech qanday ob'ekt yo'qligi, burchakli nishon yuzalar, yumshoq materiallar, bloklangan sensor boshlari yoki pulseIn() funksiyasida vaqt tugamasligi kiradi.
Ko'r zona - modul ishonchli o'lchay olmaydigan minimal masofa. HC-SR04 uchun ko'r zona odatda taxminan 2 sm. Bundan yaqinroq ob'ektlar beqaror ko'rsatkichlarni keltirib chiqarishi mumkin.
Ha, HC-SR04, agar sensor namlikdan himoyalangan va suyuqlik yuzasidan o'rnatilgan bo'lsa, oddiy suv sathining kontaktsiz loyihalari uchun ishlatilishi mumkin. Nam, tashqi yoki sanoat tanklari uchun suv o'tkazmaydigan ultratovush sensori tavsiya etiladi.
Barqaror quvvat manbaidan foydalaning, datchikni nishonga perpendikulyar tuting, yumshoq yoki burchakli yuzalardan saqlaning, pulseIn vaqt tugashini qo'shing, bir nechta o'qishni oling, o'rtacha filtrlashdan foydalaning va o'lchovlar orasida taxminan 60 ms masofani qoldiring.