Ультразвуковой датчик расстояния JSN-SR04T с водозащитой (IP66)


Здравствуйте! Это небольшой обзор написан о редком водозащищённом датчике расстояния JSN-SR04T, аналога более известного HC-SR04. Здесь мы рассмотрим его плюсы и минусы.
Для тех кому интересно — прошу…

В нашей великой стране, есть такая категория людей с «золотыми руками», которые очень часто не знают, куда эти ручки пристроить. И от этой жизненной неопределённости, испытывая муки противоположностей «быть или не быть», «брать или небрать», часто имеют результат, о котором можно сказать только следующее «А вот оно надо было?». Но опыт, как мы знаем, тоже вещь полезная и не всегда бесплатная.
И так — герой обзора водозащищённый датчик расстояния JSN-SR04T, аналог более известного HC-SR04, применим как в Arduino, так и в остальных самоделках. Имеет питание 5В, и 2 управляющих контакта Trigger и Echo, подав на Trigger высокий уровень, на Echo мы получаем время, за которое ультразвуковая посылка (отправленная излучателем), отразившись от препятствия возвращается обратно в приёмник, откуда мы можем посчитать расстояния до препятствия. В датчике HC-SR04 излучатель и приёмник разнесены, в нашем случае используется универсальный датчик, применяемый в автомобильных парктрониках.





Краткие ТТХ:

Рабочее напряжение: DC 5 В
Ток: 30mA
Акустическая частота излучения: 40 кГц
Дальнее расстояние: 5 м
Слепая зона: 25 см
Размер модуля: 41 мм * 28.5 мм /1.61 * 1.12"
Разрешение: около 0.5 см
Угол обзора: менее чем 50 градусов
Рабочая температура:-10 до 70 по Цельсию

Итак — казалось бы на лицо все необходимые прелести: и разнесённость датчика и платы управления, и водозащита, компактные размеры, универсальный датчик.
Но есть одно маленькое «но». Приступим к разбору полётов.

Данный датчик использует стандартную библиотеку Arduino Ultrasonic.h, хотя, можно обойотись и без неё и наглядно проверить работу датчика. Ещё раз о принципе работы:

1. вы отправляете триггер-импульс 10 мкс или больше на линию Trig.
2. вскоре после запуска, Echo примет состояние Hight до тех пор, пока вернётся отражённый сигнал (или произойдет time out). Т.е. Echo примет состояние Hight на то время, которое потратит звук, чтобы достичь объекта и вернуться обратно.


digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin,HIGH);

Считаем расстояние в см.
long distacne_cm = duration/29/2;

Запускаем, начинаем проверять… и опа. Если в случае с датчиком HC-SR04 всё получается красиво, мы плавно наблюдаем падение и взлёт СМ, то в случае с JSN-SR04T, всё немного хуже.
После изменения расстояния до препятствия 20 см и менее, датчик начинает показывать какой-то мусор: 19, 35, 46, 25… итд. Т.е. если ваше устройство ориентируясь на данный датчик едет вперёд до препятствия видит, что оно начинает удаляться и соответственно не сможет вовремя остановится. Собственно оно вообще не остановится.
Если закрыть излучатель предметом (т.е. расстояние до объекта 0), то данные тоже имеют хаотический разброс от 20 до 180 см. Что делать с этим мусором — непонятно.
Имея эффективный угол в 50 градусов, как можно достичь заявленной дистанции обнаружения 5м? Тоже непонятно.
На расстоянии больее 150 см, показания меняются в пределах пары сантиметров, т.е. тоже нельзя говорить о заявленной точности 0.5 см.
И ещё один важный момент: т.к. устройство использует высокую частоту, то возможно его следует поместить в экран для защиты от возможных помех. Экспериментально замеченно, что касание платы приводит к ошибкам в измерениях.

Подводя итоги можно сказать, что датчик не может чётко указать имеет ли он отражённый сигнал или нет, т.е. при минимальном и максимальном расстоянии есть большая вероятность получить с датчика мусор Я понимаю, что производитель указал слепую зону 25 см, но как понять, где находится обьект: в слепой зоне или в недосягаемости?

Имея все эти минусы, использование данного датчика в практических целях тоже затрудняется.
Вот в такие моменты и начинаешь думать «А стоило ли оно того ...»

PS изделиезаказаннозасвоиденьги, дошлобезтреказамесяцвмятомпакетике.
Планирую купить +21 Добавить в избранное +20 +43
+
avatar
  • AndyBig
  • 09 октября 2015, 02:41
+2
После изменения расстояния до препятствия 20 см и менее, датчик начинает показывать какой-то мусор: 19, 35, 46, 25… итд.… Если закрыть излучатель предметом (т.е. расстояние до объекта 0), то данные тоже имеют хаотический разброс от 20 до 180 см. Что делать с этим мусором — непонятно.
Дык Вам же ясно сказали, что до 25 см — слепая зона, не меряет это расстояние датчик. Все равно, что предъявлять претензии к фоторезистору, что он не видит излучения в инфракрасном диапазоне :) Или к светодиоду, что он не светится при напряжении 0.2 вольта :)
Имея эффективный угол в 50 градусов, как можно достичь заявленной дистанции обнаружения 5м? Тоже непонятно.
А что смущает? Вы пробовали — и он не берет расстояние в 3-4-5 метров? Или как? Непонятно.
На расстоянии больее 150 см, показания меняются в пределах пары сантиметров, т.е. тоже нельзя говорить о заявленной точности 0.5 см.
Ну, вообще сказано «около 0.5 см» :) Разумеется, речь про идеальные условия, да еще и не указано для какого расстояния :) Но и 2 см на 150 — это 1.33%, вполне неплохая погрешность для ширпотребовского датчика, зачем Вам точнее?
И ещё один важный момент: т.к. устройство использует высокую частоту, то возможно его следует поместить в экран для защиты от возможных помех.
Это Вы про 40 кГц? :)))
Но за обзор плюс, вещь прикольная :)
+
avatar
  • He1ix
  • 09 октября 2015, 06:36
+1
использование данного датчика в практических целях тоже затрудняется.
В бампер воткнуть — Это же датчик парктроника.
+
avatar
  • TimSmith
  • 09 октября 2015, 12:47
0
Идея была как раз в этом, но паразитные срабатывания внушают опасения в его эффективности. Проверю на машине, обязательно обновлю обзор.
+
avatar
  • Bloop
  • 09 октября 2015, 04:40
+1
Возможно, низкие ТТХ как раз плата за герметичность датчика.
+
avatar
+3
pulseIn() — довольно капризная штука сама по себе, особенно на коротких интервалах.

А за обзор спасибо, штука интересная. Цена, конечно… в эти деньги китайцы продают готовый парктроник с 4 такими датчиками. :)

Кстати. А если взять обычный SR-04, выпаять его датчики, и подключить туда два вот таких? Один как приемник и один как передатчик? Хм… Надо будет поиграться на досуге. :)
+
avatar
  • TimSmith
  • 09 октября 2015, 12:48
+1
Сработает? Мне тоже интересно!
+
avatar
  • TimSmith
  • 09 октября 2015, 13:02
0
А как обойти pulseIn()? Возможно?
+
avatar
  • mpsa
  • 09 октября 2015, 07:25
0
длинна не экранированного провода датчика тоже может влиять на мусор
+
avatar
  • TimSmith
  • 09 октября 2015, 12:49
0
Это стандартный автомобильный датчик, в нём такая длина провода предусмотрена (в длину автомобиля).
+
avatar
+2
Можно реализовать программную проверку на ошибки.
Для интереса, сделал так на HC-SR04 — перед возвращением дальности, функция производит два измерения, и сравнивает их значения. Если разность чисел больше допустимой погрешности — производится повторное измерение.
И так, до тех пор, пока не закончится счётчик, или не получится «правильное» значение расстояния.
Также, производится проверка на превышение дальности измерения, и нулевое значение расстояния.
В итоге — HC-SR04 и его младший брат US-015 показывают вполне корректные значения в 99% случаев, или возвращают ошибку измерения.
+
avatar
  • TimSmith
  • 09 октября 2015, 12:54
0
Т.е. нужно организовать серию измерений и потом обрабатывать результат. Т.е. измерение с большими погрешностями считаем недостоверным… Инетересно :)
+
avatar
0
Я так понимаю слепая зона у этого датчика, потому что источник звука и приемник — это одно устройство?
+
avatar
  • AndyBig
  • 09 октября 2015, 10:30
