Датчики расстояния: ИК и ультразвук
Урок про два способа «увидеть» расстояние без касания: по времени полёта звука и по углу отражённого ИК-луча.
Ультразвуковой дальномер измеряет расстояние по времени возврата эха; ИК-дальномер — по углу отражённого инфракрасного луча (триангуляция).
Бесконтактное измерение расстояния — основа парктроников, роботов-пылесосов и дронов. Два массовых принципа: послать импульс и засечь время возврата (ультразвук) или измерить, под каким углом вернулся луч (ИК).
Ультразвук: время полёта
Звук летит до препятствия и обратно. Если время туда-обратно равно $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)$, обязательна калибровка.
- Выбор зависит от поверхности, дальности и требуемой точности.