Датчик HCSR-04, как улучшить диаграмму направленности?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

Какое решение лучше?

а) заужать диаграмму излучателя, например одевая на него что-ти типа "сопла Лаваля". Насколько ухудшится ситуация в "ближней зоне"? Датчик имеет разнос излучателя и приемника в пару сантиметров, что в зоне до 10см уже начнет сказываться и чем уже излучатель - тем сильней.

б) усложинять "приемное ухо" обрезая боковые лепестки жестче; Как правильно заузить диаграмму, не снижая чувствительности по главному направлению?

в) отказаться от датчика и перейти на другие. Какие? Требования:

1. Надежное определение дальности до препятствия "самокатных тележек" в пределах 20-25 .. 1500..2000 мм с надежным определением (можно через серву с поворотом датчика) направления и размеров препятствия с точностью до 2-5 градусов по направлению и от 20мм по ширине препятствия.

2. Стоимость: "чем дешевше - тем лучше" :)

Из своего опыта: насадки на приемник в виде простых трубок заужают диаграмму направленности примерно до 10 градусов (+-5) на расстоянии 300мм, но нелинейно: чем ближе к датчику - тем шире диаграмма. Надо ужее.

... ну и есть ужо два таких ... :(

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

?!? я что-то "сложное спросил"? :)

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

?!? я что-то "сложное спросил"? :)

Да вопрос естественен и понятен, а вот ответ на него... Для фокусировки звуковых волн нужна конструкция соизмеримая с длиной волны. Остронаправленные микрофоны имеют тарелку в десятки сантиметров, всякие звуковые ФАРы - того больше.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

То есть направление "а" - тупиковое. Пасибки. Буду думать в сторону "Б".

MagicianT
Offline
Зарегистрирован: 03.10.2015

вариант 3, цифровая обработка сигнала.

Тогда интересующий сектор обзора “вырезается“ цифровым способом
 
Из других методов - оптический конечно
 
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вариант "А" на самом деле вовсе не тупиковый. Частота узв. датчика около 40кГц., это примерно 25мксек и соответственно "длина волны" в районе 8мм. Датчик имеет диаметр 16мм (наружный) и приборчики угулублены внутрь на ок. 4мм. с примерно параболической формой излучателя/приемников с примерно тем же диаметром в 8мм.

Вчера опробовал насадки на излучатель в виде резонансной емкости глубиной 16мм и выходной "дыркой" а-ля идеи Теслы с дымными кольцами. Что-то в этом есть явно, но пока обнаружил эффекты: незначительное сужение диаграммы направленности излучателя .. и странный "звон" с эффективным расстоянием в 67,77мм. Причем именно с этими двумя значениями, непонятно как выбираемых.

Ну и отдельно с приемником поигрался. Забавно, что резонатор от излучателя приводит к постоянной задержке в приемнике на 15мм независимо от дальности сигнала - появляются "лишние" 15.5мм. В итоге получил относительно устойчивую диаграмму направленности с углом около +-4 градуса. Но, в любом случае при стандартном излучателе, гладкие пластмассовые поверхности вполне могут отражать сигнал "сбоку и прямо в приемник", отделить препятствие на оси от отражателя сбоку без зауживания диаграммы излучателя - никак. Не помогает установка никаких "диафрагм" или чего ещё.

Кстати про "стелс": пластмассовый кубик из Лего, поставленный к оси под 45% - практически незаметен даже на расстояниях в районе 20см. А это именно тот режим, который мне нужен: обнаружение "препятствий" из таких поворачивающихся кубиков (робот-противник). :(

Ну и ещё, про стелс: наш кот обнаруживается датчиком с расстояний 0.3-0.5м "через раз,два", а с 0.8м полностью "исчезает с экрана радара". :)

Пошел искать третий вариант. Похоже это "не тот датчик", что нам нужен.

P.S.

Насчет "цифровой фильтрации". Думал уже. Мне как раз и требуется в результате построить модель пространства "вокруг" датчика, вращая его сервой на +- 90 грд. Шаг серводвигателя 2-3 градуса. Мне пока не очень понятен алгоритм "цифровой фильтрации" в таких условиях.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

Ну и отдельно с приемником поигрался. Забавно, что ...

Некоторые норовят поставить Дуню к плите или даже к станку. А это создание - для игры! Тут с ней можно такие штуки выделывать и получать истинное удовольствие. :)) И это хорошо. Честно. Да я и сам...

То, чем Вы сейчас занимаетесь, исследует отдельная "поднаука" - "волновая физика". Я смотрел, как этим занимаются специально обученные люди в разных диапазонах электромагнитных и звуковых волн. По-хорошему, это ОЧЕНЬ СЛОЖНАЯ задача, требующая численного расчета волновой картинки в нелинейной среде распространения. Там где нужен практический результат встают (или влезают) в очередь на суперкомпьютеры. Обычные не пляшут. Наблюдая, как работают другие, я держал руки за спиной, чтобы на основании случайного прикосновения к чужой клавиатуре меня не сделали ответственным за конечный результат. Там очень сложно. :))

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, я немножко в курсе. Оптик по образованию. Точнее оптик-расчетчик, ну и программист как необходимость первого. :)

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

Мне непонятно откуда берется звон на расстоянии 77мм или 67мм с насадкой на излучатель ... цифирьки вылазят с завидной стабильностью вместо расстояния.

Ну и ещё следствие: если поставить 2 датчика и запускать их одновременно с измерением длительности через прерывания, то можно будет улучшить результат, ибо прерывание измерит отклик независимо от программы и практически "одновременно", а излучение вторым датчиком импульса уже ни на что не повлияет, поскольку принимается только первое отражение...

может этим путем пойти?

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

может этим путем пойти?

Не знаю. Умничать не хочу. Я с этим девайсом поигрался немного. Вначале был слегка огорчен низкой стабильностью и точностью показаний. Хотелось чего-то типа лазерной рулетки, только ультразвуковой. Но когда стал разбираться более подробно понял, что "все в соответствии" и ждать особо нечего.

Можно играться несколькими разнонаправленными датчиками с учетом диаграмм направленности. Если аккустическая картинка контрастная, без неприятного заднего плана, может и можно что-то вытянуть. Но в любом случае путь "потный".

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

?!? У меня измеряет стабильно, с точностью до миллиметра. Поверял по железной линейке - измерение идет строго от сеточки излучателя, как и положено для такой длины волны. Сеточка играет роль излучателя, поскольку частая по отношению к длине волны. Причем даже то, что промеж датчика и приемником 2 см - именно они и есть "наименьшее измеряемое расстояние". А вы как переводите микросекунды в сантиметры, делением на 59?

Сделайте вот так:

uint16_t getDistance( uint32_t microtime)
{
    return (uint16_t)( (microtime*343)>>11);
}

Будет и быстрей и меньше и точнее. На 5 метрах ошибка 0.21мм. :) Я такую себе в библиотеку зафигачил. Там же и "измерение длительностей" по прерываниям PCINT2 .. на любой из 8-и доступных ног Меги.

В этом смысле, запуск двух таймеров - тривиален: запускаем их на замер и ждем результат по завершению замера по прерываниям. Там, сам датчик делает задержку до начала измерений сопоставимую с 3-я вызовами Serial.print() .. так что "проблем с одновременностью" - нет. :)

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Я брал совсем простой готовый скетч с примером, по-моему да, перевод был делением на 59. Под рукой нет, посмотреть точно негде. За подсказку спасибо, как "воскреснет" задача для дальномера, так попробую.