Эксперименты с УЗ дальномером. Проект выходного дня.



Решил провести несколько экспериментов с ультразвуковым дальномером DYP-MY007.

Этот (и подобные) дальномеры очень распространены, торгуют ими все кому не лень. Обычно их позиционируют как «шилд» для Arduino. Я покупал здесь.



Характеристики устройства:


Напряжение питания: 5В
Потребляемый ток: до 15 мА
Диапазон измеряемых расстояний: 2 – 500 см
Угол обзора: 15 градусов.

Интерфейс


Интерфейс устройства предельно прост. Все управление происходит через 2 пина – «Trigger» и «Echo».

Для начала измерения, нужно подать на вход «Trigger» сигнал высокого уровня (мин. длительность 10 мкс). После этого дальномер излучает пачку УЗ импульсов и ловит отраженный сигнал. Дальномер формирует на выходе «Echo» импульс высокого уровня, причем длительность этого импульса пропорциональна измеренному расстоянию.

Если быть точным то:

Расстояние = «длительность импульса» * «скорость звука» / 2


Все просто, нам достаточно запустить измерение (подав имульс высокого уровня на «Trigger») и замерить длительность импульса высокого уровня на выводе «Echo».



Есть пара нюансов: после запуска измерения, импульс на выводе «Echo» может не появится вообще, либо данный вывод переходит в высокий вровень и не возвращается обратно до начала следящего измерения. Это происходит в тех случаях, когда приемник УЗ дальномера не получил отраженного УЗ импульса. В принципе, это все не критично и запросто решается программно.

Особо останавливаться на программе управления не вижу смысла, все предельно просто. К посту прикреплен пример программы для STM32F100 (запускающий импульс формируется на PWM1 таймера TIM2 (нога PA0 ), импульс «Echo» ловится как внешнее прерывание на ноге PB7).

По результатам первых тестов могу резюмировать следующее:
— чувствительность устройства на расстоянии до 2 метров сотавляет порядка 1 см.
— дальномер уверенно работает на расстоянии до 3 – 3,5 метров, дальше отраженный сигнал начинает теряться. Добиться заявленных 5 метров в реальных условиях тяжело.

ИМХО, дальномер достаточно неплох, как за свои деньги (порядка $8).

Но это все не интересно, я хотел попробовать использовать данный девайс для сканирования пространства и обнаружения препятствий. Для этого дальномер был установлен на серву, которая обеспечивает «горизонтальную развертку».

Получилось как-то так.



Сей девайс сканирует сектор (чуть больше 90 градусов), результаты измерений передаются на ПК, где программа визуализирует «картинку».

Теперь результаты экспериментов.

1. Отсутствие препятствий



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

2. «Препятствие»



Видно, чнто на расстоянии около 50 см дальномер четко «видит» препятствие («провал» в середине сектора).

3. «Много препятствий»



Опять же, дальномер неплохо справился, на визуализации четко видны 2 провала, которые соответствуют двум «препятствиям».

А теперь о плохом. Устанавливаем препятствие на расстоянии около метра от датчика.



Получается фигня, наше препятствие (небольшой цилиндр, сантиметра 2 в диаметре) заслонил собой стену и перекрыл «обзор» в секторе около 40 градусов.

Другие эксперименты подтверждают результаты предыдущих: на расстоянии до 60 см дальномер различит «препятствия» и «свободные промежутки», начиная с метра – все сливается.

Мораль: как измеритель расстояний девайс вполне годный, но для «сканирования пространства» (например, для навигации робота) не годится, нужно искать что-то с меньшим углом рассеивания луча/углом чувствительности приемника.
  • +7
  • 15 сентября 2012, 17:09
  • e_mc2
  • 1
Файлы в топике: DYP-ME007.ZIP

Комментарии (37)

RSS свернуть / развернуть
лазер нужен тут, америкосы это давно прочухали
0
Ну, тут и без опыта америкосов понятно, что лазерный дальномер справится с подобной задачей намного лучше. Вот только стоит лазерный дальномер на порядок больше (как минимум на порядок).
0
Лазер плохо работает на малых расстояниях.
А, например, для локатора — дальномера мобильного робота желателен диапазон сантиметров от 20 до 10-20 метров.

