Сегодня существует огромное множество нелинейных сопротивлений, предназначенных для измерения температуры. Самыми популярными из них являются NTC термисторы на 10 кОм. В статье я описываю способ измерения температуры любого NTC термистора с любым номинальным сопротивлением при помощи одного АЦП микроконтроллера. Предоставляю готовый код функции на Си.
На схеме изображен симметричный делитель напряжения на постоянном резисторе высокой точности и нелинейном терморезисторе. Терморезистор расположен внизу делителя и, для исключения наводок, шунтирован керамической емкостью на 100 нФ (0.1 мкФ). Сигнал NTC PWR уходит напрямую на линию микроконтроллера со входом АЦП.
Совершенно неважно, каким напряжением вы питаете АЦП (AVDD), мы работаем только с "отрезками" дискретных значений. Важно лишь, чтобы напряжение питания АЦП (AVDD) питало и этот делитель тоже.
// adc - измеренное значение АЦП, adcMaxValue - максимально возможное значение АЦП. Например 4096 для 12-битных
// ntcValue - номинальное сопротивление термистора, например 10000 Ом
// B - коэффициент температурной чувствительности
float getNTCTemperature(uint16_t adc, uint16_t adcMaxValue, float ntcValue, float B) {
float R2; // Сопротивление NTC
float T = 0; // Температура в Кельвинах
// Вычислить отрезки
float R1adc = adcMaxValue - adc; // Получить отрезок верхнего резистора
float D = R1adc / (float)(adc + 1); // Поличить коэфф. отрезков
R2 = ntcValue / D; // Получить сопротивление NTC в Омах
T = 1.0f / ((1.0f/298.15f) + (1.0f/B) * log(R2/ntcValue));
return (T - 273.15f); // Вернуть температуру в градусах Цельсия
}
Номинальное сопротивление терморезистора знать недостаточно, необходимо еще и узнать параметр B - коэффициент температурной чувствительности. Это значение всегда приводится в Datasheet на терморезистор. Ниже пример такого приведения для разных номенклатур:
Подставляя все необходимые значения в параметры вышеприведенной функции, вы получите достаточно точное измерение температуры. Однако не стоит забывать и о погрешностях самого АЦП, а для этого необходимо произвести несколько замеров, вычислить среднее арифметическое и приступать к расчетам.
Обсудить эту статью в Telegram (клик)