Arduino термосопротивление. Терморезисторы

Здравствуй, Хабрасообщество. После прочтения нескольких статей на хабе Arduino я загорелся заполучить эту игрушку. И вот недавно получил посылку с платой. Затем побаловался со светодиодами и захотел чего-нибудь посерьёзнее. Решил сделать простейший термометр, используя всего термистор, резистор на 10 кОм и LCD дисплей. Кому интересно что получилось - прошу под кат.

Начало

Термистор - это переменный резистор, меняющий своё сопротивление в зависимости от температуры окружающей среды.

Нам потребуются следующие детали:
Arduino Uno - 1 шт
Термистор - 1 шт
Резистор c сопротивлением 10 кОм - 1 шт
LCD дисплей HJ1602A - 1 шт
Соединительные перемычки - несколько штук

Всё это у меня было, поэтому я сразу начал проектирование на breadboard.

Ножки к экрану я еще припаял в день покупки.

Затем присоединяем экран к выходам Arduino. У моего экрана распиновка такая.

1 (GND) GND - Земля
2 (VDD) 5v - Питание(+)
3 (VO/Contrast) - Управление контрастностью (сюда я подключил переменный резистор)
4 (RS) - 12 - Канал данных
5 (RW) - 11 - Канал данных
6 (E) - 10 - Канал данных
11 (DB4) - 5 - Канал данных
12 (DB5) - 4 - Канал данных
13 (DB6) - 3 - Канал данных
14 (DB7) - 2 - Канал данных
15 (BL1/Backlight1) - 13 - Питание подсветки(+)
16 (BL2/Backlight2) - GND - Земля(-)

Получилась вот такая картина.

Далее подключим одну ногу термистора к аналоговому входу A4 и резистор на 10 кОм в землю, а вторую ногу термистора к 5V.

В общем то и всё. Аппаратная часть готова. Вот схема.

Программирование

С программированием тут всё понятно. Исходный код скетча:

// подключаем две библиотеки для работы с LCD и математических вычислений #include #include LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // инициализируем LCD int backLight = 13; void setup(void) { pinMode(backLight, OUTPUT); digitalWrite(backLight, HIGH); lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0,0); } // создаем метод для перевода показаний сенсора в градусы Цельсия double Getterm(int RawADC) { double temp; temp = log(((10240000/RawADC) - 10000)); temp = 1 / (0.001129148 + (0.000234125 * temp) + (0.0000000876741 * temp * temp * temp)); temp = temp - 273.15; return temp; } // создаем метод для вывода на экран показаний сенсора void printTemp(void) { double temp = Getterm(analogRead(4)); // считываем показания с сенсора lcd.clear(); lcd.setCursor(0,0); lcd.print("Temperature is:"); lcd.setCursor(0,1); lcd.print(temp); lcd.print(" C"); } void loop(void) { printTemp(); // вызываем метод, созданный ранее delay(1000); }

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

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


Схема измерения температуры с термистором

Мы помним, что на плате Arduino UNO есть шесть аналоговых входов, которые, по сути, являются каналами АЦП. В один из таких каналов мы и включим термистор. Однако как померить его сопротивление, если АЦП умеет измерять только напряжение? Умные ребята придумали для этого использовать схему простого делителя:

Здесь U0 - известное напряжение, R0 - известное сопротивление, RT - сопротивление, зависящее от температуры, Uизм - измеряемое напряжение. Из рисунка очевидно, что для измеряемого напряжения справедливо соотношение:

Откуда сопротивление термистора выражается так:

Однако померить сопротивление мало, нам ведь нужно получить температуру!

Уравнение Стейнхарта-Харта

Типовая зависимость сопротивления термистора от температуры выглядит так:

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

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

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

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

Сенсор в студию

Мой аналоговый температурный сенсор выглядит так:


Черная круглая блямба на переднем плане - и есть термистор. На нем написано "103", а это значит что при комнатной температуре он имеет сопротивление 10 КОм (103=10*10^3). Далее идет микросхемка, которая есть ни что иное, как операционный усилитель LM358P. Есть еще 2 простых резистора, на которых тоже написано 103, один из которых никуда не подключен. Еще помните формулу для RT? Вот мы и нашли для нее R0, оно равно 10 КОм. А U0 равно 5 В, я вам так скажу. Больше на плате ничего нет!

Сенсор очень просто подключается к Arduino Sensor Shield, который, в свою очередь, надевается на Arduino [в этом соль Arduino, кто еще не понял] , прям как у меня вот так:


Ну собственно все - железо готово к лабораторной работе.

Калибровочная установка

Для калибровки понадобится печка, которая показывает свою температуру, и держит ее при этом (!). Нет проблем - пошел в ИНХ СО РАН, их там в каждой лабе по несколько штук. Выбирай по цвету, что называется. Приглянулась мне вот такая:

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

Собираем установочку: Arduino в комп, сенсор в крышечку с водой, крышечку на печку, хвостик под лавочку, накрываем печку колпачком из кварца.


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

Методика калибровки

Пристально смотрим на уравнение Стейнхарта-Харта и видим в нем три неизвестных. Это означает, что нам достаточно провести три измерения и получить, таким образом, три уравнения.

Выбираем три точки на температурной шкале. Мне нравятся, например, 30, 40 и 50 градусов Цельсия. Нагреваем печку до одной из температур, ждем 10 минут, чтобы все термодинамические процессы произошли и энтропия вселенной увеличилась, замеряем сопротивление. Потом повторяем все для второй и третьей температур.

Составляем три уравнения и решаем систему (линейных кстати) уравнений. Нам лениво и мы заставим это делать Mathcad, который нам таки-выдаст коэффициенты Стейнхарта-Харта.

Думаю, тут все понятно.

Serial Communication

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

Чтобы вызвать Serial monitor , выберите в меню Tools->Serial Monitor или нажмите хитрую комбинацию из трех клавиш ctrl+shift+M во время выполнения программы.

Чтобы заставить Arduino вывести что-то в последовательный поток, просто воспользуйтесь функцией Serial.println(число) или Serial.println("текст") .

Последовательный обмен необходимо инициализировать в setup(){} , всунув туда команду Serial.begin(бодрейт) . Бодрейт (baudrate) - количество информации, передаваемой в единицу времени (не путать с битрейтом). Arduino предлагает на выбор: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 бод. Вот что бывает, если не согласовать бодрейт в своей программе и в мониторе последовательного порта:


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

Кодим

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

void setup () {
Serial .begin (115200);
}


void loop () {
double rt; //измеряемая величина
Serial .println ("voltage:" ); //пишем в поток слово для красоты
rt=(analogRead (0)); //читаем значение с сенсора
Serial .println (rt); //выводим значение с сенсора в поток
rt = ((10240000/rt) - 10000); //вычисляем сопротивление по формуле
Serial .println ("resistance:" ); //пишем в поток еще одно слово для красоты
Serial .println (rt); //выводим значение сопротивления в поток
delay (5000); //ничего не делаем 5 секунд
}


В результате все красиво:

Вычисляем коэффициенты Стейнхарца-Харца

По описанной выше методике выписываем на листочек три значения сопротивления при трех разных температурах. Подставляем их попарно в три уравнения Стейнхарца-Харца и решаем систему. Вот фотка моего маткадовского файлика:

Обратите внимание, что я вместо коэффициента "c" написал "се" [цэ], потому что маткад не дает использовать символ "с" кроме как в значении скорости света.

Нижний вектор-столбец и есть наши искомые коэффициенты.

Еще раз кодим

Теперь напишем скетч, который позволит Arduino измерять температуру.

#include //подключаем свою библиотеку с блэкджэком и логарифмами


double Steinhart(int value) {
double Temp; //в итоге эта переменная станет температурой
Temp = log ((10240000/value-10000)); //считаем логарифм
//считаем температуру из уравнения Стейнхарта-Харта
Temp = 1/(0.001768+0.00005719*Temp+0.000001354*Temp*Temp*Temp);
Temp = Temp-273.15;//переводим температуру в градусы Цельсия
return Temp; //передаем температуру обратно в loop
}


void setup () {
Serial.begin(115200); //стартуем последовательное соединение
}


void loop () {
//передаем в функцию Steinhart измеренное значение и выводим температуру, которую она вернет
Serial .println (int (Steinhart(analogRead (0))));
delay (2000); //ничего не делаем 2 секунды
}


Резюме

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

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

Здравствуй, читатели. После прочтения нескольких статей на хабе Arduino я загорелся заполучить эту игрушку. И вот недавно получил посылку с платой. Затем побаловался со светодиодами и захотел чего-нибудь посерьёзнее. Решил сделать простейший термометр, используя всего термистор, резистор на 10 кОм и LCD дисплей. Кому интересно что получилось - прошу под кат.

Начало

Термистор - это переменный резистор, меняющий своё сопротивление в зависимости от температуры окружающей среды.

Нам потребуются следующие детали:
Arduino Uno - 1 шт
Термистор - 1 шт
Резистор c сопротивлением 10 кОм - 1 шт
LCD дисплей HJ1602A - 1 шт
Соединительные перемычки - несколько штук

Всё это у меня было, поэтому я сразу начал проектирование на breadboard.

Ножки к экрану я еще припаял в день покупки.

Затем присоединяем экран к выходам Arduino. У моего экрана распиновка такая.

1 (GND) GND - Земля
2 (VDD) 5v - Питание(+)
3 (VO/Contrast) - Управление контрастностью (сюда я подключил переменный резистор)
4 (RS) - 12 - Канал данных
5 (RW) - 11 - Канал данных
6 (E) - 10 - Канал данных
11 (DB4) - 5 - Канал данных
12 (DB5) - 4 - Канал данных
13 (DB6) - 3 - Канал данных
14 (DB7) - 2 - Канал данных
15 (BL1/Backlight1) - 13 - Питание подсветки(+)
16 (BL2/Backlight2) - GND - Земля(-)

Получилась вот такая картина.

Далее подключим одну ногу термистора к аналоговому входу A4 и резистор на 10 кОм в землю, а вторую ногу термистора к 5V.

В общем то и всё. Аппаратная часть готова. Вот схема.

Программирование

С программированием тут всё понятно. Исходный код скетча:

// подключаем две библиотеки для работы с LCD и математических вычислений #include #include LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // инициализируем LCD int backLight = 13; void setup(void) { pinMode(backLight, OUTPUT); digitalWrite(backLight, HIGH); lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0,0); Serial.begin(9600); } // создаем метод для перевода показаний сенсора в градусы Цельсия double Getterm(int RawADC) { double temp; temp = log(((10240000/RawADC) - 10000)); temp = 1 / (0.001129148 + (0.000234125 * temp) + (0.0000000876741 * temp * temp * temp)); temp = temp - 273.15; return temp; } // создаем метод для вывода на экран показаний сенсора void printTemp(void) { double temp = Getterm(analogRead(4)); // считываем показания с сенсора lcd.clear(); lcd.setCursor(0,0); lcd.print("Temperature is:"); lcd.setCursor(0,1); lcd.print(temp); lcd.print(" C"); } void loop(void) { printTemp(); // вызываем метод, созданный ранее delay(1000); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ноябрь 25, 2018

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

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

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

По типу зависимости сопротивления от температуры различают терморезисторы с отрицательным (NTC -термисторы, от слов «N egative T emperature C oefficient») и положительным (PTC -термисторы, от слов «P ositive T emperature C oefficient» или позисторы ) температурным коэффициентом сопротивления (или ТКС). Для позисторов - с ростом температуры растёт их сопротивление; для 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 - номинальное сопротивление термистора в Омах.

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

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

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

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