Датчики температуры

Температурный датчик помогает роботу заметить перегрев двигателя, проверить состояние аккумуляторного отсека или наблюдать за воздухом в теплице. Но число на экране не появляется мгновенно и не всегда относится к тому объекту, который мы собирались измерить.
Датчик температуры измеряет температуру собственного чувствительного элемента. Аналоговый датчик передаёт её напряжением, а цифровой — готовым кодом. Точность результата зависит от модели, установки, времени реакции и самонагрева.
Зачем это нужно
Представим колёсного робота, который долго едет в горку. Двигатель нагревается, и программа должна уменьшить мощность до повреждения деталей. Если датчик висит рядом с мотором в воздухе, он измеряет в основном воздух. Если контактный датчик закреплён на корпусе, смысл показания уже другой.
Температуру измеряют в разных местах: на корпусе двигателя, около драйвера моторов, внутри аккумуляторного отсека, в потоке воздуха теплицы или в герметичной ёмкости с водой. Для каждой задачи нужен свой тип датчика.
Примеры датчиков

| Датчик | Что измеряет в учебном проекте | Выход | Диапазон и особенности |
|---|---|---|---|
| LM35 | температуру микросхемы или поверхности рядом с ней | аналоговое напряжение | обычно 10 мВ/°C; нужен АЦП и точная опора |
| DS18B20 | воздух, жидкость или поверхность через герметичный зонд | 1-Wire | -55...+125 °C, настраиваемое разрешение 9...12 бит |
| DHT22 | температуру и влажность воздуха | цифровой однопроводный протокол | -40...+80 °C, медленный опрос, удобен для метеостанции |
| BME280 | температуру, влажность и давление воздуха | I²C/SPI | хорош для среды, но температура платы может отличаться от воздуха |
Главный вопрос: чем отличаются эти датчики для программы? LM35 даёт напряжение, DS18B20 и BME280 уже выполняют оцифровку внутри, а DHT22 объединяет температуру с влажностью, но обновляется медленно.
Главная идея
Чувствительный элемент сначала должен обменяться теплом с объектом или средой. Только после этого его собственная температура приблизится к измеряемой:
объект или среда -> теплообмен -> чувствительный элемент -> электрический сигнал -> контроллер
LM35 или TMP36 требуют входа АЦП, потому что контроллер видит напряжение. DS18B20, DHT22 и BME280 передают цифровой результат, но это не отменяет задержку теплообмена и проверку правильного места измерения.
Аналоговый и цифровой датчики
| Свойство | Аналоговый датчик | Цифровой датчик |
|---|---|---|
| Выход | напряжение или ток | числовой код по интерфейсу |
| Что нужно контроллеру | АЦП и опорное напряжение | поддерживаемый интерфейс |
| Где выполняется оцифровка | в контроллере или внешнем АЦП | внутри датчика |
| Что особенно влияет | шум, длина провода, точность Vref | настройки измерения, адрес, контроль данных |
| Пример | LM35 | DS18B20, BME280 |
Аналоговый датчик удобно проверить мультиметром, но напряжение ещё не является температурой. Цифровой датчик сокращает аналоговый участок цепи, но программа должна уметь прочитать правильный регистр, проверить ошибку обмена и не принять старое значение за новое.

Точность, разрешение и задержка — не одно и то же
| Параметр | О чём говорит | Чего не гарантирует |
|---|---|---|
| Диапазон | в каких температурах устройство рассчитано работать | одинаковую точность во всём диапазоне |
| Разрешение | насколько мал шаг выходного кода | близость к истинной температуре |
| Точность | допустимое отклонение при заданных условиях | мгновенную реакцию |
| Время реакции | как быстро датчик следует за изменением среды | отсутствие шума и выбросов |
Постоянная времени τ часто описывает реакцию датчика на скачок температуры. Число 63,2% берётся из экспоненциальной модели: через одно τ величина проходит долю 1 - e^-1, то есть примерно 0,632 от полного изменения. Если датчик переносится из 20 °C в 40 °C, то через одно τ он покажет около 32,6 °C, а не сразу 40 °C.
Называй переменные правильно
В коде полезно называть не просто temperature, а то, что реально представляет число:
| Плохое имя | Лучше | Почему |
|---|---|---|
temperature | motor_case_temperature_c | понятно, что это корпус двигателя, а не обмотка |
temp | air_temperature_near_intake_c | видно место измерения воздуха |
value | bme280_board_temperature_c | ясно, что датчик может греться вместе с платой |
t | coolant_probe_temperature_c | видно, что это герметичный зонд в жидкости |
Такое имя заставляет программу быть честной. Если переменная называется motor_winding_temperature_c, а датчик закреплён на корпусе, это не техническая мелочь, а ошибка смысла.
Пример: защита привода от перегрева
Контактный датчик закреплён на корпусе двигателя. Контроллер делает измерение раз в секунду, сохраняет исходное значение и коротко сглаженное значение. Управление строится не на одном магическом пороге, а на состояниях:
- Нормальная работа — температура ниже предупредительного уровня.
- Ограничение — привод получает меньшую команду после устойчивого превышения.
- Остановка — контроллер отключает привод при аварийном уровне или потере достоверных данных.
- Охлаждение — повторный запуск разрешён только после снижения до более низкого порога.
Разные пороги включения и возврата образуют гистерезис: робот не переключается туда-сюда из-за небольшого шума около границы.
Что запомнить про температуру
- Датчик сначала измеряет собственный чувствительный элемент.
- Аналоговому датчику нужен АЦП; цифровой датчик передаёт код по интерфейсу.
- Разрешение, точность и время реакции описывают разные свойства.
63,2%— это точка одной постоянной времени в экспоненциальной реакции.- Название переменной должно отражать место и смысл измерения.
Практика
- Сравните названия
temperature,motor_case_temperature_cиair_temperature_c: какие ошибки легче заметить во втором и третьем варианте? - Запишите десять сырых кодов аналогового датчика и пересчитайте их через опорное напряжение АЦП.
- Постройте график реакции датчика после переноса из холодной среды в тёплую и отметьте уровень
63,2%.
Проверьте себя
- Почему датчик на плате рядом с процессором может плохо измерять температуру воздуха?
- Чем разрешение отличается от точности?
- Зачем LM35 нужен АЦП?
- Что означает постоянная времени
τ? - Почему температура корпуса двигателя не обязательно равна температуре обмотки?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Чувствительный элемент — часть датчика, физическое состояние которой зависит от температуры.
- АЦП — преобразователь напряжения в цифровой код.
- Разрешение — минимальный шаг выходного представления.
- Точность — допустимое отклонение результата при заданных условиях.
- Постоянная времени — характеристика скорости реакции на скачок входной величины.
- Гистерезис — разные границы переключения туда и обратно.
Связанные темы
- АЦП — почему аналоговый датчик сначала даёт код, а не градусы.
- Датчики влажности — почему температуру часто измеряют вместе с влажностью.
- Калибровка датчиков — как проверять шкалу измерения.
Источники
- Texas Instruments. LM35 Precision Centigrade Temperature Sensors.
- Analog Devices / Maxim Integrated. DS18B20 Programmable Resolution 1-Wire Digital Thermometer.
- Bosch Sensortec. BME280 humidity sensor.