Все уроки /

Урок №5. Как найти расстояние до объекта

Подходит для: Набор 1 Набор 2

К данным урокам для домашнего изучения можно заказать учебный набор.

Стоимость набора 3 200 руб.

Заказать набор

Для занятия необходима установленная на компьютерах среда программирования miniBloq и драйвера для Arduino.

 

Макетные провода папа-папа

10 

 

Контроллер Arduino UNO

1

Светодиод

3

Беспаечная макетная плата

1

УЗ датчик расстояния

1

Резистор 220 Ом

3

ИК датчик препятствия

1

Макетные провода папа-мама

Для дополнительного задания

Вибромотор

1

 

Транзистор 2N3904

1

Сегодня мы попробуем разобраться, как можно видеть объекты и определять расстояние до них.

Датчик препятствий

Каждый робот, способный ездить, летать или плавать, должен видеть препятствия, находящиеся у него на пути. 

Чтобы робот смог это сделать, ему необходимы соответствующие датчики. В английской литературе такие устройства называют proximity sensor, мы же их будем называть датчиками препятствия.

Мы рассмотрим один из самых распространенных датчиков препятствия, который работает по принципу отражения.

Устроен он очень просто. Датчик содержит направленный источник света и детектор света. Источником часто служит инфракрасный светодиод с линзой, а детектором — фотодиод или фототранзистор. (Рис.1)

Рис.1 Датчик препятствия

 

Светодиод на датчике постоянно включен и излучает узкий пучок света в прямом направлении. Если перед датчиком есть препятствие (Рис.1 А), то на детектор попадает отраженный свет от источника, и на выходе датчика появляется положительный импульс. 

В противном случае, если препятствия нет, то датчик молчит (Рис.1 Б). 

 

Есть и третий вариант, когда препятствие есть, а датчик его не видит. Как вы думаете, как получить такой результат?

Для того, чтобы произошла данная ситуация, необходимо, чтобы свет не отражался от препятствия. (Рис.1 B) Получается, матовую черную поверхность датчик не увидит, так как черный цвет плохо отражает свет.

 

Если же мы будем оценивать и яркость отраженного сигнала, то мы сможем получить грубое понимание расстояния до объекта, ведь чем ближе объект, тем ярче отражение.

В нашей работе мы используем датчик препятствия, оснащенный компаратором, что немного ограничивает его сферу применения. Компаратор преобразовывает аналоговый сигнал (от 0В до 5В) в цифровой (Да или Нет)

 

Давайте, соберем схему которая будет распознавать препятствия и сигнализировать о них. (Рис.2)

Т.к. наш датчик имеет цифровой сигнальный выход, то подключим его к цифровому входу Ардуино. 

Рис. 2. Сигнализатор препятствий

 

Обратите внимание

Как известно, вокруг нас имеется множество источников инфракрасного излучения, включая лампы освещения и солнце. Фоточувствительный элемент датчика регистрирует это фоновое излучение, и может дать ложный сигнал срабатывания. Другими словами, датчик препятствия может сработать, когда никакого препятствия и нет вовсе.

Чтобы решить эту проблему, на датчике имеется возможность настроить чувствительность таким образом, чтобы воспринимать только свет достаточной силы. 

Для настройки порогового напряжения нам понадобится шлицевая отвертка (она же — плоская). В этой процедуре нам также поможет зеленый светодиод состояния, который загорается, когда датчик регистрирует достаточный уровень инфракрасного света.

Алгоритм настройки сводится к трем шагам:

  1. помещаем датчик в условия освещенности, в которых он будет работать;

  2. подключаем датчик к питанию, при этом на нем загорится красный светодиод;

  3. убираем перед датчиком все препятствия и крутим потенциометр до тех пор, пока зеленый светодиод состояния не погаснет.

Для проверки поднесем к датчику ладонь, и на определенном расстоянии загорится зеленый светодиод. Уберем руку — светодиод погаснет. 

Важно. Расстояние, на котором датчик регистрирует препятствие зависит от уровня фоновой засветки, от настройки чувствительности и от правильного расположения фотодиода и светодиода на датчике. Они должны быть расположены строго параллельно  друг другу.

Теперь, когда датчик настроен должным образом, приступим к составлению программы. (Рис.3)

Для примера, будем зажигать и гасить светодиод на пине D13 на Ардуино Уно в зависимости от показаний датчика.

При использовании цифрового датчика программа будет такой же, как и в случае работы с кнопками. 

На каждой итерации вечного цикла мы считываем значение на пине D2, и затем сравниваем это значение с уровнем HIGH. Если значение равно HIGH, значит датчик видит препятствие, и мы зажигаем светодиод, в противном случае — гасим.

Рис.3.  Сигнализатор препятствий


Как думаете где нам может пригодится такое устройство?

Этот датчик широко используется в колесных роботах, например для объезда препятствий и детектирования края стола, по которому он ездит.

Выберите одно из 2х применений и напишите в тетради блок-схему этого робота.

 

Датчик расстояния

Теперь мы разберем работу одного из самых популярных датчиков — ультразвукового (УЗ) дальномера.

Существует много разных модификаций подобных устройств, но все они работают по принципу измерения времени прохождения отраженного звука. То есть датчик отправляет звуковой сигнал в заданном направлении, затем ловит отраженное эхо и вычисляет время полета звука от датчика до препятствия и обратно. (Рис.4)

Рис.4.  Сигнализатор препятствий


Из курса физики мы знаем, что скорость звука в некоторой среде величина постоянная, но зависит от плотности среды. Зная скорость звука в воздухе и время полета звука до цели, мы можем рассчитать пройденное звуком расстояние по формуле:

s = v*t

где v — скорость звука в м/с, а t — время в секундах.  Скорость звука в воздухе, кстати, равна 340,29 м/с.

 

Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. 

Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц. Для этого в датчике имеется пьезокерамический излучатель, который способен генерировать звук такой высокой частоты. 

Во-вторых, излучатель устроен таким образом, что звук распространяется не во все стороны (как это бывает у обычных динамиков), а в узком направлении. На Рис.5 представлена диаграмма направленности типичного УЗ дальномера.

Рис.5 Диаграмма направленности типичного УЗ дальномера

 

Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.

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

 

Так же как и ИК дальномер, УЗ дальномер имеет свои недостатки. И тоже может не определять расстояние до некоторых предметов. Как вы думаете до каких и почему?

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

Есть и второй недостаток. Он связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения относительно частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. 

 

В этом уроке мы будем работать с датчиком HC-SR04 и контроллером Ардуино Уно. Этот популярный дальномер умеет измерять расстояние от 1–2 см до 4–6 метров. При этом, точность измерения составляет 0,5–1 см.

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

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


Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Для того чтобы дальномер работал корректно с нашей средой разработки, подключим:

Trig к D15

Echo к D16

А в программе будем выбирать 15-й пин.

 

Давайте считаем показания дальномера и выведем их в терминал. (Рис. 6)

Рис.6 Обработка показаний дальномера


Если у вас все заработало, предлагаю вам поэкспериментировать с разными препятствиями.

Измените программу, чтобы при нахождении препятствия ближе 15 см, загорался светодиод на пине D13. (Рис.7)

Рис.7


Теперь предлагаю вам собрать устройство со светодиодным индикатором. 

Задача звучит так:

Если расстояние до объекта больше метра, то не горит ни одного светодиода.

Если расстояние от 70 см до 100 см, то горит 1 светодиод.

Если расстояние от 40 см до 70, то горит 2 светодиода.

Если расстояние меньше 40 см, то горит 3 светодиода.

 

Дополнительное упражнение

Ультразвуковая трость. 

Напишите программу, которая будет «вибрировать» вибромотором с различной частотой, в зависимости от измеренного расстояния.

Например, если расстояние до препятствия более трех метров — вибромотор вибрирует раз в пол секунды.

При расстоянии 1 метр — раз в 100 мс.

Менее 10 см — вибрирует постоянно.

 

 

Мы с вами большие молодцы, продолжайте в том же духе!

 

 

Контакты наших кружков робототехники


Робототехника в Долгопрудном

г. Долгопрудный
пр. Ракетостроителей д3к1
1-й подъезд

+7 (495) 66-99-701

edu@dollab.ru

Робототехника в Лобне

Временно закрыто

г. Лобня
Ул. Крупской, 24
ТЦ Олимп. 3-й этаж, каб. №24

+7 (495) 66-99-701

edu@dollab.ru



ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ БОЛАШЕВ ВЛАДИСЛАВ ВЛАДИМИРОВИЧ
141800, РОССИЯ, ОБЛ МОСКОВСКАЯ, Р-Н ДМИТРОВСКИЙ, Г ДМИТРОВ, УЛ ПАРКОВАЯ, 27
ИНН 500711091721
ОГРН 311500701300014