Yoga-mgn.ru

Строительный журнал
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Измерение температуры при помощи NTC термистора и микроконтроллера AVR

Термистор и Arduino

Термистор (терморезистор) — это резистор, который меняет свое сопротивление с изменением температуры.

Технически все резисторы являются термисторами, так как их сопротивление меняется в зависимости от температуры. Но эти изменения очень незначительны и измерить их очень сложно. Термисторы изготавливаются таким образом, чтобы сопротивление изменялось на значительную величину в зависимости от температуры. Около 100 Ом и даже больше при изменении температуры на 1 градус по Цельсию!

Существуют два вида термисторов — с NTC (negative temperature coefficient — отрицательный температурный коэффициент) и с PTC (positive temperature coefficient — положительный температурный коэффициент). В большинстве случаев для измерения температуры используются NTC сенсоры. PTC часто используются в качестве предохранителей — с увеличением температуры растет сопротивление, это приводит к тому, что через них проходит большая сила тока, они нагреваются и срабатывают как предохранители. Достаточно удобно для предохранительных цепей!

Если сравнивать термисторы с аналоговыми датчиками температуры типа LM35, TMP36, цифровыми вроде DS18B20, или термопарами, основными преимуществами термисторов можно назвать:

  • Во первых, они гораздо дешевле чем все перечисленные выше датчики температуры!
  • Их гораздо проще использовать в условиях повышенной влажности, так как это просто резистор.
  • Термисторы работают с любым напряжением (цифровые датчики требуют 3 или 5 В питания логики).
  • Если сравнить термистор и термопару, то первым не нужен усилитель сигнала, чтобы считывать данные. Соответственно, вы можете использовать практически любой микроконтроллер.
  • Соотношение точность показаний/цена — потрясающие. Например, термистор 10 КОм 1% может производить измерения температуры с точностью ±0.25°C! (При условии, что у вас подходящий аналогово-цифровой преобразователь на микроконтроллере).
  • Их практически невозможно поломать или повредить.

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

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

Технические характеристики

Ниже приведены технические характеристики термисторов, которые чаще всего используются в DIY проектах на Arduino:

  • Сопротивление при 25 °C: 10K ±1%.
  • B25/50: 3950 ±1%.
  • Диапазон измеряемых температур от -55°C до 125°C.
  • Диаметр: 3.5 мм / 0.13 дюйма.
  • Длина: 18 дюймов / 45 см.
  • Зависимость сопротивления от температуры.

Обратите внимание на то, что сам термистор может измерять температуру до 125° C, но сами контакты порой рассчитаны на меньшую температуру. То есть, термистор не стоит использовать для контроля температуры слишком горячих жидкостей.

Тестируем термистор

Так как термисторы — по своей сути — резисторы , проверить их не составит труда. Достаточно измерить сопротивление с помощью мультиметра:

При комнатной температуре показания должны составить около 10 КОм. Например, показания при 30°C — 86°F, составляют около 8 КОм.

Подключение термистора к Arduino

Термисторы подключаются к Arduino очень просто. Достаточно использовать монтажную плату, как это показано на рисунке ниже. Так как сопротивление термистора достаточно высокое (около 10 КОм), сопротивление проводников практически не повлияет на результаты измерений.

Методика считывания аналогового напряжения

Для того, чтобы определить температуру, мы должны измерить сопротивление. При этом на Arduino нет встроенного измерителя сопротивления. Но зато есть возможность считать напряжение с помощью аналогово-цифрового конвертера. Так что нам надо преобразовать сопротивление в напряжение. Для этого мы последовательно добавим в схему подключения еще один резистор. Теперь, когда вы будете мерять напряжение по центру, с изменением сопротивления, будет меняться и напряжение.

Скажем, мы используем резистор с постоянным номиналом 10K и переменный резистор, который называется R. При этом напряжение на выходе (Vo), которое мы будем передавать Arduino, будет равно:

Vo = R / (R + 10K) * Vcc,

где Vcc — это напряжение источника питания (3.3 В или 5 В)

Теперь мы хотим подключить все это к Arduino. Не забывайте, что когда вы измеряете напряжение (Vi) с использованием АЦП на Arduino, вы получите числовое значение.

ADC value = Vi * 1023 / Vcc

Теперь мы совмещаем два напряжения (Vo = Vi) и получаем:

ADC value = R / (R + 10K) * Vcc * 1023 / Vcc

Что самое прекрасное, Vcc сокращается!

ADC value = R / (R + 10K) * 1023

То есть вам неважно, какое напряжение питания вы используете!

В конце мы все же хотим получить R (сопротивление). Для этого надо использовать еще одно преобразование, в котором R переносятся в одну сторону:

R = 10K / (1023/ADC — 1)

Отлично. Давайте попробуем, что из этого всего выйдет. Подключите термистор к Arduino как это показано на рисунке ниже:

Подключите один контакт резистора на 10 КОм к контакту 5 В, второй контакт резистора 10 КОм 1% — к одному контакту термистора. Второй контакт термистора подключается к земле. ‘Центр’ двух резисторов подключите к контакту Analog 0 на Arduino.

Теперь запустите следующий скетч для Arduino:

// значение ‘другого’ резистора

#define SERIESRESISTOR 10000

// к какому пину подключается термистор

#define THERMISTORPIN A0

// преобразуем полученные значения в сопротивление

reading = (1023 / reading) — 1;

reading = SERIESRESISTOR / reading;

В результате вы должны получить значения, которые соответствуют измеренным с помощью мультиметра.

Более точные измерения

При проведении измерений аналоговых значений, особенно с ‘шумными’ платами вроде Arduino, можно использовать два метода для улучшения качества показаний. Первый — использовать пин 3.3 В для аналогового сигнала и второй — собрать небольшой массив экспериментальных значений и усреднить их.

Первое. Питание 5 В от Arduino подается напрямую от USB вашего персонального компьютера. В результате сигнал гораздо более зашумленный, чем питание от контакта 3.3 В (этот контакт предусматривает предварительную обработку через интегрированный в плату регулятор). То есть просто подключите 3.3 к контакту AREF и используйте его в качестве источника напряжения VCC.

Второе. Снять несколько показаний для того, чтобы получить усредненное значение также значительно улучшит показания, так как будут учтены внешние шумы. Для усреднения рекомендуется брать не меньше 5 значений.

В результате схема подключения и новый скетч для Arduino будут имеет следующий вид:

В этом скетче учтены оба «апгрейда». В результате вы сможете подучить более точные показания температуры.

// к какому аналоговому контакту мы подключены

#define THERMISTORPIN A0

// сколько показаний берется для определения среднего значения

// чем больше значений, тем дольше проводится калибровка,

// но и показания будут более точными

#define NUMSAMPLES 5

// емкость второго резистора в цепи

#define SERIESRESISTOR 10000

// подключите AREF к 3.3 В и используйте именно этот контакт для питания,

// так как он не так сильно «шумит»

Читать еще:  Как правильно пользоваться перфоратором в разных режимах

// формируем вектор из N значений с небольшой задержкой между считыванием данных

калибровка термометра TP3001

Посл. ред. 16 Мая 15, 11:06 от Ximichestvo

Раз пошла такая пьянка.

Напишу, как я откалибровал свой. (кстати, по вышеприведенной ссылке метод негоден! Нужно лезть глубже внутрь, а не на контакты щупа).
Один TP101 я сломал, пытаясь всунуть его в качестве измерительного в добровар (тут-то выяснилось, что есть ещё WT-1, очень похожий по форме, но с более тонким щупом). WT-1 у меня сдох по непонятной причине — стал показывать прочерки при запуске вместо выхода в рабочий режим). Возникла мысль скрестить ежа и ужа, благо в обоих термометрах используется стеклянный термистор-капля NTC. А заодно отделить показометр от самого щупа кабелем (чтобы не лазить под потолок к верху колонны, а смотреть на цифры в комфортном месте). И вот тут мы и приходим к теме калибровки

Термистор внутри — B57551G1104, тип 8304 (сопротивление 100К при 25 градусах). Если кому интересны технические детали — гугль-ссылка: «Измерение температуры при помощи NTC термистора и микроконтроллера AVR» (прямую ссылку вставить пока не могу).

Схема измерения в TP101 рассчитана точно на такой термистор по его даташиту. А по факту имеющаяся капля от WT-1 оказалась с чуть другими характеристиками, и схему пришлось корректировать.

Итак, сперва измеряем сопротивление капли при 0 и при кипении воды. Для нуля я взял отрезок ПЭТ-бутылки, наморозил в нём глыбу льда и сделал углубление на несколько сантиметров раскалённым гвоздём. Сунул туда щуп и измерил сопротивление — 319,4К (а по даташиту должно быть 332,4К). Термометр с этим щупом при этом показывает 0,9 градуса.
Затем смотрим на барометр или на сайт метеослужбы и на сайт химикатус в табличку «ТЕМПЕРАТУРА КИПЕНИЯ ВОДЫ ПРИ РАЗЛИЧНОМ ДАВЛЕНИИ» (там табличка размечена буквально по единицам ртутного столба). У меня получилось на тот момент 99,3 градуса. Дальше кипятим воду и измеряем сопротивление. У меня получилось 6,65К (а должно быть 6,497К) и показания 98,3

Иными словами, у термометра оказался Уже диапазон, + есть небольшая абсолютная погрешность.
Ремарка: термометров TP101 есть несколько разновидностей. Снаружи выглядят совершенно одинаково. А вот печатные платы внутри разные! И неясно, различаются или нет номиналы деталей на них, или только топология.

Вот плата моего термометра (на просвет напротив фонарика, чтобы было чётко видно схему):
Img_20160521_114603_hdr. калибровка термометра TP3001. Вопросы по электр(он)ике.

В самом низу контакты, куда припаян щуп. Ему в параллель слева под чёрной каплей-чипом резистор R2 (200K). Затем последовательно резисторы R3(500), R4(10К), R5(100) и конденсатор измерительной временной цепочки.
Собственно, измерительной является вся цепочка резисторов. При этом R2 (тот, что в параллель) определяет чувствительность, а R4+R5 — влияют на абсолютную погрешность.

Сперва подбираем R2. Рассчитываем, какая должна быть разница между сопротивлением при 0 и при кипении в случае идеального термистора и имеющегося резистора R2. Затем, зная идеал — подставляем значения реального имеющегося и пересчитываем уже R2, чтобы с нашим экземпляром получился ровно тот же диапазон (при этом абсолютное сопротивление может оказаться другим; это сейчас неважно). Затем так же считаем сопротивление всей схемы (от R2 до R5) при какой-нибудь температуре и «идеальном» термисторе. А потом его же — но уже с реальным экземпляром и пересчитанным R2. Соответственно корректируем цепочку R4+R5.

Лично у меня получилось, заменив 200К на 205,4К (т.е. как раз расширил диапазон), а потом заменив 10К+0,1К на 9,1К+0,82К и подобрав последние по максимуму из погрешности.

Теперь температура льда у меня 0 градусов, а вода кипит точно согласно барометру и таблице (сегодня при 99,7).

Термистор

Необходимые знания: Andurite moodul, LCD moodul, Pingejagur,
Analoog-digitaalmuundur, Analoog-digitaalmuundur, Alfabeetiline LCD,
Andurid

Теория

Термистор – это резистор, сопротивление которого меняется от температуры. Термисторы бывают двух типов: с положительным и отрицательным температурным коэффициентом. У терморезистора с положительным коэффициентом при повышении температуры сопротивление возрастает, а с отрицательным коэффициентом — уменьшается. Их сокращённые названия на английском языке: PTC (positive temperature coefficient) и NTC (negative temperature coefficient).

Использование термистора усложняет нелинеарность температурной зависимости его сопротивления. Зависимость является линеарной только в маленьких пределах, для вычисления нескольких десятков градусов и большей границы измерения подходит экспоненциальное уравнение третьего порядка Стейнхарта-Харта. Для NTC терморезисторов существует следующее упрощенное уравнение с B – параметром:

B – параметр это коэффициент, который обычно дается в спецификации термистора. В то же время, он достаточно постоянен только в известных температурных промежутках, к примеру, 25–50 °C или 25–85 °C. Если измеряемый температурный промежуток больше, то при возможности следует использовать уравнение, находящееся в спецификации.

Сопротивление термистора измеряется косвенно делителем напряжения, где вместо одного резистора устанавливается термистор и входное напряжение которого постоянное. Измеряется выходное напряжение делителя напряжения, которое изменяется вместе с изменением сопротивления термистора. При подаче напряжения через термистор проходит электрический ток, который нагревает термистор из-за его сопротивления и таким образом изменяет сопротивление. Ошибку, возникающую при нагревании термистора, можно компенсировать вычислительно, но легче использовать термистор с большим сопротивлением, который нагревается меньше.

Из-за ограниченного ресурса и отсутствия необходимости применения большой точности, используются заранее вычисленные таблицы взаимозависимых температуры и сопротивления. В таблице, в целом, записаны показания температуры с точным интервалом, в соответствии с сопротивлением датчика, напряжением или значением аналогово-дигитального преобразователя. Для таблицы все экспоненциальное вычисление сделано заранее и в программе нужно всего лишь найти ряд, соответствующий измеренному параметру и прочесть температуру.

Практика

Плата модуля «Датчики» Домашней Лаборатории снабжена термистором типа NTC с номинальным сопротивлением 10 kΩ. При температуре 25-50 °C B – параметр равен 3900. Один вывод термистора подключен к питанию +5 V и другой к каналу 2 (вывод PF2) аналогово-дигитального преобразователя микроконтроллера. С тем же выводом микроконтроллера и землей соединен обычный 10 kΩ резистор, который вместе с терморезистором образует делитель напряжения. Так как имеется дело с NTC термистором, сопротивление которого уменьшается с повышением температуры, тогда в это же время поднимается и выходное напряжение делителя напряжения.

Для поиска температуры целесообразно использовать таблицу преобразования значений температуры и аналого-дигитального преобразователя. Разумно для каждого градуса найти соответствующее значение аналого-дигитального преобразователя из желаемого интервала температур, потому что противоположная таблица будет слишком большой из-за количества 10-битных ADC значений. Для создания таблицы желательно использовать какую-либо программу по вычислению таблиц (MS Excel, Openoffice Calc или другие). При помощи приведенного выше уравнения Стейнхарта-Харта, адаптированного для NTC термисторов, можно найти соответствующее температуре сопротивление терморезистора. Из сопротивления можно вычислить выходное напряжение делителя напряжения и в свою очередь из него — значение ADC. Найденные значения можно следующим образом записать в программу:

Для того, чтобы в таблице найти температуру по значению ADC , можно использовать следующий алгоритм:

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

Читать еще:  Изготовление угловой струбцины своими руками

Приведенные таблица перевода и функция уже имеются в библиотеке Домашней Лаборатории, так что в данном упражнении их самим писать не надо. У функции преобразования в библиотеке есть название thermistor_calculate_celsius. Нужно учитывать, что преобразовании подходит только термистору, находящемуся в модуле «Датчики» Домашней Лаборатории. Для использования других термисторов придется создавать таблицу переводов самому и использовать сложные функции, описанные в инструкции библиотеки. В упражнении для примера программы есть термометр, который измеряет температуру в Цельсиях и отображает это на буквенно-цифровом LCD экране.

Ардуино: терморезистор NTC 100K

Терморезистор (или термистор) — это такой резистор, который меняет свое электрическое сопротивление в зависимости от температуры.

Существует два вида термисторов: PTC — с положительным температурным коэффициентом, и NTC — с отрицательным. Положительный коэффициент означает, что с повышением температуры сопротивление термистора растёт. NTC-термистор ведет себя противоположным способом.

Также термисторы отличаются номинальным сопротивлением, которое соответствует комнатной температуре — 25 C°. Например, популярными являются термисторы с номиналом 100 кОм и 10 кОм. Такие термисторы часто используют в 3D-принтерах.

В этом уроке мы будет использовать термистор NTC 100K в стеклянном корпусе. Вот такой:

Подключение термистора к Ардуино

Чтобы измерить сопротивление термистора, подключим его в качестве нижнего плеча делителя напряжения. Среднюю же точку делителя подключим к аналоговому входу Ардуино — A0. Подобный способ использовался в уроке про фоторезистор.

Подробно об аналоговых входах Ардуино мы говорили на уроке: Аналого-цифровые преобразования — АЦП

Принципиальная схема

Внешний вид макета

Какое сопротивление должен иметь резистор в верхнем плече делителя? Как правило, используют резистор с сопротивлением, совпадающим по порядку с номиналом термистора. В нашем уроке мы используем резистор на R1 = 102 кОм, его легко получить последовательным соединением двух резисторов на 51 кОм.

Программа для вычисления сопротивления термистора

Первая программа, которую мы напишем, будет вычислять сопротивление термистора в Омах.

Результат работы программы:

Можно заметить, что измеренное сопротивление термистора меньше 100 кОм, значит температура окружающей среды ниже 25 C°. Следующий шаг — вычисление температуры в градусах Цельсия.

Программа для вычисления температуры на термисторе

Чтобы вычислить значение температуры используют формулу Стейнхарта — Харта:

Уравнение имеет параметры A,B и C, которые нужно брать из спецификации к датчику. Так как нам не требуется большой точности, можно воспользоваться модифицированным уравнением (B-уравнение):

В этом уравнении неизвестным остается только параметр B, который для NTC термистора равен 3950. Остальные параметры нам уже известны:

  • T0 — комнатная температура в Кельвинах, для которой указывается номинал термистора; T0 = 25 + 273.15;
  • T — искомая температура, в Кельвинах;
  • R — измеренное сопротивление термистора в Омах;
  • R0 — номинальное сопротивление термистора в Омах.

Модифицируем программу для Ардуино, добавив расчет температуры:

Уже лучше! Программа показывает нам температуру в градусах Цельсия. Как и ожидалось, она немного ниже 25 C°.

Измерение температуры с помощью NTC термистора

В начале августа я запустил собранный из подручного материала солнечный водонагреватель и потребовалось к нему собрать простенькое термореле, чтобы циркуляционный насос включался только тогда, когда температура солнечной панели (а это, к слову сказать, старый плоский радиатор отопления, утепленный снизу и покрашенный в черный и накрытый стеклом сверху) достигнет, скажем 40 градусов.

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


Картинка из вики насчет терморезистора и его характеристики.

После упорных поисков результат был достигнут в виде исходника. Мне из него потребовалась только формула расчета сопротивления термистора и вычисления температуры. Здесь же были приведены коэффициенты на конкретную модель термистора. В принципе, к моей задаче эти коэффициенты подошли с приемлемой точностью.
Если вам известна модель термистора, то коэффициенты нужно подставить из даташита или рассчитать по аппноуту из вложения.

Подключается термистор по такой схеме:

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

Проверял я все это дело по такому принципу: подключил к одному микроконтроллеру датчик DS18B20 и термистор, а потом соединил их через термопасту. Расхождение при комнатной температуре получилось около пол-градуса, при 60-70 — около двух градусов. Но это не термостатировано, то есть, может быть, разница в корпусах увеличила расхождение.

Для особо желающих, во вложение добавил аппноут по расчету коэффициентов Стеинхарда-Хайта для произвольного термистора.

  • NTC,
  • термистор,
  • измерение,
  • температура,
  • датчик
  • +2
  • 11 августа 2013, 21:57
  • antonluba
  • 1

Комментарии ( 47 )

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

странное предложение
если у тебя будет нестабильное напряжение, то и на ацп у тебя будет колебаться независимо от температуры, а саморазогрев тут никаким боком

сколько у тебя заняла готовая прошивка с этими запятыми и почему нужно было ставить терморезистор вместо цифрового?
насколько хорош этот солнечный коллектор?

  • kalobyte-ya
  • 11 августа 2013, 22:20

сколько у тебя заняла готовая прошивка

почему нужно было ставить терморезистор вместо цифрового?

насколько хорош этот солнечный коллектор?

  • antonluba
  • 11 августа 2013, 22:30
  • Mihail
  • 11 августа 2015, 09:53

сколько у тебя заняла готовая прошивка

Посмотрел:
Program: 8650 bytes (52.8% Full)
(.text + .data + .bootloader)

Data: 159 bytes (15.5% Full)
(.data + .bss + .noinit)

  • antonluba
  • 12 августа 2013, 12:07

не проще было сразу взять какой-нибудь линейный датчик?
у термисторов еще и разброс огромный, придется калибровать каждый.

  • reptile
  • 11 августа 2013, 22:22

не проще было сразу взять какой-нибудь линейный датчик?

у термисторов еще и разброс огромный, придется калибровать каждый.

  • antonluba
  • 11 августа 2013, 22:33
  • MrYuran
  • 12 августа 2013, 08:51

Вы сказали, что точность Вас не напрягает, и что 1-2 градуса роли не играют. Поэтому возникает вопрос — а зачем так сложно?

Табличный вариант перевода ADC-значений в градусы Вы не рассматривали?

При таком подходе можно будет отказаться от ресурсоёмких библиотек с плавучкой. Тем более, что Вы используете еще и функции log и pow. Следовательно уменьшаться требования к размеру стека (RAM) и размеру кода (flash). Кроме того, функция перевода попугаев в градусы будет выполняться быстрее.

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

  • zhevak
  • 11 августа 2013, 22:37
  • antonluba
  • 11 августа 2013, 23:03
  • GYUR22
  • 11 августа 2013, 23:33
  • antonluba
  • 12 августа 2013, 09:58
  • GYUR22
  • 12 августа 2013, 11:19
  • GYUR22
  • 12 августа 2013, 12:08

Да и еще кое что обычно подтяжку используют а NTC ставят на землю

Измеряем температуру c помощью термистора

Температура является одним из наиболее распространенных параметров, регистрируемых встраиваемой системой. Для таких измерений существует широкий выбор датчиков температуры. Диапазон типов датчиков простирается от экзотических детекторов черного тела до простейших резистивных сенсоров, включая все множество типов, находящихся между этими полюсами. В этой статье я кратко расскажу о терморезисторах с отрицательным температурным коэффициентом (NTC термисторы) – одних из самых распространенных датчиков температуры, используемых в различных встраиваемых системах.

Читать еще:  Как сделать лазер своими руками в домашних условиях

Термисторы

Термистор представляет собой резистивный элемент, как правило, изготовленный из полимера или полупроводника, сопротивление которого изменяется в зависимости от температуры. Этот тип устройства не следует путать с резистивным датчиком температуры (RTD). Обычно RTD гораздо точнее, стоят дороже и охватывают более широкий диапазон температур.

Существуют два типа термисторов, отличающихся характером зависимости сопротивления от температуры. Если значение сопротивления уменьшается с ростом температуры, мы называем это устройство термистор с отрицательным температурным коэффициентом (NTC). Если сопротивление с ростом температуры возрастает, это устройство известно как термистор с положительным температурным коэффициентом (PTC). Как правило, PTC-устройства используются как средства защиты, а NTC-устройства применяются в качестве термодатчиков. Очень часто NTC термисторы применяются для контроля PN-переходов широкополосных лазерных диодов.

Еще одной характеристикой терморезистора является стоимость. В небольших партиях типичный термистор стоит, как правило, от $0.05 до $0.10 за штуку. Низкая цена и простота подключения делают эти устройства весьма привлекательными для встраиваемых приложений.

Типичный диапазон измерения температуры термистора составляет от –50 °C до +125 °C. Большинство приложений, использующих термисторы, работает в диапазоне от –10 °C до +70 °C, или, как его называют, в коммерческом диапазоне температур окружающей среды.

Типовая погрешность сопротивления термистора достаточно велика. Большинство термисторов изготавливается с допустимым отклонением сопротивления ±5%.

Однако их точность вполне приемлема. Как правило, мы можем рассчитывать, что она находится в диапазоне от ±0.5% до ±1.0%.

Выражение, связывающее температуру и сопротивление термистора, известно как уравнение Стейнхарта-Харта. Это нелинейное уравнение показано ниже.

