Датчики расстояния: ИК и ультразвук

Урок про два способа «увидеть» расстояние без касания: по времени полёта звука и по углу отражённого ИК-луча.

Ультразвуковой дальномер измеряет расстояние по времени возврата эха; ИК-дальномер — по углу отражённого инфракрасного луча (триангуляция).

Бесконтактное измерение расстояния — основа парктроников, роботов-пылесосов и дронов. Два массовых принципа: послать импульс и засечь время возврата (ультразвук) или измерить, под каким углом вернулся луч (ИК).

Ультразвук: время полёта

Звук летит до препятствия и обратно. Если время туда-обратно равно $t$, а скорость звука $c$, то расстояние:

$$ d = \frac{c\,t}{2} $$

Скорость звука зависит от температуры: $c \approx 331 + 0{,}6\,T$ м/с, поэтому точные дальномеры учитывают температуру.

def distance_cm(t_us, T=20):
    c = 331 + 0.6 * T          # скорость звука, м/с
    t = t_us * 1e-6            # мкс -> с
    d = c * t / 2              # делим на 2: туда и обратно
    return round(d * 100, 2)   # м -> см

print(distance_cm(1000), "см")   # эхо через 1 мс
print(distance_cm(5800), "см")

Вывод:

17.15 см
99.47 см

ИК-триангуляция

ИК-дальномер (например, серии Sharp) светит лучом, который отражается и попадает на линейный приёмник под углом, зависящим от расстояния. Зависимость нелинейна и близка к обратной:

$$ d \approx \frac{k}{V - V_0} $$

где $V$ — выход приёмника, $k$ и $V_0$ — калибровочные константы. ИК работает на коротких дистанциях и не любит чёрные/блестящие поверхности.

# Обратная модель ИК-дальномера
k = 27.0
V0 = 0.0

def ir_distance(v):
    return round(k / (v - V0), 1)

for v in (0.5, 1.0, 1.5):
    print(v, "В ->", ir_distance(v), "см")

Вывод:

0.5 В -> 54.0 см
1.0 В -> 27.0 см
1.5 В -> 18.0 см

Как работает под капотом

Ультразвук точен и дёшев, но «слепнет» на мягких поглощающих поверхностях и имеет широкий конус — видит ближайшую точку в секторе, а не строго перед собой. Скорость звука гуляет с температурой и влажностью, отсюда необходимость компенсации. ИК-триангуляция узким лучом точнее в пятне, но её обратная характеристика требует обязательной калибровки и плохо работает на краях диапазона, где малая разница напряжения даёт большой разброс по расстоянию.

Частые ошибки

  • Не делить время полёта на 2 — расстояние удвоится.
  • Игнорировать температурную зависимость скорости звука на точных измерениях.
  • Считать ИК-дальномер линейным — его характеристика обратная и резко нелинейна.

Итог

  • Ультразвук: $d = c\,t/2$, скорость звука зависит от температуры.
  • ИК-триангуляция: $d \approx k/(V - V_0)$, обязательна калибровка.
  • Выбор зависит от поверхности, дальности и требуемой точности.
Проверьте себя
1. Почему в формуле ультразвукового дальномера время делят на 2?
AДля перевода в сантиметры
BЗвук проходит путь до объекта и обратно
CЧтобы убрать шум
DИз-за двух датчиков
2. Какая характеристика типична для ИК-дальномера на основе триангуляции?
AСтрого линейная
BОбратная и нелинейная
CПостоянная
DЛогарифмическая по времени