Как работает датчик расстояния и датчик температуры?
Делаю проект на Arduino с датчиком расстояния (ультразвуковым HC-SR04) и датчиком температуры. Хочу понять, как они вообще измеряют — на каком принципе работают? Объясните простыми словами.
2 ответа
Это датчики на разных физических принципах, разберём оба.
Ультразвуковой датчик расстояния (HC-SR04) работает как эхолокатор у летучей мыши. Он излучает короткий ультразвуковой импульс (мы его не слышим), тот летит до препятствия, отражается и возвращается. Датчик засекает время полёта туда-обратно.
Зная скорость звука (~340 м/с) и время, считаем расстояние:
расстояние = скорость · время / 2
Делим на 2, потому что звук прошёл путь дважды — туда и обратно. На Arduino время меряют функцией pulseIn, дальше переводят в сантиметры.
Датчик температуры. Тут несколько вариантов принципа:
- Терморезистор (термистор) — резистор, у которого сопротивление меняется от температуры. Греется → сопротивление падает (или растёт). Включают его в делитель напряжения и читают напряжение через АЦП.
- Цифровые датчики (DS18B20, DHT11/DHT22) — внутри уже есть чувствительный элемент и АЦП, они сразу выдают готовое число градусов по цифровому протоколу. Проще в работе.
Общая идея всех датчиков: они превращают физическую величину (расстояние, температуру, свет) в электрический сигнал — напряжение или цифровой код, который микроконтроллер умеет прочитать.
Совет: для HC-SR04 учитывай, что он плохо «видит» мягкие и косые поверхности (звук рассеивается), а термистор перед использованием стоит откалибровать.
Добавлю про скорость звука в формуле для HC-SR04: её удобно брать как ~0.034 см/мкс. Тогда расстояние в см ≈ время_в_мкс · 0.034 / 2. Многие готовые библиотеки делают это за тебя.
И общий принцип, который стоит усвоить: любой датчик — это «переводчик» из физики в электричество. Аналоговый отдаёт напряжение (читаешь через АЦП), цифровой — готовое число по своему протоколу. С цифровыми новичку обычно проще начинать.