- Измерение температуры при помощи NTC термистора и микроконтроллера AVR
- Характеристика NTC термистора
- Вычисление температуры
- Схемы подключения
- Подключение термистора
- Подключение к АЦП микроконтроллера ATmega
- Расчёт таблицы значений
- Пример использования
- Измеряем температуру c помощью термистора
- Термисторы
- Выводы
Измерение температуры при помощи NTC термистора и микроконтроллера AVR
Автор: Погребняк Дмитрий
Click here to read this article in English.
Одним из вариантов для измерения температуры является использование термисторов. Среди преимуществ термистора можно выделить большое значение температурного коэффициента, то есть значительное изменение сопротивления в зависимости от температуры (порядка 2-10% на Кельвин). Термисторы бывают двух типов: с положительным температурным коэффициентом (PTC, Positive Temperature Coefficient), то есть увеличивающие своё сопротивление с увеличением температуры, и с отрицательным (NTC, Negative Temperature Coefficient) – уменьшающие сопротивление с возрастанием температуры. Речь в данной статье пойдёт про вторые, и про их использования для измерения температуры в сочетании с микроконтроллерами AVR
Характеристика NTC термистора
Термисторы характеризуются рядом параметров, такими, как максимальный допустимый ток, точность, сопротивление при определённой температуре (как правило, при 25°С). Одним из параметров, характеризующим степень изменения сопротивления в зависимости от температуры является коэффициент температурной чувствительности, обозначаемый B. Этот коэффициент рассчитывается на основе значений сопротивления при двух конкретных значениях температур. Во многих случаях этими температурами выбираются 25°С и 100°С. Обычно температуры, использованные при вычислении коэффициента указываются после буквы, например B25/100. Коэффициент B измеряется в Кельвинах и вычисляется по следующей формуле:
где R1 и R2 — значения сопротивлений при температурах соответственно T1 и T2, выраженных в Кельвинах.
Из этой формулы следуют и обратные:
Вычисление температуры
Термисторы обладают высокой степенью нелинейности параметров, и термисторы различных моделей, даже при одинаковых значениях параметра B25/100 могут по разному изменять сопротивление в зависимости от температуры. Поэтому формула [3] может лишь приблизительно оценить температуру. Кроме того, такая формула подразумевает сложные вычисления, которые требуют много процессорного времени, что часто является неприемлемым. Более простым и эффективным подходом является хранение таблицы, в которую заносятся предварительно рассчитанные значения, возвращаемые АЦП при тех, или иных температурах. Для экономии памяти можно хранить значения только для некоторых точек, искать их в таблице двоичным поиском, а промежуточные значения получать линейной интерполяцией. Для измерений температуры окружающего воздуха с точностью до 0.3°C, достаточно хранить значения с шагом 5°C. Если значения лежат в пределах 16 бит (и занимают 2 байта), то для хранения такой таблицы для диапазона измеряемых температур от -30 до 70 градусов потребуется всего 40 байт. Точность измерений можно повысить, уменьшив шаг таблицы. Так при шаге 2°C можно добиться точности до 0.1°C на широком диапазоне измерений.
Производители термисторов, как правило, приводят таблицы показывающие изменение сопротивления в зависимости от температур. Значения в этих таблицах также привязаны к сетке температур с некоторым шагом (например, 5°C). Используя формулы [1] и [2] можно с достаточной точностью интерполировать табличные значения.
Схемы подключения
Подключение термистора
Схема A |
Схема B |
Схема C |
Схема D |
Наиболее простым вариантом подключения является схема A. При выборе номинала резистора RA примерно равным сопротивлению термистора в районе измеряемых температур, значения U будут изменяться ближе к линейным, что обеспечит большую точность при интерполяции табличных значений.
Выбирая номиналы RA и термистора, следует учесть, что протекающий через термистор ток вызывает его нагрев и, как следствие, искажение показаний. Желательно чтобы мощность на термисторе не превышала 1 мВт. А значит, при напряжении U0 = 5В, RA должен быть как минимум, 10 килоОм. Сопротивление термистора в измеряемом диапазоне должно иметь примерно тот же порядок.
Схема B призвана ограничить мощность, рассеиваемую на термисторе.
Схемы C и D являются обратными к A и B. Их имеет смысл использовать, если требуется измерять низкие температуры, когда референтное значение АЦП (Uref) ниже U0.
Подключение к АЦП микроконтроллера ATmega
Подключение АЦП микроконтроллеров ATmega |
У контроллеров ATmega для снижения шумов используется отдельная линия питания для модуля АЦП. Инструкция рекомендует подключать эти входы через фильтр: индуктивность L = 10мкГн, и конденсатор C2 = 0,1мкФ.
Микроконтроллер может использовать либо внешнее референтное напряжение для АЦП, либо внутреннее (2,56В или 1,1В), либо, в качестве такового, использовать напряжение питания АЦП: AVCC. При использовании внешнего напряжения, оно должно быть подано на вход AREF. При использовании AVCC, или внутреннего напряжения 2,56В, между этим входом и землёй должен быть размещён конденсатор (на схеме C1). Инструкция не даёт чёткого указания для выбора ёмкости конденсатора, рекомендую использовать керамический конденсатор 0,1мкФ и более.
Для снижения измеряемых шумов, рекомендую термистор также подключать к фильтрованному напряжению параллельно AVCC, и настроить на использование этого напряжения в качестве референтного.
Дополнительно, для подавления шумов возникающих на линиях, можно установить конденсатор C3 в диапазоне 1-100нФ.
Следует учесть, что помимо модуля АЦП, вход AVCC запитывает также некоторые из портов ввода/вывода (как правило, на тех же выводах, что используются для АЦП). Использование этих портов на вывод и подключение к ним нагрузки может создать дополнительные шумы в работе АЦП.
Чтобы нивелировать шумы, возникающие на АЦП, рекомендую провести замеры несколько раз подряд и просуммировать полученные значения. В микроконтроллерах ATmega АЦП – 10-разрядный. Просуммировав результаты 64 подряд идущих измерений, результат остаётся в пределах 16-битного беззнакового целого, что не потребует дополнительной памяти для сохранения таблицы значений. При большем числе измерений также можно оставаться в пределах 16 бит, соответствующим образом сдвигая или деля результат.
Расчёт таблицы значений
Вашему вниманию предлагаю скрипт для онлайн расчёта таблицы значений АЦП.
Расчёт значений ведётся либо по двум значениям температур и сопротивлений, либо вводится списком, либо используется одна из предзагруженных R/T характеристик. В настоящее время загружены R/T характеристики термисторов фирмы Siemens/EPCOS. Выберите подходящую из списка.
Загруженные характеристики даны с шагом 5°С, при выборе меньшего шага сетки, значения получаются путём интерполяции по формулам [1] и [2] двух ближайших значений из таблицы.
При построении таблицы автоматически соответствующим образом обновляется пример исходного кода под ней.
Внимание! Так как параметры термисторов в значительной мере нелинейны, расчёт по двум значениям сопротивлений, либо по значению и коэффициенту будет очень приблизительным. Вычисленное значение температуры при измерении высоких, или низких температур в таком случае может значительно (на десятки градусов) отличаться от актуальной.
Чтобы узнать подходящий тип R/T характеристики для вашего термистора, скачайте документацию, данную заводом изготовителем.
Сводная таблица для некоторых моделей термисторов Siemens/Epcos приведена ниже. Нажмите на код R/T характеристики, чтобы подгрузить параметры в форму ниже:
Код | Сопротивление при 25°С, кОм | R/T характеристика | B25/100, К | |
B57891S , выводной 4,5мм (datasheet, pdf) | ||||
B57891S0222+008 | 2,2 | 1008 | 3560 | |
B57891S0502+008 | 5 | 2003 | 3980 | |
B57891S0103+008 | 10 | 4901 | 3950 | |
B57891S0203+008 | 20 | 2904 | 4300 | |
B57891S0104+008 | 100 | 4003 | 4450 | |
B57891M , выводной 3,5мм (datasheet, pdf) | ||||
B57891M0102+000 | 1 | 1009 | 3930 | |
B57891M0152+000 | 1,5 | 1008 | 3560 | |
B57891M0222+000 | 2,2 | 1013 | 3900 | |
B57891M0332+000 | 3,3 | 2003 | 3980 | |
B57891M0472+000 | 4,7 | 2003 | 3980 | |
B57891M0682+000 | 6,8 | 2003 | 3980 | |
B57891M0103+000 | 10 | 4901 | 3950 | |
B57891M0153+000 | 15 | 2004 | 4100 | |
B57891M0223+000 | 22 | 2904 | 4300 | |
B57891M0333+000 | 33 | 2904 | 4300 | |
B57891M0473+000 | 47 | 4012 | 4355 | |
B57891M0683+000 | 68 | 4012 | 4355 | |
B57891M0104+000 | 100 | 4003 | 4450 | |
B57891M0154+000 | 150 | 2005 | 4600 | |
B57891M0224+000 | 220 | 2005 | 4600 | |
B57891M0334+000 | 330 | 2007 | 4830 | |
B57891M0474+000 | 470 | 2006 | 5000 | |
B57164K , выводной 5,5мм (datasheet, pdf) | ||||
B57164K0471+000 | 0,47 | 1306 | 3450 | |
B57164K0681+000 | 0,68 | 1307 | 3560 | |
B57164K0102+000 | 1 | 1011 | 3730 | |
B57164K0152+000 | 1,5 | 1013 | 3900 | |
B57164K0222+000 | 2,2 | 1013 | 3900 | |
B57164K0332+000 | 3,3 | 4001 | 3950 | |
B57164K0472+000 | 4,7 | 4001 | 3950 | |
B57164K0682+000 | 6,8 | 2903 | 4200 | |
B57164K0103+000 | 10 | 2904 | 4300 | |
B57164K0153+000 | 15 | 1014 | 4250 | |
B57164K0223+000 | 22 | 1012 | 4300 | |
B57164K0333+000 | 33 | 1012 | 4300 | |
B57164K0473+000 | 47 | 4003 | 4450 | |
B57164K0683+000 | 68 | 2005 | 4600 | |
B57164K0104+000 | 100 | 2005 | 4600 | |
B57164K0154+000 | 150 | 2005 | 4600 | |
B57164K0224+000 | 220 | 2007 | 4830 | |
B57164K0334+000 | 330 | 2006 | 5000 | |
B57164K0474+000 | 470 | 2006 | 5000 | |
B57540G , выводной, стеклянный «капля» 0,8мм (datasheet, pdf) | ||||
B57540G0502+000, +002 | 5 | 8402 | 3497 | |
B57540G1103+000, +002 | 10 | 8307 | 3492 | |
B57540G1103+005, +007 | 10 | 7003 | 3625 | |
B57540G0203+000, +002 | 20 | 8415 | 4006 | |
B57540G1303+005, +007 | 30 | 7002 | 3988 | |
B57540G0503+000, +002 | 50 | 8403 | 4006 | |
B57540G1104+000, +002 | 100 | 8304 | 4092 | |
B57540G0234+000, +002 | 230 | 8405 | 4264 | |
B57540G0145+000, +002 | 1400 | 8406 | 4581 | |
B57551G , выводной, стеклянный «капля» 1,8мм (datasheet, pdf) | ||||
B57551G0202+000, +002 | 2 | 8401 | 3436 | |
B57551G1103+000, +002 | 10 | 8307 | 3492 | |
B57551G1103+005, +007 | 10 | 7003 | 3625 | |
B57551G1303+005, +007 | 30 | 7002 | 3988 | |
B57551G1104+000, +002 | 100 | 8304 | 4092 | |
B57621С5 , SMD 3,2х1,6мм (datasheet, pdf) | ||||
B57621C5102+062 | 1,0 | 3206 | 3450 | |
B57621C5472+062 | 4,7 | 1309 | 3520 | |
B57621C5103+062 | 10 | 1010 | 3530 | |
B57621C5153+062 | 15 | 1008 | 3560 | |
B57621С0 , SMD 3,2х1,6мм (datasheet, pdf) | ||||
B57621C0222+062 | 2,2 | 1308 | 3060 | |
B57621C0332+062 | 3,3 | 1309 | 3520 | |
B57621C0472+062 | 4,7 | 1309 | 3520 | |
B57621C0103+062 | 10 | 1010 | 3530 | |
B57621C0153+062 | 15 | 1008 | 3560 | |
B57621C0223+062 | 22 | 1008 | 3560 | |
B57621C0333+062 | 33 | 2003 | 3980 | |
B57621C0473+062 | 47 | 2001 | 3920 | |
B57621C0683+062 | 68 | 2001 | 3920 | |
B57621C0104+062 | 100 | 4901 | 3950 | |
B57621C0154+162 | 150 | 2903 | 4200 | |
B57621C0224+062 | 220 | 2903 | 4200 | |
B57621C0334+062 | 330 | 1014 | 4250 | |
B57621C0474+062 | 470 | 1014 | 4250 | |
B57703M , выводной 10мм, с «ухом» 8,5×3,7мм (datasheet, pdf) | ||||
B57703M0502G040 | 5 | 8016 | 3988 | |
B57703M0103G040 | 10 | 8016 | 3988 | |
B57703M0303G040 | 30 | 8018 | 3964 |
Форма для он-лайн расчёта значений АЦП
Данные для таблицы | |
T1 | °С |
R1, cопротивление при T1 | килоОм |
T2 | °С |
R2, сопротивление при T2 | килоОм |
Данные для таблицы:R/R1 начиная с T2, с выбранным шагом сетки. Разделитель значений — запятая. | |
BT1/T2 | K |
Схема включения термистора | |
Номинал резистора RA | килоОм |
Номинал резистора RB | килоОм |
Разрядность АЦП | |
Множитель результата АЦП | |
U0, напряжение на входе | В |
Uref, референтное напряжение АЦП | В |
Рассчитать с | °С по °С |
Шаг сетки | |
Построить таблицу |
T,°С | R/R1 | R,килоОм | U,В | I,мкА | P,мВт | U/Uref | ADC | E,°С |
---|
Пояснения к таблице:
жирным выделены значения R/R1 и R, полученные на основе табличных. Обычным шрифтом обозначены значения полученные интерполяцией или экстраполяцией по формулам.
ADC – округлённое значение на выходе АЦП, с учётом множителя. Значения, выходящие за предел измерений АЦП, не отображаются.
I,мкА — ток в цепи.
P,мВт — мощность, рассеиваемая на термисторе.
E – эвристическая оценка возможной погрешности вычисленной температуры, вызванной использованием линейной интерполяции табличных значений, и ограниченной точностью АЦП. Позволяет выбрать параметры и схему включения таким образом, чтобы в области измеряемых значений погрешность была минимальна. Эта оценка не учитывает возможный шум, возникающий на АЦП, а также погрешность, вызванную нагревом термистора из-за протекающих токов. Погрешность можно уменьшить выбрав меньший шаг таблицы, используя АЦП большей разрядности, или путём усреднения большего числа измерений, а также подбором номиналов сопротивлений в цепи.
Код, соответствующий таблице
Пример использования
В примере ниже используется вывод на семисигментный индикатор.
Описание работы с индикатором смотрите в другой моей статье.
Источник
Измеряем температуру 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.
отношения сопротивлений при
использовании резистора
смещения 2 кОм.
T – температура в градусах Цельсия,
D – коэффициент деления.
На резистивный делитель и АЦП подается одно и то же опорное напряжение. Таким образом, мы можем легко вывести зависимость коэффициента деления от показаний АЦП. Если предположить, что преобразователь имеет разрядность N бит, то получим соотношение, показанное в Уравнении 4.
от показаний АЦП при N-битном
преобразователе.
D – коэффициент деления,
ADC – показания АЦП,
N – разрядность АЦП (количество бит).
Подставив Уравнение 4 в Уравнение 3, получим выражение, связывающее показания АЦП с температурой. Оно представлено Уравнением 5.
АЦП при N-битном преобразователе и
сопротивлении смещения 2 кОм.
Выводы
Иногда, как разработчикам встраиваемой электроники, нам приходится решать проблему подключения датчика к системе. В этой статье я рассмотрел простую схему датчика температуры на основе термистора и показал, как линеаризовать температурную зависимость сопротивления.
Одним из основных преимуществ использования термисторов является их цена. Как правило, при покупке в небольших количествах эти датчики стоят примерно от $0.05 до $0.10. Точность для этих датчиков вполне приличная. Обычно допуск сопротивления или допуск R25 для этих устройств составляет от ±3% до ±5%. Поэтому схема линеаризации с нелинейностью ±3 °C также может считаться удовлетворительной.
Конечно, мы всегда можем использовать более дорогой датчик, который даст более точный результат. К подобным типам датчиков можно отнести:
- Датчики с PN-переходом. Низкая стоимость, приемлемая точность.
- Микросхемы датчиков температуры. Обычно они представляют собой некоторую разновидность датчиков с PN-переходом.
- Резистивные датчики температуры (RTD). Они, как правило, очень точны и значительно дороже.
- Термопары. Их диапазон измерения обычно намного больше, а цена сравнительно невысока.
- Инфракрасные датчики. Чаще всего их используют для измерения тепловых излучений, уровни которых затем преобразуют в температуру.
Это лишь несколько из тех методов, с помощью которых можно измерять температуру. О некоторых из них, возможно, я смогу рассказать в будущей статье.
А как вы измеряете температуру в своей встраиваемой системе? Вы видите, что я показал очень дешевый способ измерения этого физического параметра. Но помимо него существует еще уйма других методов.
Перевод: Mikhail R по заказу РадиоЛоцман
Источник