четверг, 10 мая 2018 г.

Измерение температуры термистором (терморезистором)

Термистор (или терморезистор) - это резистор активное сопротивление которого изменяется при изменении температуры и который предназначен для измерения им температуры или каким либо другим способом использования этого эффекта в электронной аппаратуре. Активное сопротивление обычных резисторов и др. деталей тоже меняется при изменении температуры но терморезисторы изготавливают такими чтобы это изменение можно было удобно и просто использовать а обычные резисторы наоборот стараются сделать такими чтобы изменение их сопротивления при изменении температуры не влияло на работу устройств в которых эти резисторы работают. Терморезистор - это один из самых недорогих и простых элементов для изготовления электронных измерителей температуры (ссылки на терморезисторы - http://got.by/2i0sqp, http://got.by/2i0t08, http://got.by/2i0tsf). Помимо терморезисторов есть другие элементы для изготовления измерителей температуры, например:
 термопары (Подключение термопары к ардуино - http://electe.blogspot.ru/2017/04/blog-post.html), бесконтактные инфракрасные датчики. Термопары нужно использовать при изменении высоких температур которые не сможет выдержать терморезистор а бесконтактные датчики для измерения температур тех вещей к которым нельзя плотно приложить датчик например бесконтактным датчиком можно измерять температуру кислоты, также бесконтактные датчики можно использовать для измерения температуры на расстоянии, в других случаях целесообразно использовать терморезисторы. Давайте рассмотрим на примере как можно измерить температуру терморезистором NTC 3950 с активным сопротивлением 100 кОм при температуре 25 градусов Цельсия. Для такого термистора есть специальная таблица зависимости его сопротивления от температуры с шагом в 1 градус:
Таблица очень большая т.к. там значения от -30 градусов до +300 градусов с шагом в 1 градус. Измеряя сопротивление терморезистора и находя его в таблице можно определить температуру с точностью в 1 градус. Но в ручную это делать очень не просто поэтому для этой работы надо приспособить микроконтроллер. К сожалению, в микроконтроллерах обычно нет функции измерения сопротивления но зато часто в них присутствует АЦП т.е. аналого цифровой преобразователь и очень часто их бывает больше одного. Микроконтроллер с АЦП можно применить для измерения температуры терморезистором. Для того чтобы это реализовать, помимо микроконтроллера и терморезистора ещё понадобится дополнительный резистор с постоянным сопротивлением и конечно же вся обвязка микроконтроллера и средство вывода с него информации. Для простоты можно использовать Ардуино подключённое к компьютеру и тогда останется разобраться только с резисторами и АЦП. Для измерения температуры терморезистором нужен делитель напряжения, например такой как на рисунке:
Рисунок 1 - Подключение терморезистора к АЦП микроконтроллера

Таким образом мы сможем измерить напряжение на терморезисторе но напряжение - это не сопротивление. Чтобы найти сопротивление нам помимо напряжения U на терморезисторе надо ещё знать: 1) напряжение питания Up, 2) сопротивление резистора R1 который вместе с терморезистором Rt образуют делитель напряжения. Если мы знаем эти три величины то мы сможем определить сопротивление резистора Rt. Теперь осталось понять как это сделать?
Рисунок 2 - Величины которые даны и величина которую надо найти

Есть некоторое количество способов как это можно сделать. Рассмотрим самый простой из них, для этого введём ещё одну величину - ток делителя:
Рисунок 3 - Ток делителя

Далее мы пренебрегаем током который входит (или выходит) в АЦП микроконтроллера т.е. считаем что этого тока нет а есть только ток делителя. Током который идёт в АЦП мы пренебрегаем по тому что он очень маленький и почти не влияет на показания АЦП. Зная этот ток, по закону Ома, можно найти сопротивление терморезистора Rt:
Рисунок 4 - Нахождение сопротивление термистора Rt по закону ома

Теперь осталось найти ток делителя. Для этого мы воспользуемся Вторым Законом Кирхгофа и законом Ома (который является частным случаем Второго Закона Кирхгофа). По второму закону Кихгофа выясняем напряжение на резисторе R1, оно равно разности напряжения питания Up и напряжения U на терморезисторе полученного с АЦП. Далее, по закону Ома, находим ток делителя:
Рисунок 5 - Нахождение тока делителя

Теперь подставляем второе выражение в первое и получаем формулу для расчёта сопротивления терморезистора:
Рисунок 6 - Расчёт сопротивления терморезистора Rt

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

Сначала рассмотрим кусок кода перед функцией setup
1 в самом верху мы задаём константы, колличество элементов в массиве с температурами которое равно колличеству элементов в массиве с сопротивлениями и шаг температуры для заполнения массива с температурами в цикле
2 Далее обьявляются эти массивы и вспомогательная переменная для заполнения массива температурами
3 tPoint - это функция для более точного рассчёта температуры в найденном промежутке
4 rT - это функция рассчёта сопротивления терморезистора + дополнительные переменные для этого рассчёта
5 и в конце переменная которая будет хранить найденное сопротивление
   теперь рассмотрим тело ф-ии Setup
6 в цикле заполняем массив температурами
7 массив с сопротивлениями терморезистора заполняем, к сожалению, в ручную
8 после заполнения массива инициализируем последовательный порт
   теперь рассмотрим функцию loop
9 сначала определяем напряжение с АЦП
10 потом через описанную ранее функцию находим сопротивление терморезистора
11 после чего методом перебора находим диапазон температур в котором находиться настоящая температура
12 находим настоящую температуру и выводим её в монитор последовательного порта
13 делаем небольшую задержку чтобы успевать рассматривать изменение температуры
Скачать скетч можно по ссылке https://yadi.sk/d/WRjJG_sy3VfHZD

Посмотреть результат работы измерителя температуры и всю эту информацию в видеоформате можно в видео:

КАРТА БЛОГА (содержание)