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

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

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

микроконтроллер Arduino Uno и некоторые дополнительные модули к нему

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

Термисторы

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

Что такое термистор и его виды

Термистор Ардуино — резистор, меняющий свое сопротивление в зависимости от температуры. Существуют два вида активных элементов подобного типа — реагирующие конкретно на охлаждение NTC «Negative Temperature Coefficient» или нагрев PTC «Positive Temperature Coefficient».

Каждый терморезистор имеет маркировку, указывающую на его сопротивление при определенной норме температуры. Для NTC принято считать последнюю за 25 ºС, у PTC она равна 0 ºС. На определении текущего значения характеристики и строиться выявление уровня нагрева или охлаждения окружающей элемент среды.

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

Термисторы выпускаются с определенным изначальным сопротивлением, которое может варьироваться от 100 Ом до 100 кОм. Условно, все чувствительные к нагреванию элементы разделяют на три класса — низкотемпературные, с работой ниже минус 100 ºС, средние, с пределом от -100 ºС до +235 ºС, и обеспечивающие выявление высоких значений характеристики среды, в промежутке с 300 ºС по 1000 ºС.

Аппаратно, все детекторы подобного типа напрямую подключить к Ардуино не получиться. В микроконтроллере отсутствует вход определяющий сопротивление нагрузки. Но есть пять, для Arduino Mini/Uno, или 16, у Mega 2560, АЦП вводов чувствительных к уровню поступающего сигнала — в пределах от 0 до 5 В. Здесь, чтобы узнать текущее значение характеристики резистора, достаточно использовать классическую схему делителя тока, одним плечом которого выступает известный и неизменный элемент, вторым — сам термистор. Подобная конструкция будет понижать напряжение проходящего тока, в зависимости от номиналов переменного и постоянного сопротивления.

Классическая схема делителя напряжения

Микроконтроллер, пользуясь полученной информацией на входе, может рассчитывать значения текущей температуры по формуле Стейнхарта — Харта, выводя ее из текущего значения характеристики термистора:

Формула 1

Или используя более простой, но обеспечивающей достаточную точность, для измеряющих устройств:

Формула 2

В первой, A и C берутся из спецификации к резистору. В остальном, для обоих: T — полученная температура в кельвинах,

  • T0 — температура изначального номинала (для NTC, к примеру, T0=298.15),
  • B — коэффициент, зависящий от датчика и равный его значению в документации конкретной модели,
  • R — измеренное сопротивление,
  • R0 — номинальное.

Само текущее значение сопротивления R2, автоматически вычисляться по формуле, используемой для расчета делителей напряжения:

Формула 3

Где R1 — известный резистор плеча, Vвх — входящее напряжение (в Arduino — 5 В), Vвых — итоговое на входе логического модуля.

Есть нюанс, касающийся непосредственно получения значений напряжения с аналогового контакта микроконтроллера. Числовые данные порта АЦП лежат в пределах от 0 до 1023 и соответствуют промежутку от 0 до 5 В. Для расчета понятных человеку данных характеристики используется формула:

Формула 4

Приведенный метод не очень точен, по причине нелинейности роста сопротивления термистора от температуры. Разница в некоторых случаях, с реальным положением дел, может достигать нескольких десятков градусов. В представленном скетче используется иной принцип. Текущий нагрев среды будет определяться по таблице соответствий, представленной производителем чувствительного элемента. Скачать ее, для модели, указанной в схеме далее, можно из интернета по адресу https://datasheetspdf.com/pdf-file/944190/Danfoss/NTC100K/1.

Реальное изменение сопротивления в NTC 100k от температуры

Схема подключения

Рассмотренная схема — пример, демонстрирующий получения значений температуры для последующей обработки. Используемые компоненты:

  • Arduino UNO3
  • Резистор 3.3 kOm
  • Тонкопленочный термистор NTC MF5B SMD 100K

Принципиальная схема устройства

Резистор R1 можно заменить любым иным, с последующим указанием его номинала в скетче. Для сохранения точности измерений не рекомендуется ставить элемент с сопротивлением выше 10 кОм. Дополнительно, с целью увеличения корректности показаний, можно разместить конденсатор между термистором и землей — он будет убирать помехи из линии. Кроме того, в плане точности измерений нужно помнить, что постоянный резистор R1, несмотря на свою маркировку, имеет приблизительно равное указанному на корпусе сопротивление. Его желательно замерить точно и внести в соответствующие корректные значения в поле скетча (R_NOMINAL примера).

Скетч

Программа, как и схема приводиться для примера. Измерив температуру раз в секунду, микроконтроллер будет отправлять ее значение на порт TX/RX для отображения результата в компьютере.

Скачать скетч можно по ссылке: https://cloud.mail.ru/public/kvxD/TKkjJAJ6R

Точность измерений можно поднять и программным методом — опрашивая датчик несколько раз (обычно 10) и выводя среднее значение показаний.

Результат работы скетча

В итоге

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

Видео по теме

Ссылка на основную публикацию
Adblock
detector