Терморезистор ntc параметры. Использование термисторов для ограничения бросков тока в источниках питания. Программа для вычисления температуры на термисторе

Часто в различных источниках питания возникает задача ограничить стартовый бросок тока при включении. Причины могут быть разные – быстрый износ контактов реле или выключателей, сокращение срока службы конденсаторов фильтра итд. Такая задача недавно возникла и у меня. В компьютере я использую неплохой серверный блок питания, но за счет неудачной реализации секции дежурного режима, происходит сильный ее перегрев при отключении основного питания. Из-за этой проблемы уже 2 раза пришлось ремонтировать плату дежурного режима и менять часть электролитов, находящихся рядом с ней. Решение было простое – выключать блок питания из розетки. Но оно имело ряд минусов – при включении происходил сильный бросок тока через высоковольтный конденсатор, что могло вывести его из строя, кроме того, уже через 2 недели начала обгорать вилка питания блока. Решено было сделать ограничитель бросков тока. Параллельно с этой задачей, у меня была подобная задача и для мощных аудио усилителей. Проблемы в усилителях те же самые – обгорание контактов выключателя, бросок тока через диоды моста и электролиты фильтра. В интернете можно найти достаточно много схем ограничителей бросков тока. Но для конкретной задачи они могут иметь ряд недостатков – необходимость пересчета элементов схемы для нужного тока; для мощных потребителей – подбор силовых элементов, обеспечивающих необходимые параметры для расчетной выделяемой мощности. Кроме того, иногда нужно обеспечить минимальный стартовый ток для подключаемого устройства, из-за чего сложность такой схемы возрастает. Для решения этой задачи есть простое и надежное решение – термисторы.

Рис.1 Термистор

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


Рис.2 ТКС термистора

Нас интересуют следующие параметры термистора:

    Сопротивление при 25˚С

    Максимальный установившийся ток

Оба параметра есть в документации на конкретные термисторы. По первому параметру мы можем определить минимальный ток, который пройдет через сопротивление нагрузки при подключении ее через термистор. Второй параметр определяется максимальной рассеиваемой мощностью термистора и мощность нагрузки должна быть такой, что бы средний ток через термистор не превысил это значение. Для надежной работы термистора нужно брать значение этого тока меньшее на 20 процентов от параметра, указанного в документации. Казалось бы, что проще – подобрать нужный термистор и собрать устройство. Но нужно учитывать некоторые моменты:

  1. Термистор достаточно долго остывает. Если выключить устройство и сразу включить опять, то термистор будет иметь низкое сопротивление и не выполнит свою защитную функцию.
  2. Нельзя соединять термисторы параллельно для увеличения тока – из-за разброса параметров ток через них будет сильно различаться. Но вполне можно соединять нужное к-во термисторов последовательно.
  3. При работе происходит сильный нагрев термистора. Греются также элементы рядом с ним.
  4. Максимальный установившийся ток через термистор должен ограничиваться его максимальной мощностью. Этот параметр указан в документации. Но если термистор используется для ограничения коротких бросков тока (например, при первоначальном включении блока питания и зарядке конденсатора фильтра), то импульсный ток может быть больше. Тогда выбор термистора ограничен его максимальной импульсной мощностью.

Энергия заряженного конденсатора определяется формулой:

E = (C*Vpeak²)/2

где E – энергия в джоулях, C – емкость конденсатора фильтра, Vpeak – максимальное напряжение, до которого зарядится конденсатор фильтра (для наших сетей можно взять значение 250В*√2 = 353В).

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

Я взял таблицу с параметрами термисторов NTC фирмы Joyin. В таблице указаны:

Rном - номинальное сопротивление термистора при температуре 25°С

Iмакс - максимальный ток через термистор (максимальный установившийся ток)

Смакс - максимальная емкость в тестовой схеме, которую разряжают на термистор без его повреждения (тестовое напряжение 350v)

Как проводится тестовое испытание, можно посмотреть на седьмой странице.

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

Наименование

Rном,

Iмакс,

Смакс,

д иаметр 8мм

диаметр 10мм

диаметр 13мм

диаметр 15мм

диаметр 20мм

Таблица параметров NTC термисторов фирмы Joyin

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

Приведу пример. Например, нам необходимо подобрать термистор для включения блока питания компьютера. Максимальная мощность потребления компьютера – 700 ватт. Мы хотим ограничить стартовый ток величиной 2-2.5А. В блоке питания установлен конденсатор фильтра 470мкФ.

Считаем действующее значение тока:

I = 700Вт/220В = 3.18А

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

Iмакс = 3.8А

Считаем нужное сопротивление термистора для стартового тока 2.5А

R = (220В*√2)/2.5А = 124 Ом

Из таблицы находим нужные термисторы. 6 штук последовательно включенных термисторов JNR15S200L подходят нам по Iмакс , общему сопротивлению. Максимальная емкость, которую они могут зарядить будет равна 680мкФ*6*0.65=2652мкФ, что даже больше, чем нам нужно. Естественно, при понижении Vpeak , понижаются и требования к максимальной импульсной мощности термистора. Зависимость у нас от квадрата напряжения.

И последний вопрос по поводу выбора термисторов. Что, если мы подобрали необходимые по максимальной импульсной мощности термисторы, но они нам не подходят по Iмакс (постоянная нагрузка для них слишком велика), либо в самом устройстве нам не нужен источник постоянного нагрева? Для этого мы применим простое решение – добавим в схему еще один выключатель параллельно термистору, который включим после зарядки конденсатора. Что я и сделал в своем ограничителе. В моем случае параметры такие – максимальная мощность потребления компьютера 400вт, ограничение стартового тока – 3.5А, конденсатор фильтра 470мкФ. Я взял 6 штук термисторов 15d11 (15 ом). Схема приведена ниже.


Рис. 3 Схема ограничителя

Пояснения по схеме. SA1 отключает фазовый провод. Светодиод VD2 служит для индикации работы ограничителя. Конденсатор C1 сглаживает пульсации и светодиод не мерцает с частотой сети. Если он вам не нужен, то уберите из схемы C1, VD6, VD1 и просто соедините параллельно светодиод и диод по аналогии элементов VD4, VD5. Для индикации процесса зарядки конденсатора, параллельно термисторам включен светодиод VD4. В моем случае при зарядке конденсатора блока питания компьютера, весь процесс занимает менее секунды. Итак, собираем.


Рис.4 Набор для сборки

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


Рис. 5 Индикация питания


Рис.6 Блок термисторов


Рис. 7 Собранный ограничитель

На этом можно было бы закончить, если бы через неделю работы не вышли из строя все термисторы. Выглядело это так.


Рис. 8 Выход из строя NTC термисторов

Несмотря на то, что запас по допустимой величине емкости был очень большой – 330мкФ*6*0.65=1287мкФ.

Термисторы брал в одной известной фирме, причем разных номиналов – все брак. Производитель неизвестен. Либо китайцы заливают в большие корпуса термисторы меньших диаметров, либо качество материалов очень плохое. В итоге купил даже меньшего диаметра - SCK 152 8мм. То же Китай, но уже фирменные. По нашей таблице допустимая емкость 100мкФ*6*0.65=390мкФ, что даже немного меньше, чем нужно. Тем не менее, все работает отлично.

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

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

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

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

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

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

Подробно об аналоговых входах Ардуино мы говорили на уроке:

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

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

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

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

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

#define SERIAL_R 102000 // сопротивление последовательного резистора, 102 кОм const byte tempPin = A0; void setup() { Serial.begin(9600); pinMode(tempPin, INPUT); } void loop() { int t = analogRead(tempPin); float tr = 1023.0 / t - 1; tr = SERIAL_R / tr; Serial.println(tr); delay(100); }

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

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

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

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

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

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

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

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

