Как получить значение температуры на основе измерения термистора
Все продукты, которые я разработал за свою карьеру, имели в себе ту или иную температурную схему. В самых простых и наиболее экономичных схемах для измерения температуры используется термистор с отрицательным температурным коэффициентом (NTC) или положительным температурным коэффициентом (PTC). Самая простая схема основана на резисторном делителе, подключенном к недорогому микроконтроллеру (MCU) с аналого-цифровым преобразователем (АЦП). В этой статье объясняется, как использовать термистор NTC или PTC с АЦП, а также различные методы преобразования результатов измерений АЦП в полезное значение температуры.
Типичная схема термистора обеспечивает напряжение (VSense), которое подается на вход АЦП; Затем АЦП преобразует это напряжение в цифровое значение LSB (младший значащий бит), пропорциональное входному напряжению. Обычное разрешение АЦП для многих недорогих микроконтроллеров составляет 12 бит, поэтому в формулах в этой статье будет использоваться 12-битное разрешение. На рисунке 1 показаны схемы делителя напряжения и постоянного тока.
Вы можете использовать уравнение 1 для преобразования измеренного значения LSB 12-битного АЦП в напряжение:
где разрешение АЦП (12-битный АЦП (212)) составляет всего 4096 бит, VREF составляет 3,3 В, а измеренное значение младшего разряда АЦП составляет 2024 (пример значения младшего разряда АЦП на тестовой плате семейства термисторов TMP61 компании Texas Instruments (TI)).
Например:
Уравнение 2 позволяет рассчитать сопротивление на основе VSense делителя напряжения:
Например:
Уравнение 3 рассчитывает сопротивление по постоянному току Ibias:
где Ibias — 200 мкА (стандартный ток по умолчанию для детали семейства TMP61), а VSense — 1,63 В.
Например:
После преобразования напряжения в представление АЦП существует несколько способов получить фактическую температуру из напряжения VSense термистора. Самый распространенный метод использует справочную таблицу (LUT), также известную как таблица сопротивлений, обычно предоставляемую производителем термистора. Таблица LUT 1°C содержит 166 элементов и должна храниться в вашем контроллере, но при этом используется память контроллера. Чтобы уменьшить количество элементов, вы можете использовать LUT 5°C, но тогда в расчете может возникнуть некоторая линейная ошибка. Для LUT 5°C потребуется 33 элемента, но никто не хочет видеть разрешение 5°C, поэтому потребуется дальнейшая обработка LUT, чтобы получить разрешение выше 5°C или 1°C. Я буду обсуждать это дальше в разделе «Линейная интерполяция».
Другой метод — использовать уравнение Стейнхарта-Харта, основанное на аппроксимации полиномиальной кривой 3-го порядка. Для выполнения потребуются математические вычисления в естественном журнале, и для выполнения вычислений у вас должен быть контроллер с плавающей запятой или математические библиотеки с плавающей запятой. Уравнение Стейнхарта-Харта более точное, чем LUT.
PTC могут использовать полиномиальное уравнение, учитывая линейный выход устройства. Полиномиальные уравнения — наиболее точный способ получить температуру с помощью термистора. Полином — это математическое выражение переменных, которое включает в себя только операции сложения, вычитания, умножения и неотрицательных целых чисел. Другой способ описания полиномов заключается в том, что они представляют собой уравнение аппроксимации кривой наклона. Вы должны применить аппроксимацию полиномом самостоятельно, а затем решить функцию регрессии (температуру, основанную на аппроксимации кривой), чтобы получить температуру. Большинство PTC основаны на полиномах.
Не беспокойтесь; как только вы освоите полиномы, вы получите лучшую точность; плюс вам не понадобится LUT в вашем контроллере. Это простые математические функции, которые могут обрабатываться быстрее, чем LUT с интерполяцией. У TI есть инструмент проектирования, который может предоставить вам LUT или полином четвертого порядка и функцию регрессии с примерами того, как применять эти математические функции в коде C для вашего контроллера, чтобы получить наиболее точные значения температуры от термистора.
Температура LUT обычно находится в диапазоне от -40°C до 125°C, но может варьироваться в зависимости от температурных ограничений термистора. Существует два типа LUT: 1°C и 5°C. См. примеры на рисунке 2.
Метод LUT работает следующим образом: