Page 1 of 109

Термостат ∆T=0,1°C

Posted: 31 Jan 2009 20:38
by hardlock
По многочисленным просьбам дорабатываю конструкцию термостата. Теперь умеет:

Измерение температуры от -55°С до +125°С (шаг 0,1°С)
Установка температуры от -55°С до +124°С (шаг 0,1°С !!!).
Гистерезис от 0,1°С до 90°С (начиная с версии v3.2)

Схема: (12.11.2009 привёл названия сегментов в соответствии с даташитом на индикатор.)
Схема
Схема
На схеме показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме. Хотя в последнее время попадаются экземпляры датчиков, которые не хотят работать с таким подтягивающим резистором, приходится подбирать в диапазоне 1,8кОм - 6,2кОм (обычно около 4,0кОм).
Индикатор можно применять как с общим анодом, так и с общим катодом - просто разные прошивки.

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

Управление:

Кнопками "+" и "-" устанавливают температуру включения нагрузки (на экране в первом сегменте отобразится символ подчёркивания "_").
При одновременном нажатии обеих кнопок устройство переходит в режим изменения гистерезиса (на экране в первом сегменте отобразится символ "d"). Длительное удержание одной из кнопок приводит к ускоренному перебору значений. При отсутствии нажатий на кнопки в течении 5 секунд прибор переходит в режим отображения измеренной температуры, при этом происходит запоминание изменённых параметров в энергонезависимую память.

Индикация:

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

Логика изменения состояния управляющих выводов:

Довольно часто возникают вопросы насчёт этого, поэтому немного нарисую.
graph.gif
graph.gif (6.99 KiB) Viewed 207303 times
Пример 1 (нагрев):
  • Установим температуру = 25,5°С, гистерезис (dT) = 1,2°С.
  • Текущая температура 20 градусов. (PD2 = 1, PD3 = 0, горит "точка").
  • Такое состояние будет сохранятся пока температура не достигнет Т уст. + dТ = 26,7°С.
  • Когда температура достигнет 26,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит "точка")
  • Такое состояние будет сохранятся пока температура не опустится до Т уст. = 25,5°С.
  • Когда температура опустится до 25,5°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит "точка")
  • И так далее....
Пример 2 (охлаждение):
  • Установим температуру = -5,2°С, гистерезис (dT) = 1,5°С.
  • Текущая температура 20 градусов. (PD2 = 0, PD3 = 1, не горит "точка").
  • Такое состояние будет сохранятся пока температура не упадёт до Т уст. = -5,2°С.
  • Когда температура упадёт до -5,2°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит "точка")
  • Такое состояние будет сохранятся пока температура не поднимется до Т уст. + dТ = 6,7 -3,7°С.
  • Когда температура поднимется до 6,7 -3,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит "точка")
  • И так далее....
upd: спустя 8 лет "опечатку" таки заметили )))
bokorez wrote:Уважаемый, а Вы точно уверены, если к -5,2 в режиме охлаждения применить дельту 1,5, то получится +6,7??? В каком разделе математики можно сие почерпнуть? Понимаю, что это типа мелочь, но ведь глаз режет. -5,2+1,5= -3,7. Тем более, что "соавторы" уже по многим форумам растащили, а ошибочку проморгали.

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

Печатная плата:
Печатная плата
Печатная плата
pcb.gif (10.27 KiB) Viewed 207303 times
В формате Sprint-Layout 5.0 можно скачать тут. Печатную плату я немного изменил, по сравнению с термометром и прошлой версией термостата, но она пригодна для использования и в них тоже. Тут убрал кварц и добавил контактные площадки для подключения кнопок и управления нагрузкой.

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

Партлист:
тип наименование/номинал ед. изм. кол-во примечания типоразмер
датчик температуры DS18B20 1
диод 1N4148 1
индикатор E40561-L-O-O-W
(E40561-i-O-O-W)
1 7-сегментный, 4 разряда,19х50мм
кнопка 2 по вкусу, на основной плате не установлены
конденсатор 10 мкФ 2 16V SMD-B
конденсатор 0,1 мкФ 2 16V 1206
микропроцессор Attiny2313-20SU 1 корпус SOIC20, подойдут любые версии в этом корпусе
регулятор напряжения 78L05 1 L78L05ABUTR (например) SOT-89
резистор 1 кОм 1 1206
резистор 4,7 кОм 1 1206
резистор 100 Ом 2 1206
резистор 470 Ом 8 1206
реле 12 В 1 по вкусу, на основной плате не установлено
стабилитрон 5,1 В 2 выводной BZX79-C5V1
транзистор КТ817 (BC339, BC817) 1 на основной плате не установлен
Исходник один на все варианты - компилируется в нужную версию путём комментирования (раскомментирования) нужных дэфайнов:

Code: Select all

#define Cathode //для индикатора с ОК
//#define Anode //для индикатора с ОА

#define heat    //точка отображается если T < Tуст.
//#define cold  //точка отображается если T > Tуст.
Биты конфигурации (FUSES), для тех кто шьёт из PonyProg:
fuses.gif
fuses.gif (5.74 KiB) Viewed 207303 times
В шестнадцатиричном виде: LO: 0xE4 HI: 0xDF

Обратите внимание!!! Раньше предлагалось выставить BODLEVEL0 и BODLEVEL1, что включало Brown-out Detection (BOD) - контроль за напряжением питания. Это полезно при нестабильном питании и предохраняет содержимое энергонезависимой памяти (EEPROM) от порчи во время падения напряжения питания. Но как оказалось есть некоторые подводные камни. При включенном BOD и температуре кристала близкой к 0°С работа устройства оказывалась очень нестабильной - постоянно происходил сброс. Причём уровень BOD не влиял на стабильность работы (пробовал 1.8В, 2.7В, 4.3В). Питание при этом оставалось стабильное (питание от батарейки) - проверялось осциллографом. Поэтому рекомендую убрать "галочки" в конфигурации с всех BODLEVEL. Рекомендую сделать супервизор.

Важно
По отзывам и замечаниям участников форума сделано некоторое количество исправлений и доработок. Прежде чем собирать термостат, посмотрите ветку Термостат ∆T=0,1°C - работа над ошибками.
Перед тем как пожаловаться в форуме на ошибку в прошивке, также прошу, просмотрите эту ветку.
Полезные ссылки в теме.
- Супервизор.
- Для тех, кто раздумывает, как конкреино приделать к термостату супервизор питания, создана специальная ветка форума Супервизор питания.
- Корректировка показаний датчика

Re: Термостат 0,1°C

Posted: 02 Feb 2009 08:32
by Zond
Здраствуйте писал до этого на почту Поменял фьюзы по новому перепрошил тини но она упорно не видит датчик на индикаторе горят нули и все тут

Так как было собранно два термостата второй заработал но через некоторое время то же самое?

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

А работает проект в реальных условиях всмысе гдето воплошенный в конкретное устройство?

Re: Термостат 0,1°C

Posted: 02 Feb 2009 09:52
by hardlock
Zond wrote:А работает проект в реальных условиях всмысе гдето воплошенный в конкретное устройство?
Работают у меня (и не только у меня) штук 20 собранных устройств. Плюс несколько штук - технологические образцы (для экспериментов). могу выслать фото...

Если с выводными резисторами было всё нормально, то смотрите пайку и её качество около верхних резисторов (под которыми 2 линии). Под ними 2 линии - Земля и Вход/выход 1-wire.

Попробуйте оторвать 11-й вывод от печатки и прям на него подключить резистор и DS18B20.

Re: Термостат 0,1°C

Posted: 03 Feb 2009 21:28
by dovjik1
Не стопудово-работает.Сам уже сделал два штуки.Все детали СМД и работает.У меня другая проблема как вместо Attiny поставить AT90s2313.Та прошивка что для Attiny не подходит.

Re: Термостат 0,1°C

Posted: 04 Feb 2009 09:27
by hardlock
dovjik1 wrote:как вместо Attiny поставить AT90s2313.Та прошивка что для Attiny не подходит.
придумайте куда поставить кнопки (на линии индикатора не вышать), тогда освободятся выводы под кварц, тогда модно и ставить 90S2313...

Re: Термостат 0,1°C

Posted: 04 Feb 2009 12:47
by dovjik1
Может немного затупил.Вы хотите сказать что ат90s2313 с прошивкой attiny2313 подойдет для термометра(первого проекта)?Я собственно ипользую термостат как термометр(кнопки не выводил),и честно не помню какую прошивку залил.А может Вы правы в том что для термостата там где выводы под кварц используются кнопки.И во время конвертации программа видит эту ошибку.А если сконвертировать для термометра ,получится?

Re: Термостат 0,1°C

Posted: 04 Feb 2009 12:51
by hardlock
dovjik1 wrote:Может немного затупил.Вы хотите сказать что ат90s2313 с прошивкой attiny2313 подойдет для термометра(первого проекта)?Я собственно ипользую термостат как термометр(кнопки не выводил),и честно не помню какую прошивку залил.А может Вы правы в том что для термостата там где выводы под кварц используются кнопки.И во время конвертации программа видит эту ошибку.А если сконвертировать для термометра ,получится?
Малость путанно вы пишите, но если я понял, то прошивка Вам нужна для термометра? Тогда можно прошивку термометра попробовать прошить в 90S2313.

а прошивка от термостата не подходит т.к. используется портА (кнопки) которого в 90s2313 нет вообще...

Повторюсь ещё раз - проверить прошивку на 90s2313 нет возможности по причине отсутствия такоывх в продаже.

Re: Термостат 0,1°C

Posted: 04 Feb 2009 13:00
by dovjik1
Малость путанно вы пишите, но если я понял, то прошивка Вам нужна для термометра? Тогда можно прошивку термометра попробовать прошить в 90S2313.

а прошивка от термостата не подходит т.к. используется портА (кнопки) которого в 90s2313 нет вообще...
Пишу путанно потому-что не профи в микроконтроллерах.По максимуму хотелось бы At90s2313 для термостата,но сейчас понял что не подойдет.Если бы я термостат использовал как термостат(с кнопками),то увидел бы что кнопки занимают место кварца.Значит ат90с2313 сюда не подходит.А для термометра нужно конвертировать прошивку?

Re: Термостат 0,1°C

Posted: 04 Feb 2009 13:03
by hardlock
dovjik1 wrote:А для термометра нужно конвертировать прошивку?
Не знаю. А вы попробуйте прошить, поставить кварц 8МГц, и сказать что получилось. У меня нет 90s2313 поэтому попробоватья не могу!!!

Re: Термостат 0,1°C

Posted: 04 Feb 2009 13:08
by dovjik1
Спасибо,буду пробывать.

Re: Термостат 0,1°C

Posted: 05 Feb 2009 19:34
by sergey
Здравствуйте, повторил конструкцию термостата 0,1 С.сделал несколько экземпляров под разные задачи.Все работает, очень нужна все же старая версия прошивки ОА. Если можно повторите или вышлите на электронку. С уважением.

Re: Термостат 0,1°C

Posted: 05 Feb 2009 22:24
by hardlock
А что в старой прошивке есть такого, что нет в новой? Кроме убранных глюков?

Re: Термостат 0,1°C

Posted: 06 Feb 2009 07:46
by sergey
За 2 месяца работы нескольких образцов глюков не замечено, просто старая прошивка у меня более удобно листает температуру при установках параметров. Надеюсь на понимание и помощь в решении проблемы.

Re: Термостат 0,1°C

Posted: 06 Feb 2009 08:59
by hardlock
В чём выражается "более удобное листание"? В скорости? Или ещё в чём-то?
Опишите по подродней, а я просто в этой версию доделаю, т.к. старую совсем списал и удалил.

Re: Термостат 0,1°C

Posted: 06 Feb 2009 09:49
by sergey
При однократном нажатии изменяются доли градуса поединично, при удержании кнопки доли градусов бегут быстро а сами градусы изменяются поединично посекундно, в новой версии этой логики нет , сделано по другому и как то неудобно листать десятые доли и градусы получается дольше .

Re: Термостат 0,1°C

Posted: 06 Feb 2009 09:50
by hardlock
Понял - исправлю. Поменял скорость листания, т.к. показалось быстровато...

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:10
by sergey
Спасибо, буду ждать обновленный вариант, возможно если дополнить эту версию наличием индикации нахождения температуры в зоне гистерезиса будет еще более информативный с визуальной точки зрения проект. С уважением.

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:12
by hardlock
Подскажите, как будет удобней индицировать нахождение в хоне гестерезиса, чтобы было наглядней?

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:15
by sergey
Логическую единицу на отдельную лапку микроконтроллера , ну а дальше кто как сможет, простор для фантазии элементарный способ например светодиод..

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:17
by hardlock
Вот тока нету отдельных лапок.... Всё занято. Можно на индикатор, только как отображать?

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:30
by sergey
А если задействовать точку после доли градуса, вроде как свободные выводы и не понадобятся, если только изменить программу, ну а дальше опять дело фантазии изготовителя как этой информацией воспользоваться...

Добавлено спустя 3 минуты 39 секунд:
Я в вашей схеме установил трехразрядный индикатор а информацию о режиме dT и режиме включения нагрузки вывел отдельныма светодиодами .

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:33
by hardlock
sergey wrote:задействовать точку после доли градуса
не совсем понял - там же динамическая индикация. Т.е. чтобы зажечь один сегмент (например точку) нужно задействовать 2 вывода контроллера.

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

Code: Select all

 .21.4.
это уж слишком - много точек.

Добавлено спустя 1 минуту 36 секунд:
sergey wrote:Я в вашей схеме установил трехразрядный индикатор
Вот с этого и надо было начинать!
тогда можно выводить в любой первый сегмент.

Re: Термостат 0,1°C

Posted: 06 Feb 2009 10:42
by sergey
На любой свободный сигмент, а дальше можно додумать от вида корпуса размеров вида лицевой панели куда вывести эту индикацию, пусть думают кому нужно найдут варианты...

Re: Термостат 0,1°C

Posted: 08 Feb 2009 06:58
by diawest1
Полезная и простая конструкция. :good: Для использования в инкубаторе, изложу свои предложения. :idea: Поскольку имеем дело с разрешением в 0,1tC, нужно предусмотреть калибровку шкалы. Т.к. первый же попавщийся "даллас", будет безбожно врать. :jokingly: Ограничить диапазон термостабилизации для :wall: , в пределах 35,0tC...39.0tC. И последнее. Вывод 1=Т>Туст(PD7) сделать "аварийным" 1=Т>38.5tC.

Re: Термостат 0,1°C

Posted: 08 Feb 2009 11:38
by hardlock
diawest1, калибровка - это хорошо. Попробую подумать в этом направлении, хотя из всех даласов, которые ко мне попадали врал только один, и тот на 0,9 градуса, что сильно бросалось в глаза и он был отбракован.

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