0
Именно так.
+
avatar
  • TimSmith
  • 09 октября 2015, 12:55
0
Может быть ещё дело в скорости обработки сигнала, т.е. на малых расстояниях время возврата эха исчезающе мало. Мб в этом дело? Плюс инерция пьезоизлучателя.
+
avatar
  • kash001
  • 09 октября 2015, 09:47
0
А нельзя датчик напрямую без этой платы прикрутить к Arduino и поэкспериментировать с ним?
+
avatar
  • AndyBig
  • 09 октября 2015, 10:30
0
Нет, ничего не получится.
+
avatar
0
Мне вот тоже интересен вопрос — почему не получится?
+
avatar
  • AndyBig
  • 09 октября 2015, 11:25
0
Во-первых, потому что ардуина не раскачает этот датчик на нормальную мощность излучения, во-вторых потому, что не примет нормально с него отраженный сигнал :)
+
avatar
0
Ну мощность можно же поднять обвязкой (к примеру включив через транзистор?), а почему бы не принять нормально отраженный сигнал? Мне правда интересны технические трудности и ограничения. Из быстрого гугления так-же нашел только ответы «не сможет и все, бери оригинальную м\с и подключай уже ее».
+
avatar
0
Да всё возможно.
«не сможет и все, бери оригинальную м\с и подключай уже ее».
Это из серии «я не знаю, как оно работает, значит это невозможно»
Читаем устройство простейшего сонара. Пишем программу, прикручиваем АЦП, и радуемся жизни.
+
avatar
  • AndyBig
  • 09 октября 2015, 17:22
0
Мощность желательно поднимать не просто одним транзистором, а транзисторным мостом — это вдвое увеличит амплитуду. А в идеале желательно иметь на выходе вообще трансформатор или колебательным контур, настроенные в резонанс с излучателем :)
Принимаемый сигнал нужно усиливать и желательно фильтровать по частоте излучения, чтобы не ловить любые посторонние громкие звуки.
То есть просто взять излучатель и припаять его к ардуине не получится. Как-то оно, наверное, будет работать, но диапазон и погрешности будут совсем непрактичными. Как в том анекдоте про машинистку — «Печатаю со скоростью 2000 знаков в минуту, но при этом такая фигня выходит...» :)
+
avatar
  • flymouse
  • 09 октября 2015, 16:29
+1
Вот такую схему подключения датчика рекомендуют китайцы.

Как минимум это нужно собирать чтобы подключить к своему процессору.
Хотел эти датчики прикручивать к STM32, искал схемы как их правильно подключать но потом необходимость отпала и так и не проверил.
Сами датчики стоят копейки, это и подкупает их использовать но со своей платой.
Кстати подстроечные трансформаторы для раскачки этих датчиков китайцы тоже продают по вполне небольшой цене за ведро.
+
avatar
  • TimSmith
  • 09 октября 2015, 12:50
0
Обрабатывать частоты в 40 кГц Арундиной? Это возможно?
+
avatar
0
Без простейшего АЦП не обойтись. С ним — вполне возможно.
Ведь надо не только принять сигнал, но и выделить его среди другого шума.
+
avatar
  • AndyBig
  • 09 октября 2015, 17:24
+1
АЦП (тем более простейший) помогает выделять сигнал из шума? Серьезно? :)
+
avatar
  • SEM
  • 09 октября 2015, 10:25
-1
Что так дорого то? За 12-14$ присылают автмобильный комплект — 4 датчика, «центральный мозг» и дисплейчик на 6-метровом проводе.
+
avatar
  • TimSmith
  • 09 октября 2015, 12:51
0
это же DIY, к тому же он не очень распространён.
+
avatar
  • zair
  • 09 октября 2015, 10:55
+1
ОООО наконец-то, а то голову сломал как приспособить обычный датчик для контроля заполненности септика. Этот то что нужно. Только цена с потолка.
+
avatar
+2
говнодатчик — это в заголовок надо…
+
avatar
  • Vinnie
  • 09 октября 2015, 11:19
