Перейти к основному содержимому

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

Мобильный робот измеряет температуру привода

Температурный датчик помогает роботу заметить перегрев двигателя, проверить состояние аккумуляторного отсека или наблюдать за воздухом в теплице. Но число на экране не появляется мгновенно и не всегда относится к тому объекту, который мы собирались измерить.

Коротко

Датчик температуры измеряет температуру собственного чувствительного элемента. Аналоговый датчик передаёт её напряжением, а цифровой — готовым кодом. Точность результата зависит от модели, установки, времени реакции и самонагрева.

Зачем это нужно

Представим колёсного робота, который долго едет в горку. Двигатель нагревается, и программа должна уменьшить мощность до повреждения деталей. Если датчик висит рядом с мотором в воздухе, он измеряет в основном воздух. Если контактный датчик закреплён на корпусе, смысл показания уже другой.

Температуру измеряют в разных местах: на корпусе двигателя, около драйвера моторов, внутри аккумуляторного отсека, в потоке воздуха теплицы или в герметичной ёмкости с водой. Для каждой задачи нужен свой тип датчика.

Примеры датчиков

Примеры датчиков температуры

ДатчикЧто измеряет в учебном проектеВыходДиапазон и особенности
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настройки измерения, адрес, контроль данных
ПримерLM35DS18B20, BME280

Аналоговый датчик удобно проверить мультиметром, но напряжение ещё не является температурой. Цифровой датчик сокращает аналоговый участок цепи, но программа должна уметь прочитать правильный регистр, проверить ошибку обмена и не принять старое значение за новое.

Аналоговый и цифровой путь температуры

Точность, разрешение и задержка — не одно и то же

ПараметрО чём говоритЧего не гарантирует
Диапазонв каких температурах устройство рассчитано работатьодинаковую точность во всём диапазоне
Разрешениенасколько мал шаг выходного кодаблизость к истинной температуре
Точностьдопустимое отклонение при заданных условияхмгновенную реакцию
Время реакциикак быстро датчик следует за изменением средыотсутствие шума и выбросов

Постоянная времени τ часто описывает реакцию датчика на скачок температуры. Число 63,2% берётся из экспоненциальной модели: через одно τ величина проходит долю 1 - e^-1, то есть примерно 0,632 от полного изменения. Если датчик переносится из 20 °C в 40 °C, то через одно τ он покажет около 32,6 °C, а не сразу 40 °C.

Называй переменные правильно

В коде полезно называть не просто temperature, а то, что реально представляет число:

Плохое имяЛучшеПочему
temperaturemotor_case_temperature_cпонятно, что это корпус двигателя, а не обмотка
tempair_temperature_near_intake_cвидно место измерения воздуха
valuebme280_board_temperature_cясно, что датчик может греться вместе с платой
tcoolant_probe_temperature_cвидно, что это герметичный зонд в жидкости

Такое имя заставляет программу быть честной. Если переменная называется motor_winding_temperature_c, а датчик закреплён на корпусе, это не техническая мелочь, а ошибка смысла.

Пример: защита привода от перегрева

Контактный датчик закреплён на корпусе двигателя. Контроллер делает измерение раз в секунду, сохраняет исходное значение и коротко сглаженное значение. Управление строится не на одном магическом пороге, а на состояниях:

  1. Нормальная работа — температура ниже предупредительного уровня.
  2. Ограничение — привод получает меньшую команду после устойчивого превышения.
  3. Остановка — контроллер отключает привод при аварийном уровне или потере достоверных данных.
  4. Охлаждение — повторный запуск разрешён только после снижения до более низкого порога.

Разные пороги включения и возврата образуют гистерезис: робот не переключается туда-сюда из-за небольшого шума около границы.

Что запомнить про температуру

  • Датчик сначала измеряет собственный чувствительный элемент.
  • Аналоговому датчику нужен АЦП; цифровой датчик передаёт код по интерфейсу.
  • Разрешение, точность и время реакции описывают разные свойства.
  • 63,2% — это точка одной постоянной времени в экспоненциальной реакции.
  • Название переменной должно отражать место и смысл измерения.

Практика

  1. Сравните названия temperature, motor_case_temperature_c и air_temperature_c: какие ошибки легче заметить во втором и третьем варианте?
  2. Запишите десять сырых кодов аналогового датчика и пересчитайте их через опорное напряжение АЦП.
  3. Постройте график реакции датчика после переноса из холодной среды в тёплую и отметьте уровень 63,2%.

Проверьте себя

  1. Почему датчик на плате рядом с процессором может плохо измерять температуру воздуха?
  2. Чем разрешение отличается от точности?
  3. Зачем LM35 нужен АЦП?
  4. Что означает постоянная времени τ?
  5. Почему температура корпуса двигателя не обязательно равна температуре обмотки?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

  • Чувствительный элемент — часть датчика, физическое состояние которой зависит от температуры.
  • АЦП — преобразователь напряжения в цифровой код.
  • Разрешение — минимальный шаг выходного представления.
  • Точность — допустимое отклонение результата при заданных условиях.
  • Постоянная времени — характеристика скорости реакции на скачок входной величины.
  • Гистерезис — разные границы переключения туда и обратно.

Связанные темы

Источники