Здравствуйте! Это небольшой обзор написан о редком водозащищённом датчике расстояния 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 изделиезаказаннозасвоиденьги, дошлобезтреказамесяцвмятомпакетике.
А что смущает? Вы пробовали — и он не берет расстояние в 3-4-5 метров? Или как? Непонятно.
Ну, вообще сказано «около 0.5 см» :) Разумеется, речь про идеальные условия, да еще и не указано для какого расстояния :) Но и 2 см на 150 — это 1.33%, вполне неплохая погрешность для ширпотребовского датчика, зачем Вам точнее?
Это Вы про 40 кГц? :)))
Но за обзор плюс, вещь прикольная :)
А за обзор спасибо, штука интересная. Цена, конечно… в эти деньги китайцы продают готовый парктроник с 4 такими датчиками. :)
Кстати. А если взять обычный SR-04, выпаять его датчики, и подключить туда два вот таких? Один как приемник и один как передатчик? Хм… Надо будет поиграться на досуге. :)
Для интереса, сделал так на HC-SR04 — перед возвращением дальности, функция производит два измерения, и сравнивает их значения. Если разность чисел больше допустимой погрешности — производится повторное измерение.
И так, до тех пор, пока не закончится счётчик, или не получится «правильное» значение расстояния.
Также, производится проверка на превышение дальности измерения, и нулевое значение расстояния.
В итоге — HC-SR04 и его младший брат US-015 показывают вполне корректные значения в 99% случаев, или возвращают ошибку измерения.
Это из серии «я не знаю, как оно работает, значит это невозможно»
Читаем устройство простейшего сонара. Пишем программу, прикручиваем АЦП, и радуемся жизни.
Принимаемый сигнал нужно усиливать и желательно фильтровать по частоте излучения, чтобы не ловить любые посторонние громкие звуки.
То есть просто взять излучатель и припаять его к ардуине не получится. Как-то оно, наверное, будет работать, но диапазон и погрешности будут совсем непрактичными. Как в том анекдоте про машинистку — «Печатаю со скоростью 2000 знаков в минуту, но при этом такая фигня выходит...» :)
Как минимум это нужно собирать чтобы подключить к своему процессору.
Хотел эти датчики прикручивать к STM32, искал схемы как их правильно подключать но потом необходимость отпала и так и не проверил.
Сами датчики стоят копейки, это и подкупает их использовать но со своей платой.
Кстати подстроечные трансформаторы для раскачки этих датчиков китайцы тоже продают по вполне небольшой цене за ведро.
Ведь надо не только принять сигнал, но и выделить его среди другого шума.
При тупой голове страшная вещь — на одной из старых работ под окнами кабинета одна мpaзь ставила свою помойку с таким датчиком на весь день возле пешеходной тропы, сигналка весь день покрякивала…
Почитав, подумал, что дело в питании. Взял блок питания 5в 0.8А и отдельно записал датчик. Эффект примерно такой же. Либо мусор, либо 0.
Датчика 2 штуки. Оба себя так ведут.
При этом, ещё наблюдаются какие то странности если менять выводы подключения. На одной паре может показать мусор на другой при тех же условиях — тишина. Так не должно быть. Ладно один датчик, а если надо 4 включить.
Я подозреваю свою криворукость.
Может кто сталкивался. Сможет наставить на путь истинный