На Рисунке 1 показан график зависимости сопротивления от температуры для NTC термистора ERTJZET472 компании Panasonic. Этот график показывает, что на линейной шкале зависимость сопротивления от температуры очень нелинейна.

Рисунок 1.График зависимости сопротивления от температуры
для NTC термистора компании Panasonic.

Как правило, термисторы оцениваются по параметру, известному как значение R25. Это типовое сопротивление термистора при 25 °C. Значение R25 для данного термистора составляет 4700 Ом.

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

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

Приближение первого порядка показывает нам, что сопротивление термистора примерно обратно пропорционально температуре. Учитывая это, мы можем создать схему обратной пропорции, чтобы попытаться линеаризовать кривую зависимости сопротивления от температуры. Из Рисунка 2 видно, как это делается.

Рисунок 2.Схема линеаризации характеристики
NTC термистора.

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

Показания температуры зависят только от сопротивления смещения (RB) и сопротивления термистора (RTH). Мы можем назвать их отношение коэффициентом деления (D). Выражение для коэффициента деления не отличается от выражения для простого делителя напряжения (Уравнениие 2).

На Рисунке 3 показан набор кривых для различных значений сопротивления смещения линеаризующей цепи термистора. Эти графики также демонстрируют достаточную степень линейности в диапазоне от 0 до 70 °C; при этом наилучшая линейность достигается с более низким сопротивлением резистора смещения.

Рисунок 3.График зависимости коэффициента деления от
температуры при различных значениях

сопротивления смещения.

Другим, более хорошим способом взглянуть на это является изображение на графике разности между значениями температуры, взятыми из документации, и линеаризованными значениями. Такой график приведен на Рисунке 4. Этот рисунок также демонстрирует, что лучшая линейность достигается при меньшем значении сопротивления смещения. График показывает, что резистор номиналом 2 кОм даст линейность примерно ±3 °C в диапазоне температур от 0 до 70 °C.

Рисунок 4.Относительные ошибки для различных сопротивлений
резисторов смещения.

В этом примере линейное выражение для зависимости температуры от коэффициента сопротивлений при номинале резистора смещения 2 кОм приведено в Уравнении 3.

T – температура в градусах Цельсия,
D – коэффициент деления.

На резистивный делитель и АЦП подается одно и то же опорное напряжение. Таким образом, мы можем легко вывести зависимость коэффициента деления от показаний АЦП. Если предположить, что преобразователь имеет разрядность N бит, то получим соотношение, показанное в Уравнении 4.

D – коэффициент деления,
ADC – показания АЦП,
N – разрядность АЦП (количество бит).

Подставив Уравнение 4 в Уравнение 3, получим выражение, связывающее показания АЦП с температурой. Оно представлено Уравнением 5.

Выводы

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

Одним из основных преимуществ использования термисторов является их цена. Как правило, при покупке в небольших количествах эти датчики стоят примерно от $0.05 до $0.10. Точность для этих датчиков вполне приличная. Обычно допуск сопротивления или допуск R25 для этих устройств составляет от ±3% до ±5%. Поэтому схема линеаризации с нелинейностью ±3 °C также может считаться удовлетворительной.

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

  1. Датчики с PN-переходом. Низкая стоимость, приемлемая точность.
  2. Микросхемы датчиков температуры. Обычно они представляют собой некоторую разновидность датчиков с PN-переходом.
  3. Резистивные датчики температуры (RTD). Они, как правило, очень точны и значительно дороже.
  4. Термопары. Их диапазон измерения обычно намного больше, а цена сравнительно невысока.
  5. Инфракрасные датчики. Чаще всего их используют для измерения тепловых излучений, уровни которых затем преобразуют в температуру.

Это лишь несколько из тех методов, с помощью которых можно измерять температуру. О некоторых из них, возможно, я смогу рассказать в будущей статье.

А как вы измеряете температуру в своей встраиваемой системе? Вы видите, что я показал очень дешевый способ измерения этого физического параметра. Но помимо него существует еще уйма других методов.

Перевод: Mikhail R по заказу РадиоЛоцман

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector