Продолжаем наше знакомство с термодатчиками на канале уже были статьи посвящённые DS18B20 и термопарам рассмотрим другие аналоговые датчики.
На само деле я начал модифицировать автоклав и решил приспособить туда известный датчик DS18B20 по спецификации он работает до 125°C, но на самом деле оказалось он сбоит не достигая температуры 100°C, поэтому мне нужен новый хороший - термостойкий датчик, вот о них и поговорим.
Добавлено: 19.02.2023
Ниже терморезистор в колбе от бытового китайского электронного градусника.
В этой статье о:
- Терморезисторах.
- Термопарах.
- Термостатах биметалических.
В большей степени статья посвящена терморезисторам, их работе на модулях ESP 8266 и их настройке в прошивке ESPEasy.
Терморезистор, термистор, термосопротивление, RTD датчик
RTD— это аббревиатура от Resistance Temperature Detector, что значит резистивный температурный датчик (применяется в прошивке ESP Easy, см. ниже).
Чаще распространены NTC термисторы - это резисторы с отрицательным коэффициентом сопротивления (Negative Temperature Coefficient).
Зависимость обратная с ростом температуры сопротивление уменьшается, причем зависимость не линейна, все вышесказанное демонстрирует график.
I. Расчет температуры в зависимости от сопротивления
Уравнения Стейнхарта — Харта
Температура рассчитывается по уравнению Стейнхарта — Харта:
Где:
T — температура, К;
R — сопротивление, Ом;
A,B,C — константы термистора, определённые при градуировке в трёх температурных точках, отстоящих друг от друга не менее, чем на 10 °С.
Одним из существенных недостатков «бусинковых» термисторов, как температурных датчиков, является то, что они не взаимозаменяемы и требуют индивидуальной градуировки. Не существует стандартов, регламентирующих их номинальную характеристику сопротивление — температура. «Дисковые» термисторы могут быть взаимозаменяемыми, однако при этом лучшая допускаемая погрешность не менее 0,05 °С в диапазоне от 0 до 70 °С.
Типичный 10-килоомный термистор в диапазоне 0—100 °С имеет коэффициенты, близкие к следующим значениям:
Коэффициенты:
- A = 1.11492089e-3 или 0.001129148;
- B = 2.372075385e-4 или 0.000234125;
- C = 6.954079529e-8 или 0.0000000876741
II. Табличный метод
Уравнение Стейнхарта — Харта подразумевает сложные вычисления, и занимает процессорное время. Более простым и эффективным подходом является хранение таблицы, в которую заносятся предварительно рассчитанные значения температуры при тех, или иных значениях АЦП.
III. Использование константы «B» (модифицированное уравнение Штейнхарта-Харта)
Существует еще более простое уравнение, которое менее точно, но содержит только одну константу. Эта константа обозначена как B, и поэтому уравнение называется B-уравнением.
Каждый материал термистора имеет различную материальную константу и, следовательно, индивидуальную кривую отношения сопротивления и температуры.
Так, константа «B» определяет одно резистивное значение при базовой T1 (25ºС), и другое значение при Т2 (например, при 50ºC или 100ºC).
Следовательно, значение «B» определит постоянную константу материала термистора, ограниченную диапазоном T1 и T2.
1/T = 1/T0 + (1/B)*ln(Rt/Rt0)
где:
• T0 — комнатная температура в Кельвинах, для которой указывается номинал термистора; T0 = 25 + 273.15;
• T — искомая температура, в Кельвинах;
• Rt — измеренное сопротивление термистора в Омах;
• Rt0 — номинальное сопротивление термистора в Омах (при температуре 25ºС).
Из этой формулы следует и обратная, по которой определяем искомую температуру, в Кельвинах:
T = 1/(1/T0 + ln(Rt/Rt0)/B)
Константу В Вы увидите ниже в характеристиках конкретных терморезисторов.
Скетч для Arduino
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // значение R1 на модуле
float logR2, R2, T;
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741; //коэффициенты Штейнхарта-Харта для термистора
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0); //вычислите сопротивление на термисторе
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // температура в Кельвине
T = T - 273.15; //преобразование Кельвина в Цельсия Serial.print("Temperature: ");
Serial.print(T);
Serial.println(" C"); delay(500);
}
Этот скетч я не проверял поэтому не знаю как он работает.
На практике чаще всего применяется табличный метод как наиболее простой и не требующий вычислительных ресурсов.
Схема подключения
Все схемы подключения похожи, разберем их досконально.
Простейшая (стандартная схема)
Или так, эти схемы равнозначны
Где:
- Ардуино AO - контакт A0 или ADC Ардуино или ESP8266 (это 12-битный АЦП)
Модуль ESP-12 (статья на канале: "Общий обзор ESP8266-12")
Модуль адаптера для ESP-12 (статья на канале: "Модуль адаптера для ESP-12")
Для WeMos D1 mini
- NTP - терморезистор 10KOm
- Это самый распространённый "бусинковый" терморезистор, именно он чаще применяется в всяких Ардуиновских самоделках.
- Питание +5 вольт для Ардуино или 3,3 вольта для ESP8266
- GND - Земля
- R1 - резистор
Про резистор R1 и его номинал
Резистор обычно берут равный сопротивление терморезистора т. е. в данном случае 10KOm, но у меня с ним не заработал на модуле адаптера для ESP-12.
А на WeMos D1 mini заработал
А вот и ответ, почему так произошло, цитата: "Некоторые платы, такие как NodeMCU или Wemos D1 mini, имеют несколько резисторов, подключенных к контакту A0, которые действуют как делитель напряжения для расширения этого диапазона (1,0 вольт, см. ниже) до 3,6 В. Из-за этих резисторов вам может потребоваться коррекция примерно на 10%." (вот тут). В другом месте я прочитал что нужно использовать резистор R1 - 8.2KOm (вот тут: https://smacont.ru/wiki/33/, там кстати другая прошивка).
Мои расчеты
Я же рассчитал что нужно использовать резистор порядка 30KOm (!)- посчитайте сами только вводите напряжение в 3.3 вольта, тогда на плече с терморезистором будет от 500 Om (110градусов) - 0.05вольт, до 12000 Om (20 градусов, комнатная температура ) 0,94 вольт.
Таблицу сопоставимости сопротивление и температуры можно например посмотреть тут, при:
- 20 градусов - 12 000 Ом
- 110 градусов - 500 Ом
Или вот точнее из таблицы переведено в текст.
Значение сопротивление в KOm от температуры в Цельсиях
t KOm
15 15.76
20 12.51
25 10.00
30 8.048
35 6.518
40 5.312
45 4.354
50 3.588
55 2.974
60 2.476
65 2.072
70 1.743
75 1.473
80 1.250
85 1.065
90 0.911
95 0.7824
100 0.6744
105 0.5836
110 0.5066 (507 Oм)
Поиграться с значениями можно используя калькулятор, их много в сети, ну например вот этот: https://cxem.net/calc/divider_calc.php или читать статью на канале, там подробнее: "Резистивный делитель напряжения."
Помните, на обычный PIN ESP8266 мы можем подать напряжение до 3,3 вольт, а на аналоговый PIN только до 1 вольта.
(!) При подключении помним, что аналоговые входы (ADC) ESP8266 имеют диапазон входного напряжения 0-1 В, и выдают диапазон значений 0-1023 (1-1024). Подробнее в статье: "Резистивный делитель напряжения."
При уменьшении температуры показатели растут и быстро достигают 1024, при повышении температуры показатели подают, но еще не достигали нуля. А мне именно так и нужно, что бы шкала была смещена в область высоких температур от комнатной, 20 градусов до 120 градусов - максимальной температуры работы автоклава. Вот например скриншот из прошивки ESPEasy с "комнатной температурой" видно показания датчика DS18b20 и аналоговые не обработанные показания терморезистора.
Другие ссылки.
Вот форум по прошивке ESPEasy где обсуждается вопрос с подключением терморезистора: "подключение термистора NTC THERMISTOR MF52-103 10Kohm". Вот автоматический перевод, вдруг нужно
Вот про аналоговый вход ESP на прошивке ESPEasy (https://espeasy.readthedocs.io/en/latest/Plugin/P002.html). Вот автоматический перевод, вдруг нужно.
Проблема с SMD резистором
У меня была проблема с SMD резистором 30kOm при включении вроде все нормально, но затем показатели скачкообразно достигали 1024. Причем, номинал был нормальный, в покое. Поменял SMD резистор на обычный все стало нормально, но вот как так то!!! Пока нашел неисправный прошло пол дня!
Спустя несколько дней история повторилась с другой платой и с резистором на 10kOm. Что за партия резисторов.
Вот такая временная замена вместо SMD
С дополнительным резистором (R2)
Про силу тока протекающего через терморезистор, про саморазогрев и зачем нужен второй резистор (R2)
Выбирая номиналы R1 и терморезистора, следует обратить внимание на протекающий через терморезистор измерительный ток.
Саморазогрев
- При величине тока более 100 мкА (0,0001А)
Напомню: ESP 8266 максимальный ток с пина или на пин: 12 мА (0,012А), рекомендуемый 6мА (0,006А). Для Ардуино максимальный ток на пине - 40 мА (0,04А). Статья на канале: "Общий обзор на модули ESP8266"
- При малом сопротивление термистора.
- Желательно, чтобы мощность на термисторе не превышала 1 мВт, а значит, что при напряжении U = 3.3В, R1 должен быть не менее, 10 кОм.
При невыполнении этих условий результат измерений искажается это явление называется саморазогревом.
Линеаризация сопротивления (включение обычного резистора параллельно термистору)
При включении параллельно терморезистору обычного резистора удается добиться нескольких результатов:
1) Нормализуется ток протекающий через терморезистор, уменьшается вероятность саморазогрева.
2) Номинал резистора выбирается при заданной температуре при этом устанавливается как бы нулевая линия для данной температуры - обеспечиваются линейны показатели (при данной температуре показатели симметричны - линейны базовой линии).
С использованием конденсатора (С1)
Используется конденсатор (C1) для фильтрацией помех, емкость в районе 10-100мкФ
Чаще всего применяется обычная схема с одним резистором R1
Конкретные представители терморезисторов
Терморезистор MF52
Это пожалуй самый распространённый терморезистор он чаще всего встречается во всяких Ардуиновых и ESP проектах.
Терморезистор MF52 отдельно
Характеристики:
- Тип термистра: NTC
- Сопротивление: 10 кОм
- Допустимое отклонение: + / — 1%
- В Константа: 3950K
- Класс: B25/50
- Диапазон рабочих температур: от -30 до +125 градусов по Цельсию
Думаю диапазон рабочих температур такой потому как корпус покрыт лаком - краской которая будет подгорать при более высокой температуре, сравните с MF58, ниже
Datasheet (техническое руководство)
Например можно посмотреть тут, но ищите именно для 10 кОм или смотря какой там у Вас есть
Терморезистор MF58
Терморезистор MF58 отдельно
Характеристики:
- Тип термистра: NTC
- Сопротивление: 10 кОм
- Номинальное сопротивление при 25°C
- Допустимое отклонение: + / — 1%
- В Константа: 3950K
- Класс: B25/50
- Диапазон рабочих температур: от -30 до +300 градусов по Цельсию
Как видите все тоже самое только рабочая температура до 300 градусов за счет стеклянного корпуса
Терморезистор MF5B
Вот он отдельно
Схема, чертеж MF5B
- Плёночный термистор
- Номинальное сопротивление: 103 = 10KΩ
- Рабочая температура -55...+125°C
- B значение: 3380K
Этот термистор я использовал в статье: "USB тестер, логгер Atorch UD18 обзор, апгрейд."
Практическая реализация
На практике, пока я разбирался с терморезисторами я использовал всего три платы две на адаптерах модуля ESP-12 вот они
Один у меня был (статья на канале: "Модуль адаптера для ESP-12")
А другой я спаял, получилось еще лучше
А так же я использовал WeMos D1 mini
Для двух плат ESP-12 я спаял адаптеры куда уже подключал датчики
И все вместе
И адаптер для WeMos D1 mini
И вместе с WeMos D1 mini
А вот так все вместе
К WeMos D1 mini подходят только питание на 5 вольт и терморезистор
Использовал я несколько плат, потому что, поначалу, не мог понять почему не работает с 10кОм резистором и даже перепутав подал вместо 3.3 вольта 5 вольт, что недопустимо и неправильно. Вот я и подумал: "Что выгорел аналоговый порт A0" и спаял еще одну плату ESP-12, и проверил на WeMos D1 mini, и как же я удивился поняв, что на WeMos D1 работает, а на ESP-12 нет! Причина этого указан выше и она в подтягивающих резисторах. (см. выше)
Для термодатчика я использовал терморезистор MF58
Вот так
Провода использованы силиконовые для того чтобы не плавилась изоляция. А вот терморезистор в сравнении с DS18b20 разница велика
На DS18b20 накручена фторопластовая (ФУМ) лента для того что бы он не проваливался в отсек термометра автоклава.
И вот в конечном итоге и поместил все в силиконовый кембрик для того чтобы не оплавлялся (провода напомню уже силиконовые)
Подключал терморезистор по самой простой схеме, вот так
R1 - резистор на 30кОм
И вот, что получилось, в итоге.
И вот так что бы было понятно
Розетка управляется твердотельным реле (на снимке ), которое планировал использовать SSR - 25 DA, вот оно
Но оно оказалось не рабочее и уже разобрано, но это тема отдельной статьи (на самом деле оно рабочее, но управляющее напряжение там не 3 вольта, но как я и сказал это тема отдельной статьи)
В розетку строен блок питания на место кнопки в 5 вольт (там где светодиод) В пищевом контейнере ESP-12 на адаптере, адаптера
Подключение
- GPIO 13 - Термодатчик DS18b20
- GPIO15 - Твердотельное силовое реле (вероятно придется переносить так как это контакт SPI)
- A0 (ADC) - Аналоговый вход - Терморезистор
На макетной плате установлен SMD стабилизатор XC6206 (6206А)
Настройка в прошивке ESPEasy
Выбираем в "Devices"→"Analog input - internal"
Мои необработанные показания ("Use Current Sample") при температуре 24.6-24.7°C(DS18b20) 833- 844 (аналоговой порт), Среднее значение 838
Калибровка
Выбрал три точки
- Комнатная температура
- Подмышка: 36.6 - 580
- Жало паяльника при минимальном нагреве паяльной станции
И вот что показали измерения
Как видно из таблицы отличия показания мультиметра отличаются от DS18b20 на 2-3°C
Датчик DS18b20 не может выдержать нагрев 120 °C, максимум до 100°C поэтому мы экстраполируем результаты прибавляя три градуса.
Добавлено: 21.12.2022
Спустя два дня я чуть расширил показания просто снимая данные с DS18b20 и с аналогового порта при обычной комнатной (вернее балконной температуре, так как живу я на балконе) и вот что получилось, табличку лучше оформил
Понятно что снимать нужно при более высокой температуре, датчик MAX6675 с термопарой уже пришел, а значит скор появятся новые данные и новая табличка.
Настройка в прошивке ESP Easy
А вот настройка:
По двум точкам нельзя построить адекватный график, помним зависимость не линейная поэтому нужно брать несколько точек, сколько см. ниже.
- Use Current Sample (Использовать текущий образец)
- Oversampling (Передискретизация) - выводится медианное значение за период времени, отбрасываются самые низкие и самые высокие значение и выводится среднее от ставшихся.
- Binning (Биннинг) - выводится наиболее часто встречающиеся значение за период времени
Точки следующие:
- 132-120
- 580-35
- 838-24.5
И вот какие графики рисуются в самой прошивке
Вспоминая вот этот график который был вначале статьи
Видим что три точки очень мало, ну хотя бы четыре или лучше пять точек. Но это нужно придумывать как откалибровать. И еще один вопрос мучает, дрейф показателей, по идеи он должен быть, но на сколько большой и стоит ли во все это ввязываться?
Как показало дальнейшее исследована график соответствия температур получился следующим.
Где:
- Значения температуры указаны в градусах Цельсия (°C)
- Штатный термометр - спиртовой штатный термометр, в свое время испытанный и выдающий 100°C при кипении воды, что понятно, является нормой.
- TemM - Термопара
- TemR - Терморезистор
- TemDS - DS18B20
Как видим большое значение играет нелинейность терморезистора, а термопара при приближении к 100 градусом показывает практически один в один.
Вот форум по прошивке ESPEasy где обсуждается вопрос с подключением терморезистора: "подключение термистора NTC THERMISTOR MF52-103 10Kohm". Вот автоматический перевод, вдруг нужно. Там применяется формула: 100(547-296)/(1015-295)*0.139, но откуда она такая и зачем я не знаю.
Добавлено 18.02.2023
Через некоторое время наблюдая за температурами и решил откалибровать по нескольким точкам, а именно 7-ми, эти точки были выбраны не совсем правильно, вернее совсем не правильно так как являлись близкими точками при обычном изменении комнатной температуры. Я хотел проверить не столько правильность калибровки, сколько возможности самое пришивки и ESP-шки. Тем не менее выкладываю их тут для того что бы не забыть и просто для наглядности, если будут новые графики и зависимости так же выложу. Далее скриншоты прошивки ESP Easy
Графики по 7-ми точкам
Нужно сказать что при такой калибровки, при комнатной температуре работает один в один.
Наверху "Analog" это термистор - 20.0°C
Снизу "Temperature" - термопара - 20.5°C
Датчики лежат на подоконнике поэтому это нормальный разброс.
Добавлено 19.02.2023
Включал автоклав и получил новые данные и если в прошлый раз это была только температура в °C, то в этот раз я сравнивал аналоговый сигнал с терморезистора без обработки, и вот что вышло.
Environment - Thermosensors
Нужно сказать что есть возможность подключить RTD датчики по другому используя "Environment - Thermosensors", что значит: "Окружающая среда — термодатчики"
RTD — это аббревиатура от Resistance Temperature Detector (резистивный температурный датчик). Поддерживается: MAX31865, LM7x. LM7x- не оттестированы полностью и являются экспериментальными и непроверенными.
Представитель серии LM7x это LM75
Датчик температуры Pt100 Pt1000
Платиновые термометры сопротивления (Platinum Resistance Thermometers) обладают высокой стойкостью к окислению и большой точностью измерения, за счет платины. Выдают 1 кОм при 0 °C. Имеет положительный температурный коэффициент. Это означает, что сопротивление увеличивается при повышении температуры окружающей среды.
Датчик от китайского термометра
Вот такой китайский термометр
Выносной терморезистор
Датчик все равно не видно залито все белой пластмассой
Подходят всего два провода
Показания сопротивления от температуры
- 44кОм - 24°C (комнатная)
- 30кОм - 36.6°C.
Термопары (Термоэлектрические преобразователи)
Эту тему мы уже затрагивали на канале в статье: "Выбор мультиметра c AliExpress и сравнение новых моделей со старыми, что нового появилось?" Тут тематически повторюсь.
Принцип работы
При соединении двух разных проводников их физико-химически свойства разные и наличие электронов разное и находятся они на разных орбитах. При нагревании эти различия становятся выраженными, да просто потому, что хотя бы у разных металлов (сплавов) разная температура плавления. В месте соединения разных проводников происходит диффузия электронов из зоны где их много в область где их мало, следствие появляется ЭДС. При повышении температуры ЭДС растет пропорционально, именно это и можно зафиксировать.
Строение
Сама термопара — это прибор, состоящий из двух различных проводников, открыто их много и используется огромное количество, самых разных сочетаний металлов и их сплавов, вот основные:
- ТПП13 – платинородий-платиновые (тип R);
- ТПП10 – платинородий-платиновые (тип S);
- ТПР – платинородий-платинродиевые (тип B);
- ТЖК – железо-константановые (тип J);
- ТМКн – медь-константановые (тип T);
- ТНН – нихросил-нисиловые (тип N);
- ТХА – хромель-алюмелевые (тип K);
- ТХКн – хромель-константановые (тип E);
- ТХК – хромель-копелевые (тип L);
- ТМК – медь-копелевые (тип M);
- ТСС – сильх-силиновые (тип I);
- ТВР – вольфрамрениевые (типы A-1 – A-3).
Разработаны ГОСТы для термопар
- ГОСТ 6616-94
- ГОСТ Р 8.585-2001
Плюсы и минусы
Плюсы
- Дешевые.
- Измеряют большой диапазон температур.
- Измеряют высокие температуры.
- Как правило линейная зависимость - легко обрабатывать результат и переводить в градусы.
Минус
- Большая погрешность (до 1 °C и даже более)
Термопара ТХА (тип K)
Самая распространённая Термопара Хромель Алюмелевая - ТХА, тип K
Состав сплава хромель:
- 90% никеля
- 10% хрома
Состав сплава алюмель:
- 95% никеля
- 2% алюминия
- 2% никеля
- 1% кремния
Технические характеристики
Может работать при температурах в пределах температур от -200°C до +1300°C, но все зависит от обвязки проводов, контактной группы изоляторов и так далее. Поэтому обычная температура - 50°C до + 750°C и даже до 600°C.
Недостатки
- При высоких температурах начинается больший разброс показаний более 1°C.
- Никель имеет магнитные свойства, что вызывает изменение выходного сигнала при температурах 350°C.
- При низких концентрациях кислорода работа нарушается (почему не знаю, но так пишут)
Представители
Термопара мультиметра Unit-T UT30D
Собственно сама термопара
Вот сам спай еще ближе
MAX6675
Преобразователь термопары (K-Type) на MAX6675
Преобразователь MAX6675 позволяет измерять температуру в диапазоне от 0 до 1024°С, однако, при температурах от 800 до 1024°С точность показаний резко снижается. Термопара рассчитана работу при температуре не более 600°C, из этого следует, что рабочий диапазон преобразователя термопары (K-Type) на MAX6675 составляет: 0...600°С.
Я заказал такой набор
Состоящей из:
- Преобразователя в интерфейс SPI
- Термопары K-Type
- Монтажных проводов (иногда)
Жду когда придут, но скорее всего придется покупать в наших магазинах на много дороже, а куда деваться?
Добавлено: 18.02.2023
Уже пришли что вылилось в статью: "Термопары (Термоэлектрические преобразователи) применения и их настройка в прошивке ESP Easy."
Терморезистор и термопара в автоклаве
Термостаты биметалические
KSD250V
Термостат биметалический на 180 градусов, 10А
Применяется как защитный элемент чаще всего ТЭНа
Устройство термостата
Важные характеристики
- Температура срабатывания: например 180 °С
- Температура сброса: как правило меньше на 20-30 градусов
- Напряжение: обычно AC(V)250
- Ток: 10-16A
- Допустимое отклонение температуры срабатывания ±5%, ±10%
- Тип восстановления автоматический
- Сопротивление контактов, не более 50 мОм
- Сопротивление изоляции, не менее 100 МОм при 500 VDC
- Диэлектрическая прочность, не менее 1200 VAC (1 мин.), 1800 VAC (1 с)
- Ресурс работы 100 000 циклов
- Тип контакта NC
Про типы контактов
- NC (Normally Closed - нормально-замкнутый контакт) - в нерабочем состоянии (обычном - нормальном) замкнут, в рабочем состоянии разомкнут,
- NO (Normally Open - нормально-разомкнутый контакт) - в нерабочем, пассивном состоянии разомкнут, в рабочем - активном состоянии замкнут.
- NO/NC (Normally Open/Normally Closed - переключающий контакт
Представители
(на самом деле их больше)
Вместо выводов
Для термостата, котла, автоклава, плитки, кастрюли с водой предпочтительно использовать MAX6675 это самый дешевый, быстрый и простой путь. Все терморезисторы нужно калибровать и заморачиватся, по крайне мере с введением табличных данных или перерасчетом показаний. Существует много других датчиков, но большинство из них не измеряет высокие температуры.
Другие датчики
- BMP280
- LM35
- TMP35, TMP36, TMP37
- DHT22 и так далее
- И много других...
Но о них мы поговорим в следующий раз. И как всегда...
Продолжение следует...
Подписывайтесь на наш канал TehnoZet-2, будет интересно! Мы активно развиваемся! Понравилась статья, хотите продолжения - пишите комментарии, ставьте лайк, жмите палец вверх!
Пользуйтесь рубрикатором по каналу, там все по разделам: "Страничка путеводитель по каналу TehnoZet-2"
Статьи и видео
Тэги
#длямаленьких
#щасспаяю
#подключаемся
#измерения
#микроконтроллер
#умнаяпыль
#умныйдом
#датчики
#покушаем
#жратьпить