Например TDA7294

РадиоКот > Схемы > Цифровые устройства > Бытовая техника

Термостат на кремниевом терморезисторе серии KTY

Автор: Валентин
Опубликовано 01.03.2012.
Создано при помощи КотоРед.

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

 

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

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

 

 

 Такие датчики привлекают себя ценой и тем, что могут работать до 150-175 или до 300градусов, в отличие от широко распространенных DS18B20, но уступают им в точности.

 

Поразмыслив китайской логикой - 'а зачем платить больше?' - решено было поискать в Интернете пример, как работать с этими датчиками, или готовую схему термостата.

К моему удивлению - нашел только вот этот термометр .

 

О ужас! Спец. службы зомбируют массы и заставляют платить больше! Не хорошо! Надо накошачить, и испортить всю малину фирме Dallas (та, которая торгует DS18b20).

Прикупил  парочку вражеских датчиков KTY81-222 (до +150) и приступил к партизанской борьбе с ненавистным DS18b20)

 

Немножко о маркировке.

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

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

А вот первая цифра - это та заветная максимальная рабочая температура!

Мечта кота - это датчики серии KTY84 (макс +300гр!), но их в магазине нет. Не беда, подождем.

А пока что сделаем термостат для управлением насосом отопления (что б лишнее электричество не наматывал).

 

Самое сложное - это преобразовать вольты в градусы.

Нужна магическая математическая формула по которой 8-битный микроконтроллер вольты превратит в градусы!

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

Остановимся на этой методике.

Датчики серии KTY по заявлению производителя имеет линейные характеристики.

Поверим на слово.

Из школьного курса математики вспоминаем, что линейная функция это функция вида y=kx+b

 

 

 Почти похоже на график из даташита на датчик:

 

 

В  случае с термодатчиком у это у нас  сопротивление, а x это температура.

Применяя знания полученные в 7-м классе средней школы, преобразуем формулу:

y-b=kx

x=(y-b)/k

Где х-температура,y-сопротивление термодатчика.

 

Сопротивление термодатчика мы узнаем по  падению напряжения на нем.

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

Но нет, наш микроконтроллер вольты выдает в виде набора цифр от 0 до 1024, теперь мы в полном замешательстве!

Ничего страшного, пошлем великую математику подальше и заявим что y это двоичное значение АЦП.

В итоге мы приходим к формуле:

t=(ADC-b)/k

где ADC –двоичное значение в регистрах АЦП, t-температура, b, k - неизвестные константы.

Как узнать значения ADC  для конкретной температуры?

Разыскиваем даташит на наш датчик, ищем в нем табличку:

 

 

В ней мы видем зависимость сопротивления от температуры.

Вспоминаем закон Ома из 8-го класса.

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

 

 

Все формулы есть - можно рассчитать любое значение ADC для любого сопротивления терморезистора.

При выборе  опорного напряжения Vcc и резистора делителя Rд следует выполнять условие - при максимальной температуре датчика напряжение на входе АЦП должно быть меньше Vref=2.56В.

Открывается море творчества - можно поставить любой датчик KTY, подобрав к нему свой  резистор делителя Rд.

Возвращаемся к нашей магической формуле перевода вольт в градусы:

x=(ADC-b)/k

Где взять неизвестные b и k?  Такой вопрос повергнет в шок учителя математики.

Самое простое - построить график зависимости ADC от температуры и воспользоваться специальными программами, которые умеют находить по графику b и k.

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

Чтобы не фантазировать, берем Microsoft Exel, забиваем в него все данные, нужные нам формулы. Строим график зависимости ADC от t. Делаем «линию тренда» для графика - получаем ту самую магическую формулу:

 

 

 где k=2.7778,а b=616.95

 Сотые нас не интересуют, не космический корабль строим - округлим.

k=2.8,b=617

Расчетная формула готова:

t=(ADC-617)/2.8

Подставим формулу в колонку «Проверка» и увидим, насколько у нас температура будет отличатся от той, которая приведена в даташите.

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

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

 Для упрощения вычислений на 8-битном микроконтролере желательно избавится от дробей:

t=((ADC-b)*10)/(k*10)

для нашего датчика получим

t=((ADC-617)*10)/28

Эта формула и используется для вычисления микроконтроллером температуры.

После столь длительной теории перейдем к практике.

 

 

В схеме использован безымянный китайский индикатор с общим анодом. Источником опорного напряжения служит микросхема DA2, с помошью резисторов R15, R16 выставляется опорное напряжение (в данном случае 3.83в). Резистор делителя Rд собран из  R17 и R18. RC цепочка R13 и С5 фильтрует помехи. Светодиод D2 используется для индикации включения реле (если включено горит постоянно) и индицирует запись в eeprom(моргание). Реле К1 на 5в.

 

Логика работы и управление.

После включения термостата на индикаторе отображается текущая температура датчика, в виде целочисленного значения.

Для управления служат две кнопки – “минус” и “плюс”

-однократное нажатие на кнопку “минус” выводит на индикатор значение порога включение реле;

-однократное нажатие на кнопку “плюс” выводит на индикатор значение порога выключения реле;

Через пару секунд после нажатия любой из кнопок на индикаторе вновь отображается текущая температура датчика.

 -длительное нажатие на кнопку “минус” переводит  устройство в режим коррекции порога включения реле, на индикаторе начинает мигать текущее значение порога. При помощи кнопок “минус” или “плюс” меняется значение температуры

-длительное нажатие на кнопку “плюс” переводит  устройство в режим коррекции порога выключения реле, на индикаторе начинает мигать текущее значение порога. При помощи кнопок “минус” или “плюс” меняется значение температуры.

Через несколько секунд данные записываются в eeprom, и на индикаторе вновь отображается текущая температура.

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

Алгоритм работы изображен на картинке.

 

 

 

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

Тут стоит отметить особенности калибровки.

После входа в режим калибровки на дисплее отображается текущая температура.

-нажатие на кнопку “плюс” прибавляет к текущему значению калибровочную константу и записывает эту константу в ячейку с номером измеренной температуры.

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

 Если происходит изменение температуры датчика, текущее калибровочное значение записывается в eeprom (если оно отличается от значения в ячейки) и на дисплей выводится новое значение температуры (плюс калибровочная константа, по умолчанию она равна нулю)

Опять получилось уж больно умное описание, но опять таки все элементарно просто. Для понимания посмотрим на содержимое ячеек eeprom:

 

 

По умолчанию калибровочные константы равны нулю.

Как видим откалибровать можно в диапазоне 0-254 градусов.

Если вас не устраивает, что температура пирожков в печке 256гр. и  отличается от реальной на 10-20 градусов, можете чуток дописать код и задействовать неиспользованные ячейки.

 

Специально для тех, кто не умеет программировать и купил другой датчик.

Открываете даташит на ваш датчик, открываем мой exel файл.

Забиваем свои значения сопротивления для конкретной температуры.

Играемся сопротивлением делителя Rд, и  опорным напряжением Vcc, так что бы напряжение на входе микроконтроллера при максимальной измеряемой температуре было не более 2.56в.

Автоматически должна изменится и расчетная формула. Записываете эту формулу на бумажку.

Читаем в Интернете как запускать проекты в Avr Studio 5, что такое шестнацетиричная система.

Открываем файл term_math.asm, ищем участки кода согласно рисунку, меняем значения (предварительно с помощью windows калькулятора переведенные из десятичной системы в шестнацетиричную) k и b на свои.

 

 

Компилируем, зашиваем, радуемся.

Те кто были внимателены - заметили, что формула приведенная в исходнике отличается от рассчитанной, нет я вас не обманываю - просто ADC моего микроконтроллера «врет на 30 единиц  в минус», поэтому пришлось скорректировать это.

 

 

 

 

Фузы стоят заводские! Программировать их не нужно!

 

Пару слов о калибровке.

Я брал радиатор от компутерного БП, прикреплял к нему свой датчик и датчик цифрового термометра на DS18B20.

Они должны быть рядом и плотно прижаты к радиатору.

Далее берем ведро мерзлой воды и чайник.Остужаем, нагреваем, калибруем. Благодаря инерционности радиатора

за 20мин легко можно откалибровать интересующий нас диапазон (+5-70гр).

Также можно воспользоватся термопарой с китайского тестера, она позволит откалибровать до 300гр.

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

 

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

Как только найду термодатчик на 300гр, поставлю на утюг для ЛУТ.

 

Надеюсь тема датчиков серии KTY теперь полностью раскрыта)

Файлы:
Прошивка+плата

 


Все вопросы в Форум.


ID: 1188

Как вам эта статья?

 Нравится
 Так себе
 Не нравится

Заработало ли это устройство у вас?

 Заработало сразу
 Заработало после плясок с бубном
 Не заработало совсем

40 4
1 2
Подробно