Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

Далекомір - це пристрій для вимірювання відстані до деякого предмета. Далекомір допомагає роботам в різних ситуаціях. Простий колісний робот може використовувати цей прилад для виявлення перешкод. Літаючий дрон використовує далекомір для баражірованія над землею на заданій висоті. За допомогою далекоміра можна навіть побудувати карту приміщення, застосувавши спеціальний алгоритм SLAM.

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

1. Принцип дії

На цей раз ми розберемо роботу одного з найпопулярніших датчиків - ультразвукового (УЗ) далекоміра. Існує багато різних модифікацій подібних пристроїв, але всі вони працюють за принципом вимірювання часу проходження відбитого звуку. Тобто датчик відправляє звуковий сигнал в заданому напрямку, потім ловить відбите відлуння і обчислює час польоту звуку від датчика до перешкоди і назад.

Зі шкільного курсу фізики ми знаємо, що швидкість звуку в деякому середовищі величина постійна, але залежить від щільності середовища. Знаючи швидкість звуку в повітрі і час польоту звуку до мети, ми можемо розрахувати пройдене звуком відстань за формулою:

де v - швидкість звуку в м / с, а t - час в секундах. Швидкість звуку в повітрі, до речі, дорівнює 340.29 м / с.

Щоб впоратися зі своїм завданням, далекомір має дві важливі конструктивні особливості. По-перше, щоб звук добре відбивався від перешкод, датчик випускає ультразвук з частотою 40 кГц. Для цього в датчику є п'єзокерамічних випромінювач, який здатний генерувати звук такої високої частоти. По-друге, випромінювач влаштований таким чином, що звук поширюється не на всі боки (як це буває у звичайних динаміків), а у вузькому напрямку. На малюнку представлена ​​діаграма спрямованості типового УЗ далекоміра.

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

Як видно з діаграми, кут огляду самого простого УЗ далекоміра становить приблизно 50-60 градусів. Для типового варіанту використання, коли датчик детектирует перешкоди перед собою, такий кут огляду цілком придатний. Ультразвук зможе виявити навіть ніжку стільця, тоді як лазерний далекомір, наприклад, може її не помітити.

Якщо ж ми вирішимо сканувати навколишній простір, обертаючи далекомір по колу як радар, УЗ далекомір дасть нам дуже неточну і гучну картину. Для таких цілей краще використовувати саме лазерний далекомір.

Також слід зазначити два серйозні недоліки УЗ далекоміра. Перший полягає в тому, що поверхні мають пористу структуру добре поглинають ультразвук, і датчик не може виміряти відстань до них. Наприклад, якщо ми задумали виміряти відстань від Мультикоптер до поверхні поля з високою травою, то швидше за все отримаємо дуже нечіткі дані. Такі ж проблеми нас чекають при вимірюванні дистанції до стіни покритої поролоном.

Другий недолік пов'язаний зі швидкістю звукової хвилі. Ця швидкість недостатньо висока, щоб зробити процес вимірювання більш частим. Припустимо, перед роботом є перешкода на видаленні 4 метри. Щоб звук злітав туди і назад, буде потрібно цілих 24 мс. Слід 7 разів відміряти, перш ніж ставити УЗ далекомір на літаючих роботів.

2. Ультразвуковий далекомір HC-SR04

У цьому уроці ми будемо працювати з датчиком HC-SR04 і контролером Ардуіно Уно. Цей популярний далекомір вміє вимірювати відстань від 1-2 см до 4-6 метрів. При цьому, точність вимірювання становить 0.5 - 1 см.

Зустрічаються різні версії одного і того ж HC-SR04. Одні працюють краще, інші гірше. Відрізнити їх можна по малюнку плати на зворотному боці. Версія, яка працює добре виглядає так:

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки
Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

А ось версія, яка може давати збої:

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки
Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

3. Підключення HC-SR04

Датчик HC-SR04 має чотири висновки. Крім землі (Gnd) і харчування (Vcc) ще є Trig і Echo. Обидва цих виведення цифрові, так що підключаємо з до будь-яких висновків Ардуіно Уно:

Принципова схема пристрою

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

Зовнішній вигляд макета

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

4. Програма

Отже, спробуємо наказати датчику відправити зондує ультразвуковий імпульс, а потім зафіксуємо його повернення. Подивимося як виглядає тимчасова діаграма роботи HC-SR04.

Ардуіно ультразвукової далекомір hc-sr04, клас робототехніки

На діаграмі видно, що для початку вимірювання нам необхідно згенерувати на виведення Trig позитивний імпульс довжиною 10 мкс. Слідом за цим, датчик випустить серію з 8 імпульсів і підніме рівень на виводі Echo. перейшовши при цьому в режим очікування відбитого сигналу. Як тільки далекомір відчує, що звук повернувся, він завершить позитивний імпульс на Echo.

Виходить, що нам потрібно зробити всього дві речі: створити імпульс на Trig для початку вимірювання, і заміряти довжину імпульсу на Echo, щоб потім обчислити дистанцію за нехитрою формулою. Робимо.

Функція pulseIn заміряє довжину позитивного імпульсу на нозі echoPin в мікросекундах. У програмі ми записуємо час польоту звуку в змінну duration. Як ми вже з'ясували раніше, нам буде потрібно помножити час на швидкість звуку:

s = duration * v = duration * 340 м / с

Переводимо швидкість звуку з м / с в см / мкс:

s = duration * 0.034 м / мкс

Для зручності перетворимо десяткову дріб в звичайну:

s = duration * 1/29 = duration / 29

А тепер згадаємо, що звук пройшов два шуканих відстані: до мети і назад. Поділимо все на 2:

s = duration / 58

Тепер ми знаємо звідки взялося число 58 в програмі!

Завантажуємо програму на Ардуіно Уно і відкриваємо монітор послідовного порту. Спробуємо тепер наводити датчик на різні предмети і дивитися в моніторі розраховане відстань.

Тепер, коли ми вміємо обчислювати відстань за допомогою далекоміра, зробимо кілька корисних пристроїв.

  1. Будівельний далекомір. Програма кожні 100 мс вимірює відстань за допомогою далекоміра і виводить результат на символьний ЖК дисплей. Для зручності отримане пристрій можна помістити в невеликий корпус і живити від батарейок.
  2. Ультразвукова тростину. Напишемо програму, яка буде «пищати» зумером з різною частотою, залежно від виміряного відстані. Наприклад, якщо відстань до перешкоди більше трьох метрів - зумер видає звук раз на пів секунди. При відстані 1 метр - раз в 100 мс. Менше 10см - пищить постійно.

висновок

Ультразвуковий далекомір - простий у використанні, дешевий і точний датчик, який відмінно виконує свою функцію на тисячах роботів. Як ми з'ясували з уроку, у датчика є недоліки, які слід враховувати при будівництві робота. Хорошим рішенням може стати спільне використання ультразвукового далекоміра в парі з лазерним. У такому випадку, вони будуть нівелювати недоліки один одного.

Схожі статті