Причем ближняя зона — важнее дальней. К дальней пока еще доедешь… И 5 метров иногда достаточно.
Иначе возникает «мертвая зона» между датчиками столкновения и УЗ локатором.
0
  • avatar
  • SWG
  • 18 сентября 2012, 10:11
Кинект, однако ж, вполне успешно лазером в ближней зоне действует. Хотя там совершенно другой принцип, больше похожий на шарповские дальномеры.
0
  • avatar
  • Vga
  • 18 сентября 2012, 10:43
Глядите какой дальномер на робофоруме сделали: roboforum.ru/forum10/topic12095.html
0
Тут нужно учитывать простейший алгоритм обработки сигнала в дальномере. В готовом виде его использовать нельзя — он не расчитан на это. Но если изменить обработку получаемого сигнала, сделав свою схему приёмника, то результат может быть гораздо лучше. И это вполне интересная задача.

IMHO.
0
Обработка «сырого» сигнала с приемника действительно интересная задача. Что касается данного эксперимента, то это делалось just for fun, без какой-либо определенной цели. Я изначально понимал, что добиться хорошего результата не получится.
0
а попробовать прикрутить в фокус отражателя? (по типу спутниковой тарелки) или это не вариант? =)
0
На eBay недавно такой же прикупил за 2,15$. Называется он там Ultrasonic Sensor Distance.
0
  • avatar
  • Gidof
  • 16 сентября 2012, 14:01
Ссылочку бы еще привел.
0
  • avatar
  • Vga
  • 16 сентября 2012, 14:34
Воть.
Вот ещё ссылочки на дешовые игрушки: Датчик движения,Ethernet модуль, Сервопривод с железными шестернями, Рэлюшки с оптопарами. Вообще там много всякого за копейки найти можно.
0
аналогично. недавно таких две штуки купил по 2.16 каждая на ебеях. Жду когда приедут.
0
Вот тут неплохо сделан, робот-пылесос с применение лазерного сканирующего дальномера: Neato XV-11.
0
на счет точности обнаружения препятствий: попробуйте наложить данные измерений из двух точек. Есть подозрение, избирательность при небольших препятствиях сильно лучше будет, больше чем в два раза.
0
Я так понимаю, вы предлагаете что-то типа «бинокулярного зрения» (использовать 2 дальномера, расположенных на небольшом расстоянии друг от друга)?

Не думаю, что что-то получится. Проблема в том, что 2-х сантиметровый цилиндр на расстоянии метра «затеняет» угол в 40 градусов. Если поставить несколько таких цилиндров вряд с интервалом в 20 — 30 см то дальномер видит это как сплошную стену, как ты его не смещай.

ИХМО, здесь две проблемы: «ширина луча» дальномера, и особенности внутреннего софта (как правильно заметил dipspb ).
0
Да, что-то типа бинокуляра. Понятно, что сильного много не выжмешь, но при прочих равных, да если базу взять по-шире, могут быть интересные результаты.
0
Я в магистрской своей нахлебался горя с этими дальномерами… Написано, что минимум 10 мкс импульс и частота опроса грубо говоря сразу после респонса. То есть, даже если 38 мкс обратный импульс при отсутсвии препятствия — можно его дрочить теми же сигналами, что и сервомашинки. Пытался его опрашивать импульсами 1.5 мкс с частотой 50 Гц — фиг. Нормальные результаты получились только при частоте опроса около 2 Гц. Хотя на 1.5 мкс импульс на входе он не ругался. ):
0
Нормальные результаты получились только при частоте опроса около 2 Гц.
Странно. У меня устойчиво работает с периодом опроса 65 мс (~15Гц) Возможно, можно еще поднять частоту опроса (не тестировал).
0
Может кому-нибудь пригодится, они же за 3$
e_mc2, а можешь пояснить подробнее результаты последнего замера? Ведь по логике картина должна быть похожей на предыдущую, только вырез должен начинаться дальше от центра. Заранее спасибо.
0
  • avatar
  • DoT
  • 17 сентября 2012, 18:26
Он и начинается дальше от центра, но попутно расширяется. Связано это с тем, что дальномер меряет расстояние до ближайшего объекта, попавшего в луч, а луч довольно широкий.
Хотя немного странновато, выглядит так, как будто чем дальше от дальномера — тем больше угловой размер луча…
0
  • avatar
  • Vga
  • 17 сентября 2012, 18:41
