Уравнение стейнхарта харта для термистора

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

Уравнение стейнхарта харта для термистора

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

Терморезистор был изобретён Самюэлем Рубеном (Samuel Ruben) в 1930 году .

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

По типу зависимости сопротивления от температуры различают терморезисторы с отрицательным (NTC-термисторы, от слов «Negative Temperature Coefficient») и положительным (PTC-термисторы, от слов «Positive Temperature Coefficient» или позисторы) температурным коэффициентом сопротивления (или ТКС). Для позисторов — с ростом температуры растёт их сопротивление; для NTC-термисторов увеличение температуры приводит к падению их сопротивления.

Условно терморезисторы классифицируют как низкотемпературные (предназначенные для работы при температуpax ниже 170 Кельвин), среднетемпературные (от 170 до 510 К) и высокотемпературные (выше 570 К). Выпускаются терморезисторы, предназначенные для работы при температурах от 900 до 1300 К.

Термисторы бывают разных видов вот например:

Уравнение стейнхарта харта для термистора

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

В данном примере будем использовать простейший NTC термистор c номинальным сопротивлением 100 кОм при температуре 25 градусов “С” который используется в 3Д принтерах. Данный термистор имеет маркирову 3950.

Для реализации нам понадобится:

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

Уравнение стейнхарта харта для термистора

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

Уравнение стейнхарта харта для термистора

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

Уравнение стейнхарта харта для термистора

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

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

Скетч будет выглядеть следующем образом:

Вот что мы увидим в мониторе порта:

Уравнение стейнхарта харта для термистора

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

Видео:The Steinhart Hart EquationСкачать

The Steinhart Hart Equation

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

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

Уравнение стейнхарта харта для термистора

Видео:Жили-были термистор и пищалка. Ардуино.Скачать

Жили-были термистор и пищалка. Ардуино.

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

  1. Плата Arduino (любая модель) (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. NTC thermistor 10 кОм (терморезистор с отрицательным температурным коэффициентом) (купить на AliExpress).
  4. Резистор 10 кОм (купить на AliExpress).
  5. Соединительные провода.

Видео:🌡‍️Как измерять температуру NTC термистором (STM32)Скачать

🌡‍️Как измерять температуру NTC термистором (STM32)

Работа схемы

Схема устройства представлена на следующем рисунке.

Уравнение стейнхарта харта для термистораПри изменении температуры изменяется сопротивление терморезистора (термистора). Но в нашей схеме мы не будем измерять сопротивление термистора напрямую, вместо этого мы использовали делитель напряжения, одним из резисторов которого является известное сопротивление 10 кОм, а вторым – наш терморезистор. Средняя точка делителя напряжения подключена к аналоговому входу A0 платы Arduino, поэтому при помощи аналогово-цифрового преобразования (АЦП) на этом контакте мы можем определить падение напряжение на терморезисторе в любой момент времени и, следовательно, и его сопротивление. Благодаря этим данным мы по формулам, приведенным ниже в данной статье, можем определить значение температуры.

Видео:Вычисление температуры термистора NTCСкачать

Вычисление температуры термистора NTC

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

Ключевым компонентом нашей схемы является терморезистор, который используется для определения температуры. Термистор представляет собой резистор, сопротивление которого изменяется в зависимости от температуры. Существует два типа подобных термисторов: NTC (Negative Temperature Co-efficient — с отрицательным температурным коэффициентом) и PTC (Positive Temperature Co-efficient — с положительным температурным коэффициентом). Мы в нашем проекте будем использовать терморезистор NTC типа – его сопротивление уменьшается с повышением температуры. На следующих рисунках приведены график зависимости сопротивления подобного терморезистора от температуры и его типовой внешний вид.

Уравнение стейнхарта харта для термистораУравнение стейнхарта харта для термистора

Расчет температуры с помощью терморезистора

Схема используемого нами делителя напряжения представлена на следующем рисунке.

Уравнение стейнхарта харта для термистора

Напряжение на терморезисторе в этой схеме можно определить из известного напряжения:

Из этой формулы можно выразить значение сопротивления терморезистора Rt (R – известное сопротивление 10 кОм):

Значение Vout мы затем будем определять в коде программы с помощью считывания значения на выходе АЦП на контакте A0 платы Arduino.

Математически, сопротивление терморезистора можно вычислить с помощью известного уравнения Стейнхарта-Харта (Stein-Hart equation).

T = 1/(A + B*ln(Rt) + C*ln(Rt) 3 ) .

В этой формуле A, B и C — константы, Rt – сопротивление терморезистора, ln — натуральный логарифм.

Мы для проекта использовали терморезистор со следующими константами: A = 1.009249522×10 −3 , B = 2.378405444×10 −4 , C = 2.019202697×10 −7 . Эти константы можно определить с помощью данного калькулятора, введя в нем значения сопротивления терморезистора при трех значениях температуры или вы их можете непосредственно узнать из даташита на ваш терморезистор.

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

Уравнение стейнхарта харта для термистора

Видео:Особенности термисторов и их применение в ...Скачать

Особенности термисторов и их применение в ...

Исходный код программы

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

Для выполнения математических операций в программе мы должны подключить заголовочный файл библиотеки “ #include >”, а для работы с ЖК дисплеем – подключить библиотеку “ #include
«. Далее в функции setup() мы должны инициализировать ЖК дисплей.

Видео:Табличное вычисление температуры термистора NTCСкачать

Табличное вычисление температуры термистора NTC

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

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

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

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

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

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

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

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

Уравнение стейнхарта харта для термистора Терморезистор

Видео:Как работает ТЕРМИСТОР | Терморезистор | ПозисторСкачать

Как работает ТЕРМИСТОР | Терморезистор | Позистор

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

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

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

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

  • Arduino IDE

Видео:Уроки Arduino. Подключение термометров DS18B20 и NTC термистораСкачать

Уроки Arduino. Подключение термометров DS18B20 и NTC термистора

Теория

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

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

Уравнение стейнхарта харта для термистора График зависимости сопротивления термистора от температуры

На рисунке показаны лишь единицы измерения без фактических значений, так как диапазон сопротивлений зависит от типа конкретного термистора. Как вы можете заметить, по мере увеличения температуры сопротивление терморезистора уменьшается. Это является отличительным свойством резистора с отрицательным температурным коэффициентом (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

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

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

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

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

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

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

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

Видео:Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по ФаренгейтуСкачать

Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту

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

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

Уравнение стейнхарта харта для термистора Делитель напряжения для измерения сопротивления термистора

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

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

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

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

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

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

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

Видео:Термистор в ардуиноСкачать

Термистор в ардуино

Соберем это

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

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

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

Уравнение стейнхарта харта для термистора Схема измерения температуры с помощью Arduino и NTC термистора

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

Уравнение стейнхарта харта для термистора Макет измерения температуры с помощью Arduino и NTC термистора

Видео:Что такое термистор и фоторезистор — эксперименты с теплом и светом. Понятные уроки по ArduinoСкачать

Что такое термистор и фоторезистор — эксперименты с теплом и светом. Понятные уроки по Arduino

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

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

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

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

Видео:HOW TO USE THE THERMISTOR STEINHART-HART EQUATION IN AN ARDUINO SETUPСкачать

HOW TO USE THE THERMISTOR  STEINHART-HART EQUATION IN AN ARDUINO SETUP

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

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

  • добавить небольшой конденсатор параллельно выходу делителя. Это стабилизирует напряжение и может даже устранить необходимость усреднения большого количества выборок (как было сделано в коде) – или, по крайней мере, мы сможете усреднять меньшее количество выборок;
  • использовать прецизионные резисторы (допуск меньше 1%), чтобы получить более предсказуемые измерения. Если вам критична точность измерений, имейте в виду, что самонагревание термистора может повлиять на измерения; в данной статье самонагрев не компенсируется.

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

Надеюсь, статья оказалась полезной. Оставляйте комментарии!

🎬 Видео

Урок 41 Подключение термистора NTC3950 на 100KoM к Ардуино в программе FlprogСкачать

Урок 41 Подключение термистора NTC3950 на 100KoM к Ардуино в программе Flprog

3. ThermistorsСкачать

3. Thermistors

Термистор для измерения температурыСкачать

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

ЧТО ТАКОЕ ТЕРМИСТОР / ТЕРМОРЕЗИСТОР / ТЕРМОСОПРОТИВЛЕНИЕСкачать

ЧТО ТАКОЕ ТЕРМИСТОР / ТЕРМОРЕЗИСТОР / ТЕРМОСОПРОТИВЛЕНИЕ

Проверка датчиков ардуино DS18b20 DHT11 BME280 DHT22 HTU21d NTC термисторСкачать

Проверка датчиков ардуино DS18b20 DHT11 BME280 DHT22 HTU21d NTC термистор

ЭТИ детали очень похожи! Но СИМИСТОР лучше ТИРИСТОРА Покажу в чем разницаСкачать

ЭТИ детали очень похожи! Но СИМИСТОР лучше ТИРИСТОРА Покажу в чем разница

Подключение Фоторезистора и Термистора к Ардуино без написания кода!Скачать

Подключение Фоторезистора и Термистора к Ардуино без написания кода!
Поделиться или сохранить к себе: