Термистор (или терморезистор) - это резистор активное сопротивление которого изменяется при изменении температуры и который предназначен для измерения им температуры или каким либо другим способом использования этого эффекта в электронной аппаратуре. Активное сопротивление обычных резисторов и др. деталей тоже меняется при изменении температуры но терморезисторы изготавливают такими чтобы это изменение можно было удобно и просто использовать а обычные резисторы наоборот стараются сделать такими чтобы изменение их сопротивления при изменении температуры не влияло на работу устройств в которых эти резисторы работают. Терморезистор - это один из самых недорогих и простых элементов для изготовления электронных измерителей температуры (ссылки на терморезисторы - 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 градус. Но в ручную это делать очень не просто поэтому для этой работы надо приспособить микроконтроллер. К сожалению, в микроконтроллерах обычно нет функции измерения сопротивления но зато часто в них присутствует АЦП т.е. аналого цифровой преобразователь и очень часто их бывает больше одного. Микроконтроллер с АЦП можно применить для измерения температуры терморезистором. Для того чтобы это реализовать, помимо микроконтроллера и терморезистора ещё понадобится дополнительный резистор с постоянным сопротивлением и конечно же вся обвязка микроконтроллера и средство вывода с него информации. Для простоты можно использовать Ардуино подключённое к компьютеру и тогда останется разобраться только с резисторами и АЦП. Для измерения температуры терморезистором нужен делитель напряжения, например такой как на рисунке:
Таким образом мы сможем измерить напряжение на терморезисторе но напряжение - это не сопротивление. Чтобы найти сопротивление нам помимо напряжения U на терморезисторе надо ещё знать: 1) напряжение питания Up, 2) сопротивление резистора R1 который вместе с терморезистором Rt образуют делитель напряжения. Если мы знаем эти три величины то мы сможем определить сопротивление резистора Rt. Теперь осталось понять как это сделать?
Есть некоторое количество способов как это можно сделать. Рассмотрим самый простой из них, для этого введём ещё одну величину - ток делителя:
Далее мы пренебрегаем током который входит (или выходит) в АЦП микроконтроллера т.е. считаем что этого тока нет а есть только ток делителя. Током который идёт в АЦП мы пренебрегаем по тому что он очень маленький и почти не влияет на показания АЦП. Зная этот ток, по закону Ома, можно найти сопротивление терморезистора Rt:
Теперь осталось найти ток делителя. Для этого мы воспользуемся Вторым Законом Кирхгофа и законом Ома (который является частным случаем Второго Закона Кирхгофа). По второму закону Кихгофа выясняем напряжение на резисторе R1, оно равно разности напряжения питания Up и напряжения U на терморезисторе полученного с АЦП. Далее, по закону Ома, находим ток делителя:
Теперь подставляем второе выражение в первое и получаем формулу для расчёта сопротивления терморезистора:
Теперь по этой формуле и таблице можно находить температуру но использовать все 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
Посмотреть результат работы измерителя температуры и всю эту информацию в видеоформате можно в видео:
КАРТА БЛОГА (содержание)
термопары (Подключение термопары к ардуино - 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.
Теперь всё готово для написания скетча для Ардуины.
Давайте рассмотрим скетчь:
1 в самом верху мы задаём константы, колличество элементов в массиве с температурами которое равно колличеству элементов в массиве с сопротивлениями и шаг температуры для заполнения массива с температурами в цикле
2 Далее обьявляются эти массивы и вспомогательная переменная для заполнения массива температурами
3 tPoint - это функция для более точного рассчёта температуры в найденном промежутке
4 rT - это функция рассчёта сопротивления терморезистора + дополнительные переменные для этого рассчёта
5 и в конце переменная которая будет хранить найденное сопротивление
теперь рассмотрим тело ф-ии Setup
6 в цикле заполняем массив температурами
7 массив с сопротивлениями терморезистора заполняем, к сожалению, в ручную
8 после заполнения массива инициализируем последовательный порт
теперь рассмотрим функцию loop
9 сначала определяем напряжение с АЦП
10 потом через описанную ранее функцию находим сопротивление терморезистора
11 после чего методом перебора находим диапазон температур в котором находиться настоящая температура
12 находим настоящую температуру и выводим её в монитор последовательного порта
13 делаем небольшую задержку чтобы успевать рассматривать изменение температуры
Скачать скетч можно по ссылке https://yadi.sk/d/WRjJG_sy3VfHZD
КАРТА БЛОГА (содержание)