Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


Калькулятор ультразвукового дальномера (HC-SR04)



УЗ-дальномер (HC-SR04)

Расстояние по времени возврата эха ультразвукового датчика и обратно. Учитывает зависимость скорости звука от температуры. Для HC-SR04 и подобных на Arduino.

мкс
°C
см

Как работает ультразвуковой дальномер

Ультразвуковой дальномер измеряет расстояние по времени полёта эха. Излучатель посылает короткую пачку неслышимых колебаний (у HC-SR04 — 8 импульсов на 40 кГц), волна летит до препятствия, отражается и возвращается на приёмник. Контроллер засекает интервал между отправкой и приходом эха — по нему и вычисляют дистанцию. Принцип тот же, что у эхолота или парктроника: звук — удобный «медленный» посыльный, время его пробега легко измерить обычным таймером микроконтроллера. Частота лежит в ультразвуке (выше 20 кГц), поэтому измерение не мешает человеку и слабо цепляет посторонние шумы. Длину самой волны 40 кГц можно прикинуть в калькуляторе длины звуковой волны — она около 8,6 мм, и это задаёт предел разрешения по мелким деталям.

Расстояние d = t · c / 2    c = 331,3 + 0,606·T (м/с)

Здесь t — полное время эха (туда и обратно), c — скорость звука в воздухе, T — температура в градусах Цельсия. Делить на два нужно потому, что за время t волна проходит удвоенную дистанцию: путь до объекта плюс путь назад. Формула обратима — задав желаемое расстояние, дальномер вернёт ожидаемое время эха, что удобно при отладке порогов срабатывания. В калькуляторе поле «время эха» и поле «расстояние» связаны: меняете одно — второе пересчитывается автоматически, температура влияет на обе стороны.

Почему важна температура

Скорость звука в воздухе не постоянна: она растёт примерно на 0,6 м/с с каждым градусом нагрева. При 0 °C звук идёт 331 м/с, при 20 °C — уже около 343 м/с, при 40 °C — под 356 м/с. Игнорировать это нельзя: между зимним морозом и летней жарой скорость меняется почти на 12 %, а значит на столько же «плывёт» и расстояние, посчитанное по фиксированному коэффициенту. Именно поэтому в калькуляторе есть отдельное поле температуры — оно подставляется в формулу c = 331,3 + 0,606·T. Если у вас есть термодатчик (например, тот же DHT22 рядом с сонаром), его показания стоит скармливать в расчёт. Перевести градусы между шкалами поможет конвертер температуры °C/°F/K. Влажность и давление тоже влияют, но их вклад на порядок меньше температурного, и в бытовых задачах им обычно пренебрегают.

Точность, слепая зона и типовые ошибки

Реальная точность HC-SR04 — порядка ±3 мм в лабораторных условиях и заметно хуже на практике. Рабочий диапазон — примерно от 2 см до 4 м; ближе 2 см приёмник ещё «оглушён» собственным импульсом (слепая зона), дальше — эхо тонет в затухании. Угол диаграммы около 15°, поэтому датчик «видит» конус, а не луч: узкие препятствия сбоку он поймает как более близкие, чем они есть по прямой. Мягкие, пористые и наклонные поверхности отражают звук плохо — ткань, поролон или стекло под углом могут вовсе не дать эха, и дальномер решит, что путь свободен.

Есть и системные подвохи. Соседние ультразвуковые датчики слышат чужое эхо — если их несколько, запускать замеры нужно по очереди, а не одновременно, иначе они «переговариваются» и выдают мусор. Сильный ветер сносит звуковую пачку, а сквозняк создаёт градиенты температуры и слегка искривляет путь. Частая ошибка в коде — забыть про делитель «туда-обратно» и получить вдвое завышенную дистанцию; вторая ошибка — жёстко зашить «/58» и не учитывать температуру. Само значение 58 мкс/см — это как раз время пробега 1 см в обе стороны при комнатных 20 °C, и оно смещается с нагревом, что видно в таблице ниже. Для стабильного результата эхо обычно измеряют несколько раз и берут медиану, отбрасывая явные выбросы.

Скорость звука и время эха от температуры

Таблица показывает, как «плывут» скорость звука и удобный делитель (время эха на 1 см дистанции, туда и обратно) при разной температуре воздуха:

ТемператураСкорость звука cВремя на 1 см (туда-обратно)
−20 °C319,2 м/с62,7 мкс
0 °C331,3 м/с60,4 мкс
20 °C343,4 м/с58,2 мкс
40 °C355,5 м/с56,3 мкс

Строка 20 °C и объясняет знаменитый делитель «/58» из скетчей Arduino: расстояние в сантиметрах ≈ время_эха[мкс] / 58. При −20 °C тот же код завысит дистанцию почти на 8 %, при +40 °C — занизит.

Где применяют — и где не годится

Ультразвуковые дальномеры стоят в парктрониках, роботах-пылесосах, уровнемерах баков и бункеров, счётчиках потока, автоматике дверей, охранных датчиках присутствия и в бесчисленных любительских проектах на Arduino и Raspberry Pi. Их любят за дешевизну: модуль HC-SR04 стоит копейки и подключается тремя проводами плюс питание. Они не боятся темноты и цвета поверхности (в отличие от инфракрасных дальномеров), меряют без контакта и не требуют оптики. Слабые места — там, где нужны высокая точность на большой дистанции, работа под водой того же датчика (для воды нужен свой сонар, скорость звука там около 1500 м/с) или уверенный контроль очень мягких, тонких и наклонных целей.

Если задача не «где объект», а «насколько громко» — измерить уровень звука или его спад с расстоянием — это уже другая физика: смотрите калькулятор SPL от расстояния. Для перехода от частоты к длине волны в общем случае (радио, акустика) пригодится калькулятор длины волны, а для самой ультразвуковой пачки 40 кГц — длина звуковой волны. Радиолокация и лидары работают по тому же принципу «время полёта», но посыльный у них — свет, а не звук, поэтому и коэффициент пересчёта там иной, зато дальность и точность несопоставимо выше.

Пример

На значениях по умолчанию (время эха t = 1000 мкс, температура T = 20 °C) сначала считаем скорость звука: c = 331,3 + 0,606·20 = 343,4 м/с. Затем расстояние: d = 0,001 с · 343,4 / 2 = 0,1717 м = 17,2 см. Проверка через делитель: 1000 / 58 ≈ 17,2 см — совпадает. Если бы воздух остыл до 0 °C, та же 1000 мкс дала бы уже 16,6 см — вот цена неучтённой температуры.

См. также: длина звуковой волны · длина волны · температура °C/°F/K · SPL от расстояния · все калькуляторы


Частые вопросы

Как посчитать расстояние по УЗ-датчику?

Расстояние = время_эха·c/2 (деление на 2, потому что звук идёт туда и обратно). Скорость звука c = 331,3 + 0,606·T (м/с). При 20 °C 1 см соответствует ≈ 58 мкс — отсюда популярный делитель «/58» в коде.

Зачем учитывать температуру?

Скорость звука растёт примерно на 0,6 м/с на градус, поэтому без учёта температуры дальномер ошибается на процент-другой в холод или жару. Для точных измерений её компенсируют.


Похожие калькуляторы — Датчики
NTC-термистор  ·  RTD PT100/PT1000  ·  Термопара (NIST)  ·  Тензодатчик (мост)  ·  Датчик Холла  ·  Токовый шунт  ·  все калькуляторы →


© 2003—2026 «KAZUS.RUN - Электронный портал»