подключение, сборка, схема, код программы
Цифровая техника все больше входит в нашу жизнь, заменяя предыдущее поколение устройств, приборов и автоматов. Причина в модульности подобных конструкций, с переброской части функционала аппаратуры с физических элементов схемы в программную плоскость. То есть, доступно расширение возможностей конечного оборудования модификацией его управляющих кодов, без физического усложнения устройства.
Основа любой цифровой аппаратуры в комплексе — микроконтроллер. Именно он обрабатывает поступающую с датчиков информацию и выдает управляющие команды на исполняющие модули согласно заложенной программы.
Наиболее популярными и удобными для создания прототипов устройств, или 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 В. Здесь, чтобы узнать текущее значение характеристики резистора, достаточно использовать классическую схему делителя тока, одним плечом которого выступает известный и неизменный элемент, вторым — сам термистор. Подобная конструкция будет понижать напряжение проходящего тока, в зависимости от номиналов переменного и постоянного сопротивления.
Микроконтроллер, пользуясь полученной информацией на входе, может рассчитывать значения текущей температуры по формуле Стейнхарта — Харта, выводя ее из текущего значения характеристики термистора:
Или используя более простой, но обеспечивающей достаточную точность, для измеряющих устройств:
В первой, A и C берутся из спецификации к резистору. В остальном, для обоих: T — полученная температура в кельвинах,
- T0 — температура изначального номинала (для NTC, к примеру, T0=298.15),
- B — коэффициент, зависящий от датчика и равный его значению в документации конкретной модели,
- R — измеренное сопротивление,
- R0 — номинальное.
Само текущее значение сопротивления R2, автоматически вычисляться по формуле, используемой для расчета делителей напряжения:
Где R1 — известный резистор плеча, Vвх — входящее напряжение (в Arduino — 5 В), Vвых — итоговое на входе логического модуля.
Есть нюанс, касающийся непосредственно получения значений напряжения с аналогового контакта микроконтроллера. Числовые данные порта АЦП лежат в пределах от 0 до 1023 и соответствуют промежутку от 0 до 5 В. Для расчета понятных человеку данных характеристики используется формула:
Приведенный метод не очень точен, по причине нелинейности роста сопротивления термистора от температуры. Разница в некоторых случаях, с реальным положением дел, может достигать нескольких десятков градусов. В представленном скетче используется иной принцип. Текущий нагрев среды будет определяться по таблице соответствий, представленной производителем чувствительного элемента. Скачать ее, для модели, указанной в схеме далее, можно из интернета по адресу https://datasheetspdf.com/pdf-file/944190/Danfoss/NTC100K/1.
Схема подключения
Рассмотренная схема — пример, демонстрирующий получения значений температуры для последующей обработки. Используемые компоненты:
- Arduino UNO3
- Резистор 3.3 kOm
- Тонкопленочный термистор NTC MF5B SMD 100K
Резистор R1 можно заменить любым иным, с последующим указанием его номинала в скетче. Для сохранения точности измерений не рекомендуется ставить элемент с сопротивлением выше 10 кОм. Дополнительно, с целью увеличения корректности показаний, можно разместить конденсатор между термистором и землей — он будет убирать помехи из линии. Кроме того, в плане точности измерений нужно помнить, что постоянный резистор R1, несмотря на свою маркировку, имеет приблизительно равное указанному на корпусе сопротивление. Его желательно замерить точно и внести в соответствующие корректные значения в поле скетча (R_NOMINAL примера).
Скетч
Программа, как и схема приводиться для примера. Измерив температуру раз в секунду, микроконтроллер будет отправлять ее значение на порт TX/RX для отображения результата в компьютере.Скачать скетч можно по ссылке: https://cloud.mail.ru/public/kvxD/TKkjJAJ6R
Точность измерений можно поднять и программным методом — опрашивая датчик несколько раз (обычно 10) и выводя среднее значение показаний.
В итоге
Микроконтроллер Ардуино, используемый совместно с терморезистором, способен не только точно измерять температуру, но и производить логические действия, связанные с ее изменением. К примеру, за счет дополнительных исполнительных модулей, поддерживать комфортное по нагреву или охлаждению состояние любой среды — воды, поверхности или воздуха.
Видео по теме
Ntc 3950 подключение к arduino – Тарифы на сотовую связь
Информация актуальна! Страница была обновлена 16.12.2019
Терморезистор (термистор, термосопротивление) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры .
Терморезистор был изобретён Самюэлем Рубеном (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 градуса, вполне логично, формула отрабатывает правильно.
Теперь с помощью данной формулы мы уже можем строить разные условия для разных действий.
Термистор (терморезистор) – это резистор, который меняет свое сопротивление с изменением температуры.
Технически все резисторы являются термисторами, так как их сопротивление меняется в зависимости от температуры. Но эти изменения очень незначительны и измерить их очень сложно. Термисторы изготавливаются таким образом, чтобы сопротивление изменялось на значительную величину в зависимости от температуры. Около 100 Ом и даже больше при изменении температуры на 1 градус по Цельсию!
Существуют два вида термисторов – с NTC (negative temperature coefficient – отрицательный температурный коэффициент) и с PTC (positive temperature coefficient – положительный температурный коэффициент). В большинстве случаев для измерения температуры используются NTC сенсоры. PTC часто используются в качестве предохранителей – с увеличением температуры растет сопротивление, это приводит к тому, что через них проходит большая сила тока, они нагреваются и срабатывают как предохранители. Достаточно удобно для предохранительных цепей!
Если сравнивать термисторы с аналоговыми датчиками температуры типа LM35, TMP36, цифровыми вроде DS18B20, или термопарами, основными преимуществами термисторов можно назвать:
- Во первых, они гораздо дешевле чем все перечисленные выше датчики температуры!
- Их гораздо проще использовать в условиях повышенной влажности, так как это просто резистор.
- Термисторы работают с любым напряжением (цифровые датчики требуют 3 или 5 В питания логики).
- Если сравнить термистор и термопару, то первым не нужен усилитель сигнала, чтобы считывать данные. Соответственно, вы можете использовать практически любой микроконтроллер.
- Соотношение точность показаний/цена – потрясающие. Например, термистор 10 КОм 1% может производить измерения температуры с точностью ±0.25°C! (При условии, что у вас подходящий аналогово-цифровой преобразователь на микроконтроллере).
- Их практически невозможно поломать или повредить.
С другой стороны, диапазон температур, который можно измерить с помощью термисторов не такой широкий как у термопар и их настройка для снятия показаний тоже немного сложнее. А если на вашем контроллере нет встроенного аналогово-цифрового преобразователя, то лучше вообще обойтись цифровыми датчиками температуры.
Тем не менее простота исполнения термисторов дает им огромный бонус и они безумно популярны для базовых задач контроля температуры. Например, вы хотите, чтобы автоматически включился кондиционер, если в помещении стало слишком жарко. Для этого вы можете использовать цифровой датчик температуры, Arduino, и реле. А можете использовать и термистор, который подключен к базе транзистора. В результате, с повышением температуры, сопротивление падает, на транзистор подается все больше тока, пока он не включится.
Технические характеристики
Ниже приведены технические характеристики термисторов, которые чаще всего используются в DIY проектах на Arduino:
- Сопротивление при 25 °C: 10K ±1%.
- B25/50: 3950 ±1%.
- Диапазон измеряемых температур от -55°C до 125°C.
- Диаметр: 3.5 мм / 0.13 дюйма.
- Длина: 18 дюймов / 45 см.
- Зависимость сопротивления от температуры.
Обратите внимание на то, что сам термистор может измерять температуру до 125° C, но сами контакты порой рассчитаны на меньшую температуру. То есть, термистор не стоит использовать для контроля температуры слишком горячих жидкостей.
Тестируем термистор
Так как термисторы – по своей сути – резисторы , проверить их не составит труда. Достаточно измерить сопротивление с помощью мультиметра:
При комнатной температуре показания должны составить около 10 КОм. Например, показания при 30°C – 86°F, составляют около 8 КОм.
Подключение термистора к Arduino
Термисторы подключаются к Arduino очень просто. Достаточно использовать монтажную плату, как это показано на рисунке ниже. Так как сопротивление термистора достаточно высокое (около 10 КОм), сопротивление проводников практически не повлияет на результаты измерений.
Методика считывания аналогового напряжения
Для того, чтобы определить температуру, мы должны измерить сопротивление. При этом на Arduino нет встроенного измерителя сопротивления. Но зато есть возможность считать напряжение с помощью аналогово-цифрового конвертера. Так что нам надо преобразовать сопротивление в напряжение. Для этого мы последовательно добавим в схему подключения еще один резистор. Теперь, когда вы будете мерять напряжение по центру, с изменением сопротивления, будет меняться и напряжение.
Скажем, мы используем резистор с постоянным номиналом 10K и переменный резистор, который называется R. При этом напряжение на выходе (Vo), которое мы будем передавать Arduino, будет равно:
Vo = R / (R + 10K) * Vcc,
где Vcc – это напряжение источника питания (3.3 В или 5 В)
Теперь мы хотим подключить все это к Arduino. Не забывайте, что когда вы измеряете напряжение (Vi) с использованием АЦП на Arduino, вы получите числовое значение.
ADC value = Vi * 1023 / Vcc
Теперь мы совмещаем два напряжения (Vo = Vi) и получаем:
ADC value = R / (R + 10K) * Vcc * 1023 / Vcc
Что самое прекрасное, Vcc сокращается!
ADC value = R / (R + 10K) * 1023
То есть вам неважно, какое напряжение питания вы используете!
В конце мы все же хотим получить R (сопротивление). Для этого надо использовать еще одно преобразование, в котором R переносятся в одну сторону:
R = 10K / (1023/ADC – 1)
Отлично. Давайте попробуем, что из этого всего выйдет. Подключите термистор к Arduino как это показано на рисунке ниже:
Подключите один контакт резистора на 10 КОм к контакту 5 В, второй контакт резистора 10 КОм 1% – к одному контакту термистора. Второй контакт термистора подключается к земле. ‘Центр’ двух резисторов подключите к контакту Analog 0 на Arduino.
Теперь запустите следующий скетч для Arduino:
// значение ‘другого’ резистора
#define SERIESRESISTOR 10000
// к какому пину подключается термистор
#define THERMISTORPIN A0
// преобразуем полученные значения в сопротивление
reading = (1023 / reading) – 1;
reading = SERIESRESISTOR / reading;
В результате вы должны получить значения, которые соответствуют измеренным с помощью мультиметра.
Более точные измерения
При проведении измерений аналоговых значений, особенно с ‘шумными’ платами вроде Arduino, можно использовать два метода для улучшения качества показаний. Первый – использовать пин 3.3 В для аналогового сигнала и второй – собрать небольшой массив экспериментальных значений и усреднить их.
Первое. Питание 5 В от Arduino подается напрямую от USB вашего персонального компьютера. В результате сигнал гораздо более зашумленный, чем питание от контакта 3.3 В (этот контакт предусматривает предварительную обработку через интегрированный в плату регулятор). То есть просто подключите 3.3 к контакту AREF и используйте его в качестве источника напряжения VCC.
Второе. Снять несколько показаний для того, чтобы получить усредненное значение также значительно улучшит показания, так как будут учтены внешние шумы. Для усреднения рекомендуется брать не меньше 5 значений.
В результате схема подключения и новый скетч для Arduino будут имеет следующий вид:
В этом скетче учтены оба «апгрейда». В результате вы сможете подучить более точные показания температуры.
// к какому аналоговому контакту мы подключены
#define THERMISTORPIN A0
// сколько показаний берется для определения среднего значения
// чем больше значений, тем дольше проводится калибровка,
// но и показания будут более точными
#define NUMSAMPLES 5
// емкость второго резистора в цепи
#define SERIESRESISTOR 10000
// подключите AREF к 3.3 В и используйте именно этот контакт для питания,
// так как он не так сильно «шумит»
// формируем вектор из N значений с небольшой задержкой между считыванием данных
Терморезистор (термистор, термосопротивление) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры .
Терморезистор был изобретён Самюэлем Рубеном (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 градуса, вполне логично, формула отрабатывает правильно.
Теперь с помощью данной формулы мы уже можем строить разные условия для разных действий.
Простая метеостанция с ЖК-экраном… Как⁈ Журнал для тех, кто делает
В проекте электронного вольтметра мы уже использовали Arduino, чтобы научиться отделять заряженные батарейки от использованных. Сегодня мы пойдём дальше и превратим плату в домашнюю метеостанцию.
Что понадобится
— микроконтроллер Arduino Uno
— термистор (терморезистор)
— сопротивление на 10 кОм
— семисегментный индикатор
— макетная плата
— соединительные провода «папа-папа»
Основой метеостанции станет термистор — элемент, сопротивление которого меняется в зависимости от температуры. Сначала я выведу информацию с сенсора на экран ноутбука, а когда разберусь со всеми этими вольтами, омами и градусами — добавлю ЖК-экран, чтобы станция работала и без компьютера.
Мы будем собирать устройство на макетной плате. Схему можно поправить за считанные мгновения и не придётся ничего перепаивать.
Шаг первый. Подключаем термистор
У меня самый простой термистор: если его нагреть, сопротивление уменьшится, если охладить — вырастет. Такие элементы называют термисторами с отрицательным температурным коэффициентом или NТС (от английских слов Negative Temperature Coefficent).
К сожалению, на Ардуино нет встроенных инструментов для измерения сопротивления, поэтому будем выкручиваться. В эксперименте с батарейками мы использовали делитель напряжения: пара сопротивлений помогла снизить напряжение вдвое. Использую ту же схему, только одно сопротивление заменю термистором.
При комнатной температуре, 25 по Цельсию, его сопротивление равно 10 килоомам — столько же, сколько и у постоянного резистора. Теперь выходное напряжение цепи зависит только от сопротивления термистора. Измерю напряжение, подключив цепь к контакту А5.
Теперь я знаю всё, что нужно для определения сопротивления термистора. Воспользуюсь общей формулой делителя напряжения, чтобы найти сопротивление моего термистора.
Чтобы не возиться с подключением экрана раньше времени — вдруг мой сенсор не заработает — выведу показания с платы на экран компьютера. Передам данные по USB, с помощью интерфейса последовательного порта. Запищу передачу командой Serial.begin. Текст сообщений буду составлять с помощью функций Serial.print и Serial.println. Первая просто добавляет данные к текущей строке, вторая — сначала добавляет данные, затем заканчивает строку. Загружу в Ардуинку первую программу.
Программа загрузилась, но ничего не происходит. Чтобы увидеть данные, нужно запустить монитор последовательного порта.
Это можно сделать в верхнем меню редактора кода (монитор порта находится во вкладке инструменты) или с помощью комбинации клавиш Ctrl+Shift+M.
При комнатной температуре у меня получилось, что напряжение срезалось вдвое. Это подтверждает, что мой термистор сейчас имеет сопротивление 10 кОм.
Шаг второй. Переводим омы в градусы
Терморезистор меняет сопротивление нелинейно: зависимость логарифмическая и описывается многоэтажной формулой. Придётся разбираться.
T0 и R0 — это основные характеристики термистора. Это температура (T0) при которой сопротивление элемента соответствует номиналу (R0). Температура чаще всего 25 градусов Цельсия, а сопротивление указано на самой детали — 10 кОм.
B — это коэффициент, который можно найти в документации на термистор. Он зависит от материала, из которого сделан сенсор.
Rt — сопротивление термистора при измеряемой температуре мы определили на предыдущем шаге. Значит теперь можем последний член уравнения — текущую температуру T.
Выглядит сложно, но разбивается на два действия. Сначала вычислим логарифм, затем займёмся арифметикой.
Запустим программу и откроем монитор последовательного порта.
Теперь в таблице появилась ещё одна колонка — результаты измерений температуры.
Шаг третий. Подключаем ЖК-экран
Теперь я отучу свою метеостанцию от компьютера: добавлю собственный экранчик и выведу на него температуру в двух шкалах — Цельсия и Фаренгейта.
Экран я подключу по той же схеме, что и в проекте цифрового вольтметра. Если есть сомнения в своих силах, перейдите по ссылке — там алгоритм подключения экрана разобран по шагам.
Из кода программы я уберу команды, которые вызывали последовательный порт и группировали данные для отправки на компьютер.
Вместо них добавлю команды для работы с LED-дисплеем: подключение библиотеки, определение контактов и формирование строк. Первая строка меняться не будет, а во вторую выведу сразу два значения температуры: в градусах Цельсия и Фаренгейта.
У нас получилась простая метеостанция, которая умеет работать самостоятельно и передавать данные на компьютер. Это самый простой кирпичик для создания умного дома. Такие устройства можно использовать для контроля температуры в комнатах и парниках, управления системами отопления и подогрева воды, в качестве противопожарной сигнализации. Всё зависит только от вашей фантазии.
P.S. Если что-то непонятно или хочется поговорить о чём-то более подробно, пишите в комментариях. Обязательно отвечу!
Измерьте температуру с помощью платы Arduino и термистора NTC
Задумывались ли вы, как такие устройства, как термостаты, нагревательные кровати 3D-принтеров, автомобильные двигатели или печи измеряют температуру? Благодаря этой статье вы можете понять принцип!
В продукте, зная температуру, можно получить очень полезные данные. Информация о температуре помогает отрегулировать температуру в помещении, чтобы поддерживать комфортную среду, обеспечить, чтобы кровать 3D-принтера была достаточно горячей, чтобы такие материалы, как АБС, прилипали к его поверхности, предотвращали перегрев двигателя и не сжигали пищу.
В этой статье мы сосредоточимся только на одном типе датчика, который может измерять температуру. Этот датчик называется термистором. Термисторы более чувствительны к температуре, чем резисторы других типов.
Мы будем использовать плату разработки Arduino для измерения и обработки показаний термистора, а затем преобразуем их в распознаваемый формат единичных температурных единиц.
Вот изображение термистора, который мы будем использовать:
Необходимые материалы
● Совет по разработке Arduino MEGA или Arduino Uno
● соединительный провод
● Припой и паяльник
● среда разработки Arduino IDE
Связанные теоретические знания
В обычных применениях резисторов вы не хотите, чтобы сопротивление изменялось с температурой. На самом деле, это невозможно в реальной жизни, но это может обеспечить незначительное изменение сопротивления при больших изменениях температуры. Если изменение температуры большое, сопротивление может вызвать странные явления в цепи, такие как светодиод становится ярче или темнее при изменении температуры окружающей среды.
Но что, если вы действительно хотите, чтобы яркость светодиодов изменялась в зависимости от температуры? Это где термисторы входят. Как вы уже догадались, сопротивление термистора сильно меняется при небольших изменениях температуры. Чтобы проиллюстрировать эту концепцию, рассмотрим следующую типичную кривую для термистора:
Пожалуйста, обратитесь к следующим ссылкам для получения дополнительной информации:https://www.yiboard.com/thread-947-1-1.html
Датчик: термистор NTC; 3,3÷5ВDC; IC: NCP18WF104F03RC; ARDUINO
Датчик: термистор NTC; 3,3÷5ВDC; IC: NCP18WF104F03RC; ARDUINO — ООО «Компания Радионикс»Вид датчика | температуры |
Диапазон измерения температуры | -40…125°C |
Интерфейс | Grove Interface (4-wire) |
Информация | а лишь его компонентом Товар не являтся готовым устройством |
Кол-во каналов | 1 |
Микросхема | NCP18WF104F03RC |
Монтаж | винтами |
Назначение | ARDUINO |
Напряжение питания | 3.3…5В DC |
Обозначение производителя | TEMPERATURE SENSOR |
Производитель | SEEED STUDIO |
Размеры | 24 x 20 x 9.8мм |
Серия | Grove |
Сопротивление | 100кОм |
Тип датчика | термистор NTC |
Точность измерения температуры | ±1,5°C |
Состав набора | модуль соединительные провода |
Масса брутто | 0.03 kg |
Срок поставки | 10-15 рабочих дней |
2021 ООО «Компания Радионикс»
arduino — Rx и Tx создают много шума при работе на ESP8266 и Arduino
Я подключил Arduino Pro-Mini 3,3 В 8 МГц к ESP8266 через I2C.
Arduino отвечает за сбор данных с термистора (аналоговая температура) (T2) и SI7021 (цифровая температура) (T1).
ESP8266 отвечает за отправку данных, полученных от Arduino, в конечную точку.
Вот мой репозиторий: https://github.com/ClemRz/Solar-Water-Heater -Монитор. В папке res вы найдете изображение схемы.
У меня проблема в том, что пока я оставляю программатор FTDI RS232 подключенным к Arduino или ESP, у меня плавный отклик от термистора, но как только я отсоединяю его, отклик получит некоторый шум. Что происходит?
Вот график, на котором мы можем увидеть 3 этапа: https://i.stack.imgur.com /TsnvY.png
- Программист отключен: виден шум
- Программист подключен: плавная бесшумная кривая
- Программист снова отключился: шумный
Если я удаляю Rx и Tx и оставляю GND подключенным к FTDI, я также замечаю, что показания плавные и бесшумные.
Решено: я переключил настенный адаптер на более качественный, и он решил проблему с шумом.
-1
ClemRz 4 Окт 2017 в 21:44
3 ответа
Лучший ответ
Переключите настенный адаптер на более качественный, и он устранит проблему с шумом.
0
ClemRz 12 Окт 2017 в 20:34
Я проверил вашу схему в Fritzing, если вы используете термистор NTC, вам нужно подключить штырь к 5 В, а другой — к аналоговому входу с помощью понижающего резистора. Так же, как это изображение.
Я надеюсь, что это поможет вам прочитать хорошие аналоговые сигналы термистора
1
A5C1D2h3I1M1N2O1R2T1 6 Окт 2017 в 03:12
Откуда вы получаете блок питания при отключении интерфейса FTDI?
Я столкнулся с той же проблемой, когда не правильно подключил площадку. Дважды проверьте, что все ваши заземления соединены вместе (от вашей основной цепи и от FTDI / USB). Помните, земля опорное напряжение , которое должно оставаться постоянной в течение вашей схеме .
0
javorosas 4 Окт 2017 в 22:06
КАК: Температурный датчик термистора — 2021
Одним из наиболее распространенных типов температурных датчиков на рынке является термистор, сокращенная версия «термочувствительного резистора». Термисторы — недорогие датчики, которые очень прочные и надежные. Термистор является температурным датчиком выбора для применений, требующих высокой чувствительности и хорошей точности. Термисторы ограничены небольшими рабочими температурными диапазонами из-за их нелинейного отклика на температуру.
строительство
Термисторы представляют собой двухпроводные компоненты из спеченных оксидов металлов, которые доступны в нескольких типах упаковки для поддержки различных применений. Наиболее распространенным термисторным пакетом является небольшой стеклянный шарик диаметром от 0,5 до 5 мм с двумя проводами. Термисторы также доступны в поверхностных монтажных пакетах, дисках и встроены в трубчатые металлические зонды. Термисторы стеклянных шариков довольно прочные и надежные, причем наиболее распространенным способом отказа является повреждение двух проводов. Однако для применений, требующих большей степени прочности, термисторы типа металлических трубных зондов обеспечивают большую защиту.
Выгоды
Термисторы имеют ряд преимуществ, включая точность, чувствительность, стабильность, быстрое время отклика, простую электронику и низкую стоимость. Схема взаимодействия с термистором может быть такой же простой, как подтягивающий резистор, и измерять напряжение на термисторе. Тем не менее, реакция термисторов на температуру очень нелинейна, и их часто настраивают на небольшой температурный диапазон, который ограничивает их точность до малого окна, если не используются схемы линеаризации или другие методы компенсации. Нелинейный отклик делает термисторы очень чувствительными к изменениям температуры. Кроме того, небольшие размеры и масса термистора дают им небольшую тепловую массу, которая позволяет термистору быстро реагировать на изменение температуры.
Поведение
Термисторы доступны с отрицательным или положительным температурным коэффициентом (NTC или PTC). Термистор с отрицательным температурным коэффициентом становится менее резистивным при повышении температуры, когда термистор с положительным температурным коэффициентом увеличивается по мере увеличения температуры. Термисторы PTC часто используются последовательно с компонентами, где скачки тока могут привести к повреждению. В качестве резистивных компонентов, когда ток протекает через них, термисторы генерируют тепло, которое вызывает изменение сопротивления. Поскольку термисторы либо требуют, чтобы источник тока или источник напряжения работал, самонагреваемое индуцированное изменение сопротивления является неизбежной реальностью с термисторами. В большинстве случаев эффекты самонагрева минимальны, и компенсация необходима только при высокой точности.
Режимы работы
Термисторы используются в двух режимах работы за пределами обычного режима сопротивления и температуры. Режим напряжения-vs-current использует термистор в режиме самонагрева, стабильного состояния. Этот режим часто используется для расходомеров, где изменение потока жидкости по термистору приведет к изменению мощности, рассеиваемой термистором, его сопротивлением и током или напряжением в зависимости от того, как он управляется. Термистор можно также эксплуатировать в режиме с течением времени, когда термистор подвергается воздействию тока. Ток заставит термистор самонагреваться, увеличивая сопротивление в случае термистора NTC и защищая цепь от всплеска высокого напряжения. В качестве альтернативы, термистор PTC в том же приложении может использоваться для защиты от сильных токов.
Приложения
Термисторы имеют широкий диапазон применений, причем наиболее распространенными являются прямое температурное зондирование и подавление выбросов. Характеристики термисторов NTC и PTC предназначены для приложений, в том числе:
- Индикаторы уровня жидкости
- температурная компенсация
- Измерение расхода
- Вакуумные датчики
- Тепловая защита
- Контроль усиления усилителя
- Схемы задержки времени
- Термовыключатели
Линеаризация
Из-за нелинейного отклика термисторов часто требуются линеаризационные схемы для обеспечения хорошей точности в диапазоне температур. Нелинейный резистивный отклик на температуру термистора задается уравнением Штейнхарта-Харта, которое обеспечивает хорошую устойчивость к температурной кривой. Однако нелинейный характер приводит к низкой точности на практике, если не используется аналого-цифровое преобразование с высоким разрешением. Внедрение простой аппаратной линеаризации параллельного, последовательного или параллельного и последовательного сопротивления с термистором значительно улучшает линейность отклика на термисторы и продлевает температурное окно термистора с некоторой точностью. Значения сопротивления, используемые в схемах линеаризации, должны выбираться так, чтобы центрировать температурное окно для максимальной эффективности.
Измерьте температуру с помощью Arduino и термистора NTC
ТермисторNTC (отрицательный температурный коэффициент) имеет характеристику нелинейного обратного переменного сопротивления по отношению к изменению температуры. То есть значение сопротивления уменьшается при повышении температуры термистора и увеличивается при понижении температуры. График термостойкости нелинейный, так как он не имеет прямой линии. Эта скорость изменения сопротивления в зависимости от кривой температуры указывается постоянным значением, называемым бета-значением или бета-коэффициентом.
В коде температура термистора NTC рассчитывается с использованием уравнения Стейнхарта – Харта. Считается, что это лучшее математическое выражение для определения зависимости сопротивления от температуры термистора NTC. Он может получить значения температуры, которые приблизительно равны фактическим значениям, исходя из мгновенного сопротивления термистора.
Стейнхарт – Харт β уравнение параметров, 1 / T = 1 / To + 1 / B In (R / Ro)
T — Температура
T o — Номинальная температура, 25 ° C или 298.15 К
B — бета-коэффициент
R — Измеренное сопротивление термистора
R o — Номинальное сопротивление, сопротивление при температуре T 0 составляет 25 ° C или 298,15K
Значение температуры в кельвинах для соответствующего сопротивления (R) термистора NTC, T = 1 / (1 / To + 1 / B In (R / Ro))
Для измерения температуры можно использовать как модуль термистора, так и автономный термистор.
В приведенной ниже автономной схеме термистор 50 кОм соединен последовательно с резистором 10 кОм, а источник питания 5 В подключен к последовательной цепи.Аналоговый вход Arduino подключен к термистору, поэтому сопротивление термистора можно рассчитать по измеренному на нем падению напряжения.
В термисторном модуле аналоговый выход модуля подключен к аналоговому выводу Arduino, который имеет ту же схему, что и выше. Он также имеет аналоговый вход Arduino, подключенный через термистор NTC с последовательным резистором 10 кОм и подключенный к источнику питания 5 В.
Единственное отличие модуля в том, что он имеет дополнительный цифровой выход с пороговым значением, которое можно регулировать с помощью потенциометра.Он выдает на выходе ВЫСОКОЕ состояние, если температура ниже порогового значения, и переключает выход на НИЗКОЕ, когда температура превышает пороговое значение. Он также имеет светодиодный индикатор DO, который работает в обратном направлении по отношению к цифровому выходу; Светодиод горит, когда выходной сигнал НИЗКИЙ, и светодиод не горит, когда выходной сигнал ВЫСОКИЙ.
В обеих вышеупомянутых схемах термистор включен последовательно с резистором фиксированного значения. Следовательно, напряжение на термисторе будет пропорционально делению напряжения в цепях последовательных резисторов. Таким образом, используя формулу деления напряжения, мгновенное значение сопротивления рассчитывается на основе напряжения, измеренного на термисторе.
V RT = V * R T / R S + R T путем преобразования этого уравнения выражение для RT может быть получено как, R T = V RT * Rs / (V — В РТ ).
Rs — Последовательный резистор
R T — Мгновенное значение сопротивления термистора
В — полное напряжение на последовательном резисторе
В RT — Напряжение на термисторе
Затем это значение резистора можно применить в уравнении бета-параметра Стейнхарта – Харта, которое дает значение для температуры в градусах Кельвина.Из кельвина значения температуры можно легко преобразовать в градусы Цельсия или Фаренгейта с помощью приведенных ниже уравнений.
Кельвина в Цельсия, T Цельсия = T Кельвина — 273,15
Цельсия в Фаренгейта, T Фаренгейта = T Цельсия x 9,0 / 5,0 + 32,0
Кельвина в Фаренгейта, T Фаренгейта = (T Кельвина — 273,15) x 9,0 / 5,0 + 32,0
Код
int Ro = 50, B = 3950; // Номинальное сопротивление 50 кОм, постоянная бета int Rseries = 10; // Последовательный резистор 10К float To = 298.15; // Номинальная температура void setup () { Серийный . Начало (9600); } void loop () { / * Чтение аналогового выхода модуля NTC, т.е. напряжение на термисторе * / float Vi = analogRead (A0) * (5.0 / 1023.0); // Преобразование измеренного напряжения в значение сопротивления // Все сопротивления указаны в килоомах. float R = (Vi * Rseries) / (5 - Vi); / * Использовать значение R в уравнении Стейнхарта и Харта Рассчитайте значение температуры в кельвинах * / float T = 1 / ((1 / To) + ((log (R / Ro)) / B)); поплавок Tc = T - 273.15; // Преобразование кельвина в градусы Цельсия float Tf = Tc * 9.0 / 5.0 + 32.0; // Преобразование Цельсия в Фаренгейт Serial .println ((String) «Температура в градусах Цельсия:» + Tc + «° C»); Serial .println ((String) «Температура в градусах Фаренгейта:» + Tf + «° F»); Серийный .println (""); задержка (1000); }
И модуль, и схема имеют термистор NTC 50 кОм, который имеет номинальное сопротивление 50 кОм при номинальном значении температуры T 0 25 ° C или 298.15 кОм, а также последовательное сопротивление 10 кОм в обеих цепях. Поэтому измените значение «Ro» и значение «Бета» в коде с помощью соответствующего термистора, используемого в цепи, и «Rseries со значением последовательного сопротивления. В коде значения сопротивления указаны в килоомах, поэтому просто используйте 10 или 50 для значений 10 или 50 кОм.
Адам Мейер | Arduino + термистор
Термистор — это терморезистор. Это простое устройство, которое меняет свое сопротивление в зависимости от температуры. Если LRD / Фоторезистор — это день класса arduino.Термистор должен быть 1.01 день. (Могу ли я сделать это?).
Если вам нужны точные показания температуры, это не для вас. Проверьте DS18B20, TMP102 или MLX
Термисторы
не так точны или что-то в этом роде, поэтому вы не сможете определить температуру с их помощью, но если вам нужно знать, когда температура изменилась, это сработает для вас. И с другой стороны, они безумно дешевы, учитывая альтернативы, невероятно просты в подключении и имеют один из самых простых кодов.Вы можете легко найти их в большинстве магазинов электроники для хобби или просто добавить их в свой следующий заказ Sparkfun.
Подключение и почему
Термистор изменяет свое сопротивление в зависимости от температуры, поэтому мы можем измерить это изменение с помощью одного из аналоговых выводов Arduino. Но для этого нам нужен фиксированный резистор (неизменяемый), который мы можем использовать для этого сравнения (мы используем резистор 10 кОм). Это называется делителем напряжения и делит 5 В между термистором и резистором.
Аналоговое считывание на вашем Arduino — это, по сути, измеритель напряжения. при 5 В (его максимум) он будет показывать 1023, а при 0 В — 0. Таким образом, мы можем измерить напряжение на термисторе с помощью analogRead, и у нас есть наши показания.
Количество этих 5 В, которые получает каждая часть, пропорционально ее сопротивлению. Таким образом, если термистор и резистор имеют одинаковое сопротивление, 5 В распределяются поровну (2,5 В) на каждую часть. (аналоговое чтение 512)
Но если термистор действительно горячий и показывает сопротивление всего 1 кОм, резистор 10 кОм будет впитывать в 10 раз больше этих 5 В.Таким образом, термистор будет получать только 0,45 В. (аналоговое показание 92)
И если он находится в холодильнике, термистор может иметь сопротивление 40 кОм, поэтому термистор будет впитывать в 4 раза больше этих 5 В, чем резистор 10 кОм. Таким образом, термистор получит 4 В. (аналоговое показание 819)
Код
Код Arduino для этого просто не может быть проще. Мы добавляем к нему несколько серийных отпечатков и задержек, чтобы вы могли легко видеть показания, но их не обязательно, если они вам не нужны.
внутренний термисторPin = A0; // аналоговый вывод 0 void setup () { Serial.begin (9600); } void loop () { int термисторReading = analogRead (термисторPin); Serial.println (считывание термистора); задержка (250); // здесь только для замедления вывода для облегчения чтения }
Расчет температуры с помощью Arduino Nano или Arduino Uno и схемы термистора NTC, Часть 1 — Датчики North Star
Делитель напряжения используется с резистором (R1) и термистором (Th2). Сторона делителя напряжения, соединяющаяся с землей, выбирается в качестве термистора, поскольку термистор часто более подвержен потенциальным коротким замыканиям, и, по крайней мере, потенциальные короткие замыкания защищены сопротивлением верхней части делителя напряжения.Показания АЦП снимаются с середины делителя. На входе АЦП имеется конденсатор емкостью 0,1 мкФ (C1), развязанный с землей, который помогает сгладить входной шум и дает нам стабильные показания без необходимости передискретизации показаний АЦП.
Контакт A1 выбирается как цифровой выход или простой источник напряжения включения / выключения для подачи тока на цепь термистора. Мы будем проводить замеры термистора только примерно раз в секунду, поэтому нет необходимости в том, чтобы через термистор постоянно протекал ток, который способствует ненужному самонагреву термистора и немного изменяет точность показаний.В большинстве случаев этот эффект незначителен, но для крошечных термисторов он весьма заметен. Для нашего приложения мы включим схему на 100 миллисекунд, чтобы дать конденсатору стабилизироваться, запишем показания АЦП, а затем выключим схему на 900 миллисекунд, чтобы минимизировать возможное самонагревание.
Необходимая точность / Суммирование допусков
Мы хотим, чтобы наша схема имела точность до ± 1 ° C, поэтому мы должны просуммировать все наши допуски и убедиться, что они находятся в нужном нам диапазоне.При повышении температуры термистора NTC не только уменьшается его сопротивление, но и значение отрицательного температурного коэффициента (NTC) становится немного менее выраженным. Например, термистор кривой 44 имеет значение NTC -4,4% / ° C при 25 ° C и значение NTC -3,4% / ° C при 70 ° C. Поскольку мы хотим, чтобы точность измерения температуры составляла от ± 1 ° C до 70 ° C, наше ограничение на общую точность измерения сопротивления и преобразования в температуру будет составлять ± 3,4%.
Используя ± 0.Термистор 5 ° C, указанный для температуры 70 ° C, может привести к ошибке ± 3,4% / 2 = ± 1,7%.
Использование резистора 10 кОм ± 1% в делителе напряжения добавляет ошибку ± 1%.
Это оставляет нам оставшуюся допустимую погрешность ± (3,4% — 1,7% — 1%) = ± 0,7% для ошибки измерения АЦП или любых других ошибок, таких как сдвиги в резисторе ± 1% 10 кОм, если этот резистор нагревается или охлаждается. вниз. Например, стандартный резистор 10 кОм с точностью ± 1% может иметь температурный коэффициент ± 100 ppm / ° C, что в диапазоне ± 20 ° C составляет ± 0.Ошибка 2% на резисторе, поэтому остается погрешность измерения ± (0,7% — 0,2%) = ± 0,5%. Я считаю, что оставшаяся допустимая погрешность измерения ± 0,5% является приемлемой, если мы используем простую формулу калибровки АЦП для этой конкретной схемы. Подробнее об этой формуле калибровки в Части 2 этой серии.
Код измерения термистора Arduino Nano / Arduino Uno
В следующей части мы обсудим код, используемый для запуска этой схемы.
Код измерения термистора Arduino Nano / Arduino Uno
openQCM Датчик температуры с использованием термистора с Arduino
openQCM имеет датчик температуры с высокой точностью на основе термистора и Arduino.Точность кварцевых микровесов зависит от температуры.
Датчик температуры openQCM физически помещается в микросхему Arduino Micro, поэтому он фактически измеряет температуру устройства openQCM. Температура окружающей среды является ключевым параметром при разработке QCM , поскольку частота кварцевого резонатора частично зависит от колебаний температуры.
Сначала мы выбираем датчик сопротивления RTD для измерения температуры.Но результаты тестов были совсем не хорошими! Нам удалось измерить температуру с плохим разрешением около 2 ° C. Хотя я обработал сигнал, я определенно не мог творить чудеса!
Наконец, мы нашли очень простое решение, заменив RTD на датчик температуры Thermistor без изменения схемы экрана openQCM. Термисторный датчик температуры имеет разрешение около 0,2 ° C
Термистор — это специальный резистор, сопротивление которого сильно зависит от температуры.Обычно он используется в качестве датчика температуры. Поскольку измерение температуры связано с сопротивлением термистора , мы должны измерить сопротивление. Плата Arduino не имеет встроенного датчика сопротивления. Нам нужно преобразовать сопротивление термистора в напряжение и измерить напряжение через аналоговый вывод Arduino. Наконец, мы рассчитываем температуру, используя уравнение Стейнхарта – Харта , которое описывает кривую зависимости сопротивления термистора от температуры.
Схема делителя напряжения для измерения температуры с помощью термистора и Arduino
Для измерения напряжения мы последовательно подключаем термистор к другому постоянному резистору R в цепи делителя напряжения .Переменное сопротивление термистора обозначено как R0. Выбираем термистор с сопротивлением 10 кОм при 25 ° C и фиксированным сопротивлением 10 кОм. Входное напряжение Vcc схемы делителя напряжения подключено к Arduino Micro 3V, который обеспечивает питание 3,3 В, генерируемое встроенным стабилизатором, с максимальным потребляемым током 50 мА. Вывод 3V подключен к выводу AREF, потому что нам нужно изменить верхнее задание диапазона аналогового входа.
Скажем, выходное напряжение V0, источник питания Vcc, переменное сопротивление термистора R0 и фиксированное сопротивление R, выходное напряжение определяется как:
Выходное напряжение подключается к аналоговому входному контакту A1 Arduino.Arduino Micro предоставляет 10-битный аналого-цифровой преобразователь ADC , что означает, что выходное напряжение преобразуется в число от 0 до 1023. Скажем, A1 значение АЦП, измеренное Arduino Micro, тогда выходное напряжение определяется как:
Объединив предыдущие уравнения, получаем:
Это действительно интересно! Сопротивление термистора R0 не зависит от напряжения питания Vcc
.Для измерения температуры нам понадобится термистор с переменным сопротивлением R0.Используя предыдущее уравнение и некоторую математику, мы имеем:
Измерение сопротивления зависит от АЦП Arduino A1, постоянного резистора R в делителе напряжения и разрешения АЦП 1023.
Мы использовали некоторые приемы, чтобы улучшить измерение температуры с помощью термистора .
Напряжение питания Я уже показал, что измерение сопротивления термистора не зависит от напряжения питания Vcc.Итак, почему мы подключаем Vcc к контакту 3V Arduino, а не 5V? Источник питания 5 В поступает от USB вашего компьютера и используется для питания Arduino и многих других вещей на плате. Так что это определенно шумно! Вместо этого вывод 3V намного более стабилен, потому что он проходит через вторичный каскад регулятора. Кроме того, как я объясню в конце поста, точность измерения температуры зависит от напряжения питания. Чем ниже напряжение питания, тем выше точность измерения температуры.
АЦП Плата Arduino имеет 10-битное разрешение АЦП. Насколько мне известно, самый простой способ улучшить разрешение АЦП — это собрать несколько отсчетов и взять среднее значение . Я предлагаю усреднить более 10 выборок, чтобы сгладить данные АЦП.
Допуск термистора Каждый пассивный электронный компонент имеет номинальное значение и допуск, который представляет собой относительную погрешность номинального значения. Я предлагаю выбрать термистор 10 кОм с допуском 1%, что означает, что сопротивление имеет ошибку 100 Ом при 25 ° C.При 25 ° C разница в 450 Ом соответствует примерно 1 ° C, поэтому допуск в 1% соответствует температурной погрешности около 0,2 ° C, что достаточно для этого применения!
Мы разрабатываем датчик температуры, поэтому последний шаг — преобразование сопротивления в измерение температуры. Термистор имеет довольно сложную взаимосвязь между сопротивлением и температурой, обычно вы можете использовать таблицы преобразования сопротивления в температуру. Вместо этого я предлагаю использовать уравнение Стейнхарта-Харта (также известное как B или уравнение параметра β ), которое является хорошим приближением зависимости сопротивления от температуры:
где R — сопротивление термистора при общей температуре T, R0 — сопротивление при T0 = 25 ° C, а B — параметр, зависящий от термистора.Значение B обычно находится в диапазоне от 3000 до 4000. Уравнение зависит от трех параметров (R0, TO и B), которые вы можете найти в любом техническом описании термистора. Хотя это приближение, оно достаточно хорошо для диапазона температур применения, и его легче реализовать в соответствии с таблицей поиска.
Измерение температуры реализовано в коде Arduino с помощью функции getTemperature . Код основан на коде, написанном леди Адой на веб-сайте Adafruit.
Вот мой набросок температуры с использованием термистора с Arduino:
Я показал ранее, что используя термистор на 10 кОм с допуском 1%, вы можете измерить температуру с разрешением около 0,25 ° C. Почему термистор лучше, чем RTD (датчик сопротивления температуры) в качестве датчика температуры для этого конкретного приложения?
Оба датчика измеряют температуру, измеряя изменение их сопротивления.Для обоих датчиков используется схема делителя напряжения. В первом электронном исполнении openQCM мы выбрали датчик RTD PT100, номер детали Jumo PCS_1.1503.1, с номинальным значением 100 Ом и допуском 0,12%. Датчик RTD PT100 сильно зависит от перегрева . Рекомендуемый измерительный ток составляет i_min = 1,0 мА, а максимальный ток i_max = 7,0 мА. Нам нужно выбрать последовательный постоянный резистор, чтобы выполнить это требование. Но чем ниже ток, тем ниже разрешение измерения резистора RTD.Чтобы найти баланс между этими требованиями, я выбрал последовательный резистор R = 400 Ом, который определяет ток около 6,5 мА в цепи делителя напряжения.
Скажем, Vcc — напряжение питания, R — постоянное последовательное сопротивление и R0 — переменное сопротивление RTD, при 25 ° C ток:
Таблица преобразования сопротивления стандартного платинового RTD в температуру доступна, например, по этой ссылке. Учтите значения сопротивления RTD при 0 ° C и 50 ° C:
Изменение температуры на 50 ° C соответствует изменению напряжения dV, определяемому как;
Скажем, Vcc = 3.3 В и R = 400 Ом измеряем изменение напряжения:
При использовании 10-разрядного АЦП Arduino изменение напряжения dV соответствует 1023 * 0,1 / 3,3 = 31 делению. Наконец, точность dT датчика температуры RTD определяется выражением:
Датчик температуры RTD имеет точность 1,6 ° C, что слишком мало для такого применения!
Сделайте то же самое с термистором ! Используя стандартную таблицу сопротивления термистора 10 кОм по отношению к температуре, получаем:
Если Vcc = 3.3 В и постоянный последовательный резистор R = 10 кОм, изменение температуры 50 ° C соответствует изменению напряжения:
Количество делений АЦП определяется по формуле:
Точность температуры:
Термисторный датчик имеет точность измерения температуры около 0,2 ° C. в диапазоне температур, представляющем интерес для openQCM. Точность термистора намного лучше, чем у RTD, и определенно достаточно хороша для этого приложения!
ура
Марко
, соединяющийся с измерителем температуры Arduino
Термистор, взаимодействующий с Arduino : этот модуль используется для измерения температуры и выдает выходной сигнал как на аналоговом , так и на цифровом контакте .Этот модуль имеет множество компонентов, таких как термистор, потенциометр 100 кОм и компаратор lm393.
- Термистор: Термистор — очень дешевый, недорогой и точный датчик. Он похож на переменный резистор, сопротивление которого изменяется при изменении температуры.
- Потенциометр 100 кОм: Он в основном используется для цифрового выхода. Цифровой выход можно изменить, изменив значение потенциометра .
- Компаратор LM393: Компаратор lm393 сравнит значение термистора и потенциометра и выдаст цифровой выходной сигнал в соответствии с ним.
Модуль имеет аналоговый и цифровой выход
- Аналоговый выход выдает переменное напряжение в зависимости от приложенной к нему температуры.
- Цифровой выход выдает логику 1 или 0, установленную синим компонентом на плате, который является потенциометром.
Значение термистора изменяется с изменением температуры. Переменный резистор 100 кОм соединен последовательно с термистором через +5 В и землю.На центральный штифт потенциометра подается напряжение, которое изменяется в зависимости от температуры. Аналоговый выход может быть взят из A0 модуля, и он будет измеряться Arduino. . Для цифрового выхода компаратор lm393 будет сравнивать напряжение с термистора и потенциометра и выдает выходной сигнал с логической 1 и 0 на D0.
Вывод из модуля термистораМодуль имеет четыре контакта
A0 : для аналогового выхода
D0 : Для цифрового выхода
Gnd : заземлить
5 В: Для питания
Интерфейс модуля термистора с ArduinoПодключения очень простые.Подключите 5 В и землю модуля к 5 В и земле Arduino, а аналоговые и цифровые контакты к A0 и контакту 3 Arduino. Если вы хотите увеличить уставку цифрового выхода, переместите верхнюю часть потенциометра с помощью винта. Если светодиод не горит, поверните верхнюю часть по часовой стрелке, пока светодиод не загорится, а затем двигайтесь в другом направлении, пока он не погаснет.
Код интерфейса термисторного модуля с Arduino Код
для подключения термистора к Arduino приведен ниже.Комментарии сделаны к каждой строке для понимания пользователем, и каждая строка очень четкая и понятная.
// Этот код предназначен для модуля аналогового и цифрового датчика температуры #define LED_PIN 13 // определение пина 13 как входного пина светодиода #define DIGITAL_INPUT 3 // определение цифрового входа на выводе 3 #define ANALOG_INPUT A0 // определение аналогового входа на A0 // инициализируем переменные int digital_output; // Это прочитает цифровое значение int analog_output; // Это прочитает аналоговое значение int revised_output; // переменная для хранения исправленного значения float temp_C; // Переменная для хранения температуры float temp_f; // Переменная для хранения Фаренгейта void setup () // Все, что написано, будет выполнено один раз.{ pinMode (LED_PIN, ВЫХОД); // объявление вывода 13 как вывода pinMode (DIGITAL_INPUT, INPUT); // объявляем вывод 3 как вход pinMode (АНАЛОГ_ВХОД, ВХОД); // объявление A0 как входной контакт Серийный .begin (9600); // выбираем скорость 9600 бод Serial .println ("microcontrollerslab.com: данные: "); } void loop () // Все, что в нем написано, будет работать непрерывно { analog_output = аналоговое чтение (ANALOG_INPUT); // Считываем аналоговое значение и сохраняем его в analog_output Serial .print («Аналоговое значение модуля =»); Серийный .печать (аналоговый_выход), DEC; // Это отобразит аналоговое значение // Модуль имеет обратное подключение термистора revised_output = карта (аналоговый_выход, 0, 1023, 1023, 0); temp_C = Термистор (revised_output); temp_f = (temp_C * 9.0) / 5.0 + 32.0; // Чтение цифровых данных digital_output = digitalRead (DIGITAL_INPUT); Серийный .print ("Цифровое значение модуля ="); Последовательный .println (digital_output), DEC; // Это отобразит цифровое значение на дисплее Serial .print ("LED is ="); if (digital_output == HIGH) // Светодиод загорится, когда значение датчика превысит заданное значение { digitalWrite (LED_PIN, HIGH); Серийный .печать ("ВКЛ"); } еще { digitalWrite (LED_PIN, LOW); Последовательный .print ("ВЫКЛ"); } // Это напечатает температуру Serial .print («Измеренная температура =»); Серийный .print (temp_f, 1); // Это отобразит температуру в градусах Фаренгейта Серийный номер .print («F»); Серийный .печать (temp_C, 1); // Это отобразит температуру в градусах Цельсия Серийный номер .println ("C"); Серийный .println (); // Оставляем пустую строку Задержка (1000); // Ждем 1 секунду } двойной термистор (int RawADC) { двойная температура; Temp = log (((10240000 / RawADC) - 10000)); Темп = 1 / (0.001129148 + (0,000234125 * Temp) + (0,0000000876741 * Temp * Temp * Temp)); Темп = Темп - 273,15; // Это преобразует градусы Кельвина в Цельсия return Temp; }
Результат будет выглядеть так microcontrollerslab.com: Данные Аналоговое значение модуля = 768 Цифровое значение модуля = 1 Светодиод горит = ВЫКЛ. Измеренная температура = 80,2 F 19,3 C
Итак, в этой статье мы узнали, что такое термистор, как связать термистор с Arduino с помощью принципиальной схемы и кода с помощью Arduino IDE.Я рекомендую вам также прочитать статью о цифровых датчиках температуры и влажности. Это также поможет вам выбрать лучший датчик для вашего проекта встроенных систем. Я надеюсь, что вы, должно быть, получили полезные знания после прочтения этой статьи, дайте нам знать своими комментариями, если у вас возникнут какие-либо проблемы.
arduino — Почему мой термистор 10k NTC в среднем точен до 2C
Где «проблема» ?:
Проблема в том, что вы, кажется, не знаете (поскольку предоставленной информации недостаточно), связана ли ошибка с АЦП на входе или с тем, что АЦП «видит».
Ваша проблема может быть в
Точность термистора (из-за резистивного нагрева или по другим причинам) или
В преобразовании сопротивления термистора в указанную температуру или в
Измерение задействованных напряжений.
Определение того, какой из них (или несколько) проблематичен, является важным первым шагом. Попытки исправить ошибки в одной области, «играя» с другой, никогда не решат ваших проблем.
____________________________________
ПРОВЕРКА ИЗМЕРЕНИЯ НАПРЯЖЕНИЯ:
Способ определения того, сообщает ли АЦП о вводе, который должен быть в пределах ожидаемой точности, лучше сделать, НЕ применяя уравнение Стейнхарта-Харта на начальном этапе, а вместо этого работая напрямую с измеренным напряжением.
Измерьте и запишите температуру жидкости до, во время и после испытаний.
Измерьте напряжение на датчике с подходящей точностью и качеством DMM
Измерьте напряжение датчика с помощью АЦП.2 x R = (25 / 484.E6 x 12k) 25/484/1000000 = 0,62 мВт.
В техническом паспорте термисторов указана постоянная рассеяния, равная 1 мВт / градус_С номинальной.
Таким образом, можно ожидать, что рассеяние 0,62 мВт даст вам нагрев примерно на 0,62 ° C и, как следствие, изменение видимой температуры.Это «номинал» с неустановленными предположениями производителя. Например, изменение скорости потока жидкости вокруг NTC изменит эффекты самонагрева. Инкапсуляция (вероятно) увеличит темп.
Добавление изоляции «жидкой изолентой» (в то время как понятная вещь, которую нужно сделать для достижения водонепроницаемости «, вероятно, будет иметь неизвестный эффект на постоянную рассеяния.
В каком направлении лежит ошибка. Приведенные результаты неоднозначны.
Я ОЖИДАЛ, что самонагревание приведет к тому, что NTC сообщит о более высокой температуре, чем точный датчик — это то, что вы, кажется, видите?Я мог бы снова включить эту потенциальную ошибку в уравнения, но это то, что вам нужно посмотреть и прокомментировать.10) = 4,88 мВ.
При ~~ 21C / 12K напряжение термистора будет
В = Vref x Rt / (10k + Rt)
= 5 x 12k / 22k = 2727 мВ.
Один шаг АЦП в процентах от показания составляет 4,88 мВ / 2727 = 0,18% -> Допустим, 0,2%.Это потенциально намного ниже, чем эффекты самонагревания.
Проблема в том, что вы, кажется, не знаете (поскольку предоставленной информации недостаточно), связана ли ошибка с АЦП на входе или с тем, что видит АЦП.
Способ увидеть, видит ли АЦП то, что он должен с ожидаемой точностью, лучше сделать, НЕ применяя уравнение Стейнхарта-Харта на начальном этапе и работая с измеренным напряжением.
Измерьте напряжение на датчике подходящим качеством DMM
Измерьте и запишите температуру жидкости до и после испытаний.Измерьте напряжение датчика с помощью АЦП.
Повторить с резисторами
Сравните и составьте отчет.
Это позволяет узнать (и сообщить), правильно ли работает фактическое измерение АЦП.
_____________________________________________________
Константа рассеяния термистора.
Отсюда:
https://www.shibauraelectronics.com/products/technical/physical_03.html«Константа теплового рассеяния δ указывает количество энергии, необходимое термистору, чтобы нагреться на 1 ℃, когда он находится под напряжением в неподвижном воздухе (мВт / ℃). Когда мощность W подается на термистор при температуре окружающей среды Ta и температура термистора, наконец, достигает температуры T, устанавливается следующее уравнение.
При приложении мощности, эквивалентной постоянной теплового рассеяния, термистор нагревается на 1 ℃.Это вызывает ошибку между измеренной и фактической температурой окружающей среды.
Модуль термисторного датчика температуры
Следовательно, необходимо разработать схему, чтобы минимизировать потребляемую мощность, чтобы исключить ошибки измерения, вызванные самонагревом термистора. Константа теплового рассеяния δ определяется балансом между «самонагревом» и «тепловыделением». В результате он существенно меняется в зависимости от окружения термистора.
Размещение материалов с высокой теплопроводностью вокруг термистора способствует выделению тепла и увеличивает постоянную δ.
Напротив, конструкция, позволяющая накапливать тепло, его уменьшает.
Следовательно, очень важно выбрать подходящие материалы при сборке термистора.
Также важно после сборки термистора измерить постоянную δ в рабочей среде (воздух, вода, масло, горячая пластина и т. Д.), Чтобы убедиться, что постоянная соответствует вашим требованиям.— ProtoSupplies
Описание
Модуль термисторного датчика температуры использует термистор NTC для измерения температуры и обеспечивает аналоговый выход.
В ПАКЕТЕ:- Модуль датчика температуры термистора
- Использует термистор NTC
- Диапазон измерения от -55 до + 125 ° C
- Обеспечивает аналоговый вывод показаний
- Работа 3,3 и 5 В
В этом модуле используется термистор NTC для измерения температуры. Выход обычно вводится в аналоговый порт на микроконтроллере, где его можно прочитать и рассчитать температуру.
Термисторы — это, по сути, резисторы, значение сопротивления которых изменяется при изменении температуры. NTC означает «отрицательный температурный коэффициент», что означает, что сопротивление датчика будет уменьшаться при повышении температуры.
Термистор включен последовательно с резистором 10 кОм, который создает делитель напряжения. По мере того, как термистор нагревается, сопротивление уменьшается, а аналоговый выход увеличивается до Vcc.
Датчик способен измерять температуру в диапазоне от -55 до + 125 ° C с точностью +/- 0.5 ° С.
Соединения модулей
Модуль имеет 3-контактный разъем на сборке для подключений. Вывод «-» подсоединен к GND, центральный вывод подсоединен к Vcc, а вывод «S» подсоединен к выводу аналогового входа на uC. Если выход идет в неправильном направлении, т. Е. Сопротивление возрастает при повышении температуры, поменяйте местами контакты питания и заземления.
Заголовок 1 x 3
- ‘-‘ = Ground
- Центральный штифт = 5 В
- S = Выходной сигнал.Подключается к контакту аналогового входа на uC
Это часто используемый модуль для базового измерения температуры. После запуска и запуска с микроконтроллером легко протестировать модуль, используя пальцы, чтобы нагреть датчик и контролировать выходной сигнал.
Использование устройства требует математических вычислений для преобразования выходного напряжения в температуру. В нашем собственном тестовом коде мы используем метод Beta для расчета температуры, но есть несколько различных формул, которые можно использовать.Преимущество метода бета-тестирования заключается в том, что вы можете измерять значения компонентов и вводить их в поля, если ваш датчик сконструирован немного иначе.
Самая сложная часть — это вычисление значения Beta, которое есть в таблице данных, если вы используете полностью специфицированную деталь. Если деталь неизвестна, как в случае с большинством этих типов модулей, вы можете ее рассчитать. Эта ссылка предназначена для удобного калькулятора Beta Calculator , где вы измеряете сопротивление термистора при 2 различных температурах, и он даст вам значение Beta.
Чтобы использовать эту программу, вам потребуется несколько значений или измерений, которые нужно вставить в программу:
- Балансировочный резистор : Измерьте фактическое значение балансного резистора, установленного на модуле. Номинально это резистор 10 кОм, поэтому используйте 10000.0, если вы не можете измерить его более точно.
- Макс. АЦП: Обычно 1023,0 при использовании стандартного 10-битного аналогового входа.
- Beta : Из калькулятора Beta Calculator , как указано выше.Чтобы получить это значение, вам нужно будет выполнить несколько измерений температуры.
- Комнатная температура : Текущая комнатная температура, измеренная с максимальной точностью. Затем вам нужно будет использовать онлайн-инструмент преобразования, чтобы получить значение в Кельвинах.
- Resistor Room Temp: Это значение сопротивления термистора NTC на модуле, измеренное при комнатной температуре, которую вы измерили выше. Будьте осторожны, чтобы случайно не нагреть термистор пальцами во время измерения.
Мы подключаем выход датчика к контакту аналогового входа A0, но его можно изменить на любой удобный аналоговый вход.
Пример программы модуля термисторного датчика температуры
/ * Тест модуля термистора NTC Базовый код для чтения вывода модуля термистора. Он использует бета-метод расчета температура. Beta # определяется с помощью онлайн-калькулятора и измерения сопротивления 2 термисторов. над разными темпами. * / константа двойной BALANCE_RESISTOR = 10010.0; // Измеренное значение резистора бортового делителя const double MAX_ADC = 1023.0; // Максимальное количество шагов АЦП (в данном случае 10 бит) const double BETA = 4242.0; // Бета-значение (из таблицы или рассчитанное) const double ROOM_TEMP = 292,75; // температура окружающей среды в Кельвинах const double RESISTOR_ROOM_TEMP = 125000.0; // Измеренное значение термистора при комнатной температуре двойная текущая температура = 0; // Переменная для удержания измеренной температуры int термисторPin = A0; // Вывод АЦП на Arduino (в данном случае Mega2560) // ================================================ =============================== // Инициализация // ================================================ =============================== установка void () { Серийный .begin (9600); // Устанавливаем скорость связи для сообщений окна отладки } // ================================================ =============================== // Главный // ================================================ =============================== пустой цикл () { currentTemperature = readThermistor (); Serial .print («Current Temp is»); Серийный . Печать (текущая температура); Серийный номер .print ("C /"); Серийный .печать (текущая температура * 9/5 +32); Серийный номер .println ("F"); задержка (3000); } // ================================================ =============================== // Функции // ================================================ =============================== двойное считывание термистора () { // Локальные переменные двойной rThermistor = 0; // Значение сопротивления термистора двойной tKelvin = 0; // Расчетная температура в Кельвинах двойной tCelsius = 0; // Расчетная температура в градусах Цельсия int adcSample = 0; // Измерение АЦП adcSample = analogRead (термисторPin); // считываем с пина и сохраняем rThermistor = BALANCE_RESISTOR * ((MAX_ADC / adcSample) - 1); tKelvin = (BETA * ROOM_TEMP) / (BETA + (ROOM_TEMP * log (rThermistor / RESISTOR_ROOM_TEMP))); tCelsius = tKelvin - 273.15; // переводим градусы кельвина в градусы Цельсия вернуть tCelsius; // Возвращаем температуру в градусах Цельсия }
До отгрузки эти модули:
- Проверено
- Базовый аналоговый температурный выход подтвержден
- Упакован в герметичный пакет ESD для защиты и удобства хранения.