0
Тоже подумал о таком применении, проблема заполненности септиков пока не решена, только вот будет ли он считать жидкость препятствием?
+
avatar
  • AndyBig
  • 09 октября 2015, 11:26
+1
Вполне будет, звук от поверхности жидкости отражается :)
+
avatar
  • TimSmith
  • 09 октября 2015, 12:52
0
главное решить проблему боковых засветок. И ещё ёмкость — она же закрытая? Т.е. будут боковые отражения от стенок итд. Интересно проверить поведение этого датчика в таком пространстве.
+
avatar
  • zair
  • 09 октября 2015, 14:11
0
С обычным датчиком все уверенно пашет. Только датчики разъедает )))
+
avatar
  • spc
  • 09 октября 2015, 15:20
0
Геркон с магнитом решат проблему.
+
avatar
  • zair
  • 09 октября 2015, 19:44
0
десяток герконов по глубине да, возможно.
+
avatar
  • spc
  • 09 октября 2015, 21:13
0
А там реально такая точность нужна? Это не сарказм, я просто не совсем в курсе.
+
avatar
  • TimSmith
  • 10 октября 2015, 12:56
0
опять же герметичность и агресивная среда…
+
avatar
  • vagonsky
  • 09 октября 2015, 15:41
0
Где б ещё датчики замутить по типу Mongoose M-200?.. во дворе машины кошмарят.Когда на 2109 был такой датчик-пугались«проверяльщики»+бабки из окон сразу палить за ними начинали.Сейчас же спокойно подходят и фонариками в салон ночью светят.Утром только следы по снегу вокруг.Тот датчик 200-й хоть пищал, когда кто-то слашком близко подходил и задерживался у машины(место такое, что только специально подойти можно)
+
avatar
  • SEM
  • 15 октября 2015, 10:58
0
Это скорее были микроволновые датчики, а не ультразвуковые. Они могут работать из запертого салона за пределами салона.
При тупой голове страшная вещь — на одной из старых работ под окнами кабинета одна мpaзь ставила свою помойку с таким датчиком на весь день возле пешеходной тропы, сигналка весь день покрякивала…
+
avatar
  • vagonsky
  • 15 октября 2015, 11:15
0
При тупой голове страшная вещь
эт точно.Но у нас все соседи знают, чьи авто во дворе, потому вмомент помогают(то настроить сигналки, то в мелком ремонте).Мне же после покупки и изучения матчасти, пришлось уехать на пустырь и там настраивать.Процарапал метки на корпусе.Когда летом сильный дождь был-приходилось от этих меток градусов на 20-40 уменьшать, днём выключал совсем.Зато несколько раз сшугивала сигналка особо любопытных кадров.Сейчас машина другая, но всё равно интересно приделать такие датчики-во дворе колпашат всё подряд, даже под камеру лезут.Если вижу на мониторе слишком любопытных-давлю на поиск авто-машина крякает-интересующиеся сваливают
+
avatar
  • samego
  • 29 июня 2016, 20:06
0
Может кто подскажет, какой операционник стоит на этой плате?
+
avatar
  • granvi
  • 24 июня 2018, 08:21
0
Приветствую! Что то не получается ничего с этим датчиком. Перепробовал следующие варианты: подключил к голой uno с питанием по usb. Для теста использовал библиотеки newping — показывает какую то ахинею, ultrasonic — все по нолям, простой пример, как в статье. Тоже ноль.
Почитав, подумал, что дело в питании. Взял блок питания 5в 0.8А и отдельно записал датчик. Эффект примерно такой же. Либо мусор, либо 0.
Датчика 2 штуки. Оба себя так ведут.
При этом, ещё наблюдаются какие то странности если менять выводы подключения. На одной паре может показать мусор на другой при тех же условиях — тишина. Так не должно быть. Ладно один датчик, а если надо 4 включить.
Я подозреваю свою криворукость.
Может кто сталкивался. Сможет наставить на путь истинный
+
avatar
0
Насколько я знаю, датчик может передавать данные по UART, жаль, что в обзоре об этом не рассказано. У меня тоже такой лежит, но UART пока не пробовал, а так расстояние ~3м измеряет достаточно точно. Есть желание попробовать мерить этим датчик глубину водоема, если я не ошибаюсь, есть удачные примеры такого измерения.