#define B 3950 // B-коэффициент #define SERIAL_R 102000 // сопротивление последовательного резистора, 102 кОм #define THERMISTOR_R 100000 // номинальное сопротивления термистора, 100 кОм #define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм) const byte tempPin = A0; void setup() { Serial.begin(9600); pinMode(tempPin, INPUT); } void loop() { int t = analogRead(tempPin); float tr = 1023.0 / t - 1; tr = SERIAL_R / tr; Serial.print("R="); Serial.print(tr); Serial.print(", t="); float steinhart; steinhart = tr / THERMISTOR_R; // (R/Ro) steinhart = log(steinhart); // ln(R/Ro) steinhart /= B; // 1/B * ln(R/Ro) steinhart += 1.0 / (NOMINAL_T + 273.15); // + (1/To) steinhart = 1.0 / steinhart; // Invert steinhart -= 273.15; Serial.println(steinhart); delay(100); }

Результат:

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

Задания

  1. Термометр с дисплеем. Подключим к схеме символьный ЖК дисплей, и напишем программу, которая каждые 100 миллисекунд будет выводить на него температуру.
  2. Сигнализация перегрева. Добавим в схему зуммер и напишем программу, которая будет непрерывно вычислять температуру. В программе также должно быть условие: если температура превышает 70 C°, то включаем зуммер.

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

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

На принципиальных схемах терморезистор обозначается вот так.

В зависимости от сферы применения и типа терморезистора обозначение его на схеме может быть с небольшими отличиями. Но вы всегда его определите по характерной надписи t или .

Основная характеристика терморезистора - это его ТКС . ТКС - это температурный коэффициент сопротивления . Он показывает, на какую величину изменяется сопротивление терморезистора при изменении температуры на 1°С (1 градус Цельсия) или 1 градус по Кельвину.

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

На фото показан терморезистор ММТ-4В (4,7 кОм). Если подключить его к мультиметру и нагреть, например, термофеном или жалом паяльника, то можно убедиться в том, что с ростом температуры его сопротивление падает.

Терморезисторы есть практически везде. Порой удивляешься тому, что раньше их не замечал, не обращал внимания. Давайте взглянем на плату от зарядного устройства ИКАР-506 и попробуем найти их.

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

Второй. Это так называемый NTC-термистор (JNR10S080L ). О таких я ещё расскажу. Служит он для ограничения пускового тока. Забавно. Вроде терморезистор, а служит в качестве защитного элемента.

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

Также терморезисторы устанавливаются в автомобильные усилители. Вот терморезистор в усилителе Supra SBD-A4240. Здесь он задействован в цепи защиты усилителя от перегрева.

Вот ещё пример. Это литий-ионный аккумулятор DCB-145 от шуруповёрта DeWalt. Вернее, его "потроха". Для контроля температуры аккумуляторных ячеек применён измерительный терморезистор.

Его почти не видно. Он залит силиконовым герметиком. Когда аккумулятор собран, то этот терморезистор плотно прилегает к одной из Li-ion ячеек аккумулятора.

Прямой и косвенный нагрев.

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

    Прямой нагрев. Это когда терморезистор нагревается внешним окружающим воздухом или током, который протекает непосредственно через сам терморезистор. Терморезисторы с прямым нагревом, как правило, используются либо для измерения температуры, либо температурной компенсации. Такие терморезисторы можно встретить в термометрах, термостатах, зарядных устройствах (например, для Li-ion батарей шуруповёртов).

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

NTC-термисторы и позисторы.

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

    PTC-термисторы (они же позисторы ).

Давайте разберёмся, какая между ними разница.

Своё название NTC-термисторы получили от сокращения NTC - Negative Temperature Coefficient , или "Отрицательный Коэффициент Сопротивления". Особенность данных термисторов в том, что при нагреве их сопротивление уменьшается . Кстати, вот так обозначается NTC-термистор на схеме.

Обозначение термистора на схеме

Как видим, стрелки на обозначении разнонаправлены, что указывает на основное свойство NTC-термистора: температура увеличивается (стрелка вверх), сопротивление падает (стрелка вниз). И наоборот.

На практике встретить NTC-термистор можно в любом импульсном блоке питания. Например, такой термистор можно обнаружить в блоке питания компьютера. Мы уже видели NTC-термистор на плате ИКАР"а, только там он был серо-зелёного цвета.

На этом фото NTC-термистор фирмы EPCOS. Применяется для ограничения пускового тока.

Для NTC-термисторов, как правило, указывается его сопротивление при 25°С (для данного термистора это 8 Ом) и максимальный рабочий ток. Обычно это несколько ампер.

Данный NTC-термистор устанавливается последовательно, на входе сетевого напряжения 220V. Взгляните на схему.

Так как он включен последовательно с нагрузкой, то весь потребляемый ток протекает через него. NTC-термистор ограничивает пусковой ток, который возникает из-за заряда электролитических конденсаторов (на схеме С1). Бросок зарядного тока может привести к пробою диодов в выпрямителе (диодный мост на VD1 - VD4).

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

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

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

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

Позисторы. PTC-термисторы.

Термисторы, сопротивление которых при нагреве растёт , называют позисторами. Они же PTC-термисторы (PTC - Positive Temperature Coefficient , "Положительный Коэффициент Сопротивления").

Стоит отметить, что позисторы получили менее широкое распространение, чем NTC-термисторы.

Позисторы легко обнаружить на плате любого цветного CRT-телевизора (с кинескопом). Там он установлен в цепи размагничивания. В природе встречаются как двухвыводные позисторы, так и трёхвыводные.

На фото представитель двухвыводного позистора, который применяется в цепи размагничивания кинескопа.

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

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

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

Кроме двухвыводных позисторов широко применяются трёхвыводные позисторы. Вот такие.

Отличие их от двухвыводных заключается в том, что они состоят из двух позисторов-"таблеток", которые установлены в одном корпусе. На вид эти "таблетки" абсолютно одинаковые. Но это не так. Кроме того, что одна таблетка чуть меньше другой, так ещё и сопротивление их в холодном состоянии (при комнатной температуре) разное. У одной таблетки сопротивление около 1,3 ~ 3,6 кОм, а у другой всего лишь 18 ~ 24 Ом.

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

И конденсаторы. Маркировка на них не наносится, что затрудняет их идентификацию. По внешнему виду SMD-терморезисторы очень похожи на керамические SMD-конденсаторы.

Встроенные терморезисторы.

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

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

Теперь, когда мы познакомились с терморезисторами, пора .

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

Термисторы: устройство и принцип работы

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

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

Для того чтобы конструкция устройства была герметичной, применяется стекло и олово. Рабочие качества термисторов улучшаются, когда для оборачивания стержней применяется металлическая фольга. Токоотводы изготавливаются из никелевой проволоки. Номинальные значения сопротивления в различных устройствах находятся в пределах 1-200 кОм, а диапазон температур составляет от -100 до +1290С.

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

Применение термисторов

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

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

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

Узнайте о термисторах и о том, как запрограммировать Arduino для измерения их данных.

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

Знать температуру может быть очень полезно. Знание температуры может помочь регулировать температуру в помещении до комфортного значения, гарантировать, что нагревательная площадка 3D принтера была достаточно горячей, чтобы такие материалы, как ABS, прилипали к ее поверхности, а также предотвратить перегрев двигателя или не допустить сжигания приготавливаемой еды.

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

Термистор обладает сопротивлением, которое намного сильнее зависит от температуры, чем сопротивление других типов резисторов.

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

Ниже приведена фотография термистора, который мы собираемся использовать:

Необходимые компоненты

Комплектующие

  • Arduino (Mega или Uno или любая другая модель);
  • несколько перемычек;
  • паяльник и припой (возможно, понадобится, если ваш термистор не будет влезать в разъемы на плате Arduino).

Программное обеспечение

  • Arduino IDE

Теория

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

Но что, если вы действительно хотите, чтобы яркость светодиода была функцией температуры? Здесь появляется термистор. Как вы могли догадаться, у термистора сопротивление сильно изменяется при небольшом изменении температуры. Чтобы проиллюстрировать это, ниже приведена кривая изменения сопротивления термистора:

На рисунке показаны лишь единицы измерения без фактических значений, так как диапазон сопротивлений зависит от типа конкретного термистора. Как вы можете заметить, по мере увеличения температуры сопротивление терморезистора уменьшается. Это является отличительным свойством резистора с отрицательным температурным коэффициентом (Negative Temperature Coefficient), или, кратко, NTC термистора.

Существуют также терморезисторы с положительным температурным коэффициентом (Positive Temperature Coefficient, PTC), сопротивление которых увеличивается по мере роста температуры. Однако, PTC термисторы имеют своего рода точку перелома и сильно меняют сопротивление при некоторой температуре. Это делает взаимодействие с PTC термисторами чуть более сложным. По этой причине в большинстве дешевых измерителей температуры предпочтительнее использовать NTC термисторы.

В оставшейся части статьи, как вы можете догадаться, мы будем говорить о терморезисторах типа NTC.

Четыре подхода к нахождению формулы для построения кривой

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

Так что же делать?

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

Существует несколько способов решения этой проблемы, которые перечислены ниже. Это далеко не полный список всех методик, но он покажет вам некоторые популярные подходы.

Метод 1

Некоторые производители предоставляют настолько полную информацию, что в ней содержится весь график, отображающий определенные диапазоны целочисленных значений температуры и сопротивления (типовые значения). Один такой термистор может быть найден в техническом описании от компании Vishay .

Как, имея такие подробные данные, можно было бы реализовать измерение температуры на Arduino. Вам нужно было бы жестко прописать в коде все эти значения в огромной таблице поиска или очень длинных структурах управления " switch...case " или " if...else ".

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

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

Метод 2

Вы можете попытаться «линеаризовать» реакцию термистора, добавив к нему дополнительную схему.

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

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

Но у нас в этой статье микропроцессор используется, и мы хотим измерять температуру во всем диапазоне.

Метод 3

Вы можете взять данные из таблицы в техническом описании или (если нравятся извращения) сформировать собственную таблицу, выполнив самостоятельные измерения и воссоздав график в чем-то типа Excel. Затем вы можете использовать функцию подгонки кривой для создания формулы этой кривой. Это неплохая идея, и вся выполненная работа даст красивую формулу, которую вы сможете использовать в программе. Но это займет некоторое время для предварительной обработки данных.

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

Метод 4

Оказывается, есть общая формула для подгонки кривой, предназначенная для устройств типа термисторов. Она называется уравнением Штейнхарта-Харта. Ниже представлена его версия (в других версиях используются члены во второй и степени):

\[\frac{1}{T}=A+B\ln(R)+C(\ln(R))^3\]

где R - сопротивление терморезистора при температуре T (в Кельвинах).

Это общее уравнение кривой, подходящее для всех типов NTC термисторов. Аппроксимация связи температуры и сопротивления «достаточно подходит» для большинства применений.

Обратите внимание, что уравнение нуждается в константах A, B и C. Для разных термисторов они различаются и должны быть либо заданы, либо вычислены. Поскольку мы имеем три неизвестных, вам необходимо выполнить три измерения сопротивления при определенных температурах, которые затем могут быть использованы для создания трех уравнений и определения значений этих констант.

Даже для тех из нас, кто хорошо знают алгебру, это всё еще слишком трудоемко.

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

\[\frac{1}{T}=\frac{1}{T_o}+(\frac{1}{\beta})\cdot\ln\left(\frac{R}{R_o}\right)\]

где R 0 - сопротивление при контрольной температуре T 0 (например, сопротивление при комнатной температуре). R - сопротивление при температуре T. Температуры указываются в Кельвинах. β обычно указывается в техническом описании; а если нет, то вам необходимо только одно измерение (одно уравнение) для расчета этой константы. Это уравнение я буду использовать для взаимодействия с нашим термистором, поскольку оно является самым простым из тех, с которыми я столкнулся, и не нуждается в линеаризации реакции термистора.

Измерение сопротивления с помощью Arduino

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

Это будет наша схема взаимодействия с термистором. Когда термистор определит изменение температуры, это отразится на выходном напряжении.

Теперь, как обычно, мы используем формулу для делителя напряжения.

Но нам неинтересно выходное напряжение V выход, нас интересует сопротивление термистора R термистор. Поэтому мы выразим его:

Это намного лучше, но нам необходимо измерить наше выходное напряжение, а также напряжение питания. Так как мы используем встроенный АЦП Arduino, то можем представить напряжение, как числовое значение на определенной шкале. Итак, конечный вид нашего уравнения показан ниже:

Это работает потому, что не имеет значения, как мы представляем напряжение (в вольтах или в цифровых единицах), эти единицы сокращаются в числителе и знаменателе дроби, оставляя безразмерное значение. Затем мы умножаем его на сопротивление, чтобы получить результат в омах.

D max у нас будет равно 1023, так как это самое большое число, которое может выдать наш 10-разрядный АЦП. D измеренное - это измеренное значение аналого-цифровым преобразователем, которое может быть в диапазоне от нуля до 1023.

Всё! Теперь можно приступить к сборке!

Соберем это

Я использовал термистор TH10K.

Также я использовал резистор 10 кОм в качестве R баланс в нашем делителе напряжения. Константы β у меня не было, поэтому я рассчитал ее сам.

Ниже приведена полная схема устройства. Она довольно проста.

А так выглядит конечный макет:

Код программы для Arduino

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

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

Для забавы добавлены также некоторые операторы " if...else ", чтобы показать, как вы можете действовать в зависимости от диапазона температур.

//=============================================================================== // Константы //=============================================================================== // Связанные с термистором: /* Здесь у нас несколько констант, которые упрощают редактирование кода. Пройдемся по ним. Чтение из АЦП может дать одно значение при одной выборке, а затем немного отличающееся значение при следующей выборке. Чтобы избежать влияния шумов, мы можем считывать значения с вывода АЦП несколько раз, а затем усреднять значения, чтобы получить более постоянное значение. Эта константа используется в функции readThermistor. */ const int SAMPLE_NUMBER = 10; /* Чтобы использовать бета уравнение, мы должны знать номинал второго резистора в нашем делителе. Если вы используете резистор с большим допуском, например, 5% или даже 1%, измерьте его и поместите результат в омах сюда. */ const double BALANCE_RESISTOR = 9710.0; // Это помогает вычислять сопротивление термистора (подробности смотрите в статье). const double MAX_ADC = 1023.0; /* Эта константа зависит от термистора и должна быть в техническом описании, или смотрите статью, как рассчитать ее, используя бета-уравнение. */ const double BETA = 3974.0; /* Необходима для уравнения преобразования в качестве "типовой" комнатной температуры. */ const double ROOM_TEMP = 298.15; // комнатная температура в Кельвинах /* Термисторы обладают типовым сопротивлением при комнатной температуре, укажем его здесь. Опять же, необходимо для уравнения преобразования. */ const double RESISTOR_ROOM_TEMP = 10000.0; //=============================================================================== // Переменные //=============================================================================== // Здесь мы будем хранить текущую температуру double currentTemperature = 0; //=============================================================================== // Объявления выводов //=============================================================================== // Входы: int thermistorPin = 0; // Вход АЦП, выход делителя напряжения //=============================================================================== // Инициализация //=============================================================================== void setup() { // Установить скорость порта для отправки сообщений Serial.begin(9600); } //=============================================================================== // Основной цикл //=============================================================================== void loop() { /* Основной цикл довольно прост, он печатает температуру в монитор последовательного порта. Сердце программы находится в функции readThermistor. */ currentTemperature = readThermistor(); delay(3000); /* Здесь описываем, что делать, если температура слишком высока, слишком низка или идеально подходит. */ if (currentTemperature > 21.0 && currentTemperature < 24.0) { Serial.print("It is "); Serial.print(currentTemperature); Serial.println("C. Ahhh, very nice temperature."); } else if (currentTemperature >= 24.0) { Serial.print("It is "); Serial.print(currentTemperature); Serial.println("C. I feel like a hot tamale!"); } else { Serial.print("It is "); Serial.print(currentTemperature); Serial.println("C. Brrrrrr, it"s COLD!"); } } //=============================================================================== // Функции //=============================================================================== ///////////////////////////// ////// readThermistor /////// ///////////////////////////// /* Эта функция считывает значения с аналогового вывода, как показано ниже. Преобразует входное напряжение в цифровое представление с помощью аналого-цифрового преобразования. Однако, это выполняется несколько раз, чтобы мы могли усреднить значение, чтобы избежать ошибок измерения. Это усредненное значение затем используется для расчета сопротивления термистора. После этого сопротивление используется для расчета температуры термистора. Наконец, температура преобразуется в градусы Цельсия. */ double readThermistor() { // переменные double rThermistor = 0; // Хранит значение сопротивления термистора double tKelvin = 0; // Хранит рассчитанную температуру double tCelsius = 0; // Хранит температуру в градусах Цельсия double adcAverage = 0; // Хранит среднее значение напряжения int adcSamples; // Массив для хранения отдельных результатов // измерений напряжения /* Рассчитать среднее сопротивление термистора: Как упоминалось выше, мы будем считывать значения АЦП несколько раз, чтобы получить массив выборок. Небольшая задержка используется для корректной работы функции analogRead. */ for (int i = 0; i < SAMPLE_NUMBER; i++) { adcSamples[i] = analogRead(thermistorPin); // прочитать значение на выводе и сохранить delay(10); // ждем 10 миллисекунд } /* Затем мы просто усредняем все эти выборки для "сглаживания" измерений. */ for (int i = 0; i < SAMPLE_NUMBER; i++) { adcAverage += adcSamples[i]; // складываем все выборки. . . } adcAverage /= SAMPLE_NUMBER; // . . . усредняем их с помощью деления /* Здесь мы рассчитываем сопротивление термистора, используя уравнение, описываемое в статье. */ rThermistor = BALANCE_RESISTOR * ((MAX_ADC / adcAverage) - 1); /* Здесь используется бета-уравнение, но оно отличается от того, что описывалось в статье. Не беспокойтесь! Оно было перестроено, чтобы получить более "красивую" формулу. Попробуйте сами упростить уравнение, чтобы поупражняться в алгебре. Или просто используйте показанное здесь или то, что приведено в статье. В любом случае всё будет работать! */ tKelvin = (BETA * ROOM_TEMP) / (BETA + (ROOM_TEMP * log(rThermistor / RESISTOR_ROOM_TEMP))); /* Я буду использовать градусы Цельсия для отображения температуры. Я сделал это, чтобы увидеть типовую комнатную температуру, которая составляет 25 градусов Цельсия. */ tCelsius = tKelvin - 273.15; // преобразовать кельвины в цельсии return tCelsius; // вернуть температуру в градусах Цельсия }

Возможные следующие шаги

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

 
Статьи по теме:
Что такое shareware и freeware программы
Обусловленный особенностями распространения таких программ. Исторически, слово обозначало программы, свободно распространявшиеся третьими лицами (например, через FidoNet, в сборниках программ на компакт-дисках) и содержавшие в себе просьбу заплатить деньг
Калибровка и восстановление аккумулятора ноутбука ASUS: мифы и легенды
Рано или поздно каждый владелец ноутбука неожиданно для себя узнает, что аккумулятор его любимца является чуть ли не самым дорогостоящим комплектующим. Это, как правило, происходит, когда заканчивается срок гарантии. Не пугайтесь, шутка. Обычно оригинальн
Оао мгтс - не работает цифровое телевидение Почему не работает интернет мгтс
Стационарная связь, впрочем, как и любая другая телекоммуникационная услуга, может перестать функционировать по целому ряду причин: перелом оптоволоконных или медных линий передач, загруженность сети, выход из строя телефонного аппарата, а также многое др
Инструкция по восстановлению счетчика Яндекс
Счетчик статистики сайта от Яндекс Метрики необходим любому сайту. Это один из самых простых аналитических инструментов. Вы добавляете код отслеживания на все страницы и получаете подробную информацию по посещаемости и источникам трафика, посетителям, и