Сомнение относительно механизма измерения HC-sr04
Я пытаюсь понять, как работает датчик HC-SR04. Я искал подробные объяснения в интернете и читал технические описания, но одна деталь мне всё ещё не понятна.
Если я правильно понял, как работают контакты «триггер» и «эхо», то происходит следующее:
- После (>10 мкс ) «высокого» сигнала запуска датчик испускает небольшую последовательность из 8 ультразвуковых импульсов с частотой 40 кГц (общей длительностью 8*1/40000=0,0002 с=0,2 мс); в момент испускания последнего импульса эхо-сигнал становится ВЫСОКИМ.
- Датчик ждет возвращения сигнала, и как только обнаруживается первый отраженный импульс, эхо-сигнал становится НИЗКИМ.
Во всех прочитанных мной руководствах утверждается, что нужно измерить общее время, которое эхо проводит в состоянии HIGH, затем умножить это значение на скорость звука и разделить на два. Меня это устраивает, но не могу не задаться вопросом: нет ли ошибки из-за того, что эхо увеличивается с испусканием первого импульса, но уменьшается с приёмом первого? Не занижаем ли мы фактическое время на 0,0002 с (что соответствует далеко не пренебрежимо малой пространственной погрешности в 6,86 см)?
Что я здесь упускаю?
@Rocco Mantovani, 👍0
Обсуждение1 ответ
Для запуска измерения триггерные контакты должны удерживаться в высоком состоянии в течение 10 мкс. Вывод эха остаётся в высоком состоянии в течение короткого периода времени, определяемого временем, необходимым ультразвуковым волнам для отражения от приёмника. Конструкция датчика учитывает 8-импульсную последовательность, запуская таймер эха после отправки последнего импульса. Измеренное время верно, погрешность составляет 6,86 см. Для лучшего понимания ознакомьтесь со следующим контентом:
https://www.theengineeringprojects.com/2018/10/introduction-to-hc-sr04-ultrasonic-sensor.html
Особенно обратите внимание на временные диаграммы, приведенные на странице № 6 технического описания. https://www.handsontec.com/dataspecs/HC-SR04-Ultrasonic.pdf
Извините, это не совсем ответ на вопрос. Эти статьи и описания, которые вам понравились, также содержат скудные сведения о том, как именно детектируется ультразвуковое эхо, как и вся информация, которую автор уже нашёл., @chrisl
- Как использовать триггерный контакт ультразвукового датчика и зачем он нужен?
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Мой датчик HC-SR04 сломался?
- Получение 0 см от ультразвукового датчика, когда ничего нет впереди
- Код для 2 ультразвуковых датчиков
- HC-SR04 измерение расстояния без задержки?
- JSN-SR04T-2.0 с NodeMCU не запускается после сброса или повторного подключения питания USB
- Сдвиг уровня 5В <-> 3,3В
Откуда именно вы взяли информацию о низком уровне эха на **первом** отражённом импульсе? Когда я искал информацию, все найденные мной технические описания были очень расплывчатыми и говорили только: «когда эхо получено». И для меня было бы логичнее, если бы схема действительно пыталась принять все 8 импульсов, чтобы убедиться, что сигнал действительно от датчика. Таким образом, эхо стало бы низкоуровневым после **последнего** импульса., @chrisl
Полностью с вами согласен. Это было бы совершенно логично, и я не задумывался о необходимости отделять настоящий сигнал от фонового шума. Согласен, что в технических описаниях этот вопрос не ясен; моё недопонимание возникло из-за источника (не уверен, что смогу найти его снова, но попробую), где, вероятно, неудачно выбранная формулировка указывала на то, что эхо должно было исчезнуть при приёме первого пика. Оставлю вопрос открытым, чтобы узнать, есть ли у кого-нибудь опыт решения этой проблемы и кто сможет подтвердить это с уверенностью. Спасибо!, @Rocco Mantovani
Какая разница, когда и как декодируются импульсы? ... провести калибровку системы после ее сборки, чтобы сделать ее точной, @jsotola
@jsotola Этот вопрос касается понимания того, как работает HC-SR04, а не решения связанной с ним проблемы., @chrisl
Думаю, где бы вы ни читали информацию о том, что первый пик детектируется, это может быть недопониманием или просто ошибкой. Ни в одной статье или техническом описании HC-SR04, которые я когда-либо видел, об этом не упоминается, и расчёт работает идеально без каких-либо исправлений. Поскольку метод детектирования, вероятно, присутствует только в коде микроконтроллера HC-SR04, найти достоверный ответ на этот вопрос может быть очень сложно., @chrisl