Совершенно вено. Дальномер возвращает расстояние до ближайшего объекта, который попал у область видимости. Угол расширения луча 16 градусов, соответственно на расстоянии 50 см ширина луча будет 13 см, на расстоянии 1 метр – 27,5 см. Во втором случае, дальномер «видит» препятствие как сплошную стену шириной 27,5 * 2 см.
0
стену шириной 27,5 * 2 см.
Упс, что-то я перемудрил, просто 27,5 см. В вот почему так искажаются угловые размеры — честно говоря даже не знаю.
0
Вообще-то, он видит препятствие как двойную ширину луча плюс ширина препятствия минус две ширины самого малого обнаруживаемого объекта на данном расстоянии.
0
  • avatar
  • Vga
  • 17 сентября 2012, 20:05
Я вот тоже сначала подумал про двойную ширину луча. Но потом прикинул мысленный эксперимент: луч с углом 16 градусов сканирует пространство. В определенный момент объект попадает в зону видимости луча( например, слева) – началось обнаружение объекта. Луч поворачивается на угол 16 градусов + угловая ширина объекта и объект покидает зону видимости луча (теперь объект справа от луча). Так что, по идее, одинарная ширина луча.

Или я где-то туплю?
0
Луч поворачивается на свою ширину, да. Но при этом он накрывает расстояние от левого своего края в левом положении до превого в правом. Поэтому набирается вторая ширина луча.
0
  • avatar
  • Vga
  • 17 сентября 2012, 20:41
Я говорю в контексте сканирования, например, слева направо. Сканер засечет объект, когда левая кромка луча попадет на объект. Отсюда начинаем замерять угол. Далее, луч поворачивается на 16 градусов + угловая ширина объекта, и объект теряется на сканере.

А вот если сканировать с середины, в две стороны, то да, двойная ширина (слева и справа от объекта).
0


Сканируем объект слева на право.

На левом рисунке сканер еще не видит объект, на правом – уже не видит. Между этими состояниями, дальномер повернулся на угол, равный углу луча полюс угловая ширина объекта.
З.Ы. Рисунок раскрывает тему сисек :)
0
При таком оформлении излучателя и приемника ультразвука я бы даже на 15 градусов не надеялся.
Корпуса их практически не содержат каких — либо ограничивающих и фокусирующих элементов. От точечного излучателя — волна почти сферическая. Частично тут ограничена корпусом, и конус, закрепленный на пьезоэлементе — немного помогает. Но этого — мало.

Самое простое и достаточно эффективное решение — конус (рупор). Хотя бы на излучателе. А еще лучше — и на приемнике.

Например, у дальномера, использованного в моем роботе (с одной пьезоголовкой), паспортное значение дается — пятно видимости 3 фута (~90см) на расстоянии 15м.
Для прикидок я считаю, что примерно 1/15 расстояния. Это на расстоянии, например, 5м получится сантиметров 30, 1м — сантиметров 6. Удлинив конус — получится еще лучше. Но пока — хватает.

Для круга с радиусом 1м (окружность ~6,28м) — получается порядка 1 % углового разрешения, или около 3,5 градуса.
Если я сдвину свой дальномер от переднего края башни к заднему, я смогу увеличить длину рупора в 2-2,5 раза, что еще больше сузит угол. Так что запас есть. Но для отработки алгоритмов локации пока и этого хватает. Да и угол поворота башни пока у меня не так точно отслеживается (еще не поставил дополнительный датчик на привод поворота башни для более точного отслеживания угла).

Что касается ширины обьекта — у меня уверенно ловится карандаш, подвешенный вертикально на нитке или стоящий на полу, от ближней границы (паспортное было 50см, сейчас у меня порядка 30 см — меньше при одной головке сделать сложно из за «звона» после импульса), до 2-3м (дальше просто не проверял). Причем, на фоне стены за ним на расстоянии около 3м.
0
  • avatar
  • SWG
  • 18 сентября 2012, 10:42
Еще линзу френеля добавить…
0
Еще линзу френеля добавить…
Это если фокусировать на определенном расстоянии. Тут же фокусировка не нужна, а угол и рупор хорошо ограничивает.
Когда — то (в 70х годах) я баловался с остронаправленными микрофонами с высокой чувствительностью. Наиболее удобные и сравнительно небольшие по габаритам получались с частично заглушенной (для подавления резонансов) трубой. Хоть чувствительность получалась и меньше, чем с большим параболлическим отражателем, зато более компактно, и меньше шумов.
0
  • avatar
  • SWG
  • 19 сентября 2012, 00:28
Отраженный импульс выделятся простым детектором или там АЦП? Если простой детектор с диодом то он и шумы детектирует. Надо более сложную обработку далать. Если работа по переднему фронту огибающей, то крутизна его с ростом расстояния падает, это следует учитывать для точных измерений на большой дальности. Если предмет впереди маленький, то отражение от него можно учесть и на следующем иппульсе уже ожидать отражения с большей дальности (пропустить первый отраженный импульс), но это если они по дальности достаточно разнесены и звон датчика небольшой.
0
Отраженный импульс выделятся простым детектором или там АЦП?

Подозреваю, что АЦП + мат. обработка сигнала на МК. Это, исходя из всех моих экспериментов (исходя из того, что я видел на выходе). Снять схему датчика проблематично (она не так проста и все корпуса микросхем без маркировки).
0
Да нифига, там простой компаратор обычно.
В простых устройствах подобного типа — контроллер простейший (например, PIC12C508), да до 4 операционников в одном корпусе, LM324 или LM2904.
Да и время преобразования АЦП и обработки его результатов снизит точность определения расстояния.

Сейчас также есть много УЗ дальномеров с одной головкой. У них параметры обычно получше, и диаграмма поострей. И они обычно выдают уже сразу расстояние.
0
Да нифига, там простой компаратор обычно.

Наверное Вы правы, с АЦП я действительно перебощил. Просто я заметил, что сигнал внутри датчика обрабатывается каким-то «адаптивным» алгоритмом. По крайней мере, мне так показалось.

Первое измерение дает очень низкую точность, а в последующих точность резко возрастает. Направляем дальномер в какую либо точку – первое измерение показывает расстояние с точностью 50 см, следующее 10 см, следующие – 3 см. (цифры я взял из головы, но они приблизительно соответствуют реальному поведению). Направляем на другую точку (расстояние до которой существенно отличается)– картина повторяется.

Получается, что при скачкообразном изменении расстояния датчику нужно несколько циклов измерения для того, чтобы выйти на точность в 2-3 см. Если расстояние изменяется плавно – все ок, датчик отслеживает это изменения без потери точности.

Я не знаю, как объяснить такое поведение, кроме как наличие «адаптивного» алгоритма обработки сигнала внутри датчика.
0
Скользящее среднее(равновесный КИХ) или экспоненциальное сглаживание(однозвенный БИХ) скорее всего.
0
А я их брал 7 штук на 100 грн (20 доларов) с боставками и т.д.

4 вывода… питание тригер и выход

брал для измерения уровня воды в бочке

работает… а по расстояниям… ну надо учитывать то что звук отражается от стен если под острым углом… и угол у моих дальномеров ну как минимум градусов 10-12… не менее… и дело в том что измеряемый обьект должен хоть 50% этого угла закрывать иначе — ппц… в домашних условиях с толстыми виниловыми обоями максимум это 3...3.5 метра…

а вот разрешение у моего получше будет… я мог поймать +- 2,5 миллиметра на меге8й с 8 мегагерцами тактовой… конечно это после усреднения в 100 замеров…

Ещё стоит сказать о макс частоте…
я добился максимум 40 герц обновления… время это сильно зависит от расстояния… чем оно больше тем дольше после клацания тригером не приходит импульс выходной :)

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

ещё когда работает этот прибор кошки и сабаки сходят с ума… они явно слышат этот ультразвук и пребывают в тихом шоке
0
Можно попробовать поставить эксперимент с плоскими мишениями, а круглые как у Вас рассеивают во все стороны. В дефектоскопии для обнаружения сферических отражателей и не только, работают с амплитудой принятого эха ( компаратор настраивают). Вообще то результат объясним, ну и для обнаружения любого дефекта среды, подбирают свою схему озвучки. Нет универсального решения, акустика.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.