Ну совсем маленький термостат
Автор ARV   
28.01.2009 г.

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

Развитие проекта целиком и полностью следует поставить в заслугу пользователю Toledo, который сподвиг меня на разработку. Кроме этого, Toledo приложил максимум усилий по тестированию прошивки в реальном "железе" (не было у меня под руками нужного микроконтроллера), а так же снял видеоролик и фотографии. Он же разработал несложный вариант печатной платы. В общем, масса благодарностей ему!

 

Особенность устройства в том, что управление всеми режимами осуществляется одной-единственной кнопкой, причем, как показали наши с Toledo эксперименты, это весьма удобно. Учитывая неистребимое желание измерять температуру с точностью до десятых долей градуса, я реализовал и эту возможность, совместив диапазон термометра от -55.0°С до +125.0°С с трехразрядным семисегментным индикатором. Это вторая изюминка устройства: десятые доли индицируются только в диапазоне -9.9...+99.9°С, а другие температуры отображаются уже без десятых долей. Думаю, это оптимальное решение. Третья изюминка - уже не нова: это режим двухпорогового термостата (т.е. с гистерезисом) с противофазными выходами, что позволяет использовать устройство для поддержания температуры от -50°С до +99°С как путем управления нагревателем, так и охладителем (вентилятором).

Схема микро-термостата
Принципиальная схема термостата

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

Микроконтроллер DD1 типа Atiny26, датчик DA2 - DS18S20 (если есть DS1820 - подойдет и он), его можно и нужно вынести на проводках в нужное место подальше от нагревающихся компонентов, способных исказить показания. Питание 5В можно получить от любого источника - на схеме показан стабилизатор DA1 типа 7805 (или КРЕН05А). Индикатор - трехразрядный 7-сегментный «динамический» (с общими анодами или катодами - все равно). В моем случае это был «безымянный» индикатор «китайского» типа, его цоколевка определена экспериментально, поэтому номера выводов не указаны, а лишь обозначены сегменты. Кнопка SB1 - само собой любая. В прошивке реализована посегментная динамическая индикация, поэтому число токоограничительных резисторов сведено к трем, т.е. к минимуму, их сопротивление должно ограничивать ток через сегмент индикатора на уровне не более 30 мА.

Выходы out1 и out2 способны выдать (или принять) ток до 40 мА, поэтому оконечный каскад может быть любым - от маломощного пятивольтового реле до мощного транзисторного ключа. Эти выходы работают всегда в противофазе.

Программа написана на языке Си, ее текст доступен, компилируется при помощи WinAVR. При компиляции обязательно нужно включать максимальную оптимизацию по размеру кода, иначе в память микроконтроллера не поместится. Кстати, в текущей версии остается свободным около 12% памяти программ - есть шанс дополнить программу еще каким-либо полезным свойством. Кстати, очень скоро это будет сделано: в прошивку будет введен дополнительный режим контроля "предельных" уровней температуры (по просьбе одного из посетителей сайта).

Для тех, кто не готов разбираться с исходными текстами, имеются 2 варианта готовых прошивок - для индикаторов с общими анодами и катодами. Перед прошивкой (или после) необходимо установить фьюзы микроконтроллера CKSEL=0100, т.е. активировать встроенный RC-генератор 8 МГц, остальные фьюзы можно оставить в предустановленном на заводе-изготовителе состоянии. Кроме прошивок, доступен исходный текст программы.

Кроме прошивок доступен для скачивания вариант печатной платы в формате Sprint Layout 5 (для SMD компонентов и упомянутого «безымянного» индикатора, установки кнопки вне платы и питания сразу от 5В-источника). Фото собранного пользователем Toledo устройства (без стабилизатора DA1 - микросхема просто для масштаба) приведено на рисунках:

Image
Вид снизу

Image
Вид с лицевой стороны

А вот и видео, которое, наверное, многие уже успели посмотреть в анонсе проекта.

Вот как работает устройство. Имеется 5 функциональных режимов:

  1. Индикация температуры.
  2. Индикация верхнего порога термостата.
  3. Индикация нижнего порога термостата.
  4. Коррекция верхнего порога.
  5. Коррекция нижнего порога.

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

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

Во втором и третьем режимах отображаются соответствующие пороги термостата. Для порогов значения задаются только в целых градусах. Чтобы можно было отличить одно значение от другого, в первом разряде индикатора дополнительно подсвечиваются сегменты А или D соответственно для верхнего и нижнего порогов.

Переключение первой тройки режимов осуществляется кратковременным нажатием на кнопку, причем только режим №1 стабильный - остальные автоматически переходят к нему, если кнопка не нажимается более 2,5 секунд.

 

Из режимов индикации порогов можно перейти к режимам изменения соответствующего порога, если нажать и удерживать кнопку более 2,5 секунд. С этого момента начинается интересное (т.е. та самая изюминка управления одной кнопкой). Как только включается режим изменения значения порога, сразу начинает мерцать соответствующий сегмент А или D на первом индикаторе (признак коррекции порога), и одновременно, пока нажата кнопка, происходит быстрое изменение значения. Дождавшись, когда порог «проскочит» желаемое значение, нужно отпустить кнопку. После этого можно кратковременными нажатиями скорректировать значение в противоположном быстрому изменению направлении. Если при удержании кнопки происходит изменение не в том направлении - надо отпустить ее и снова нажать надолго.

Поясню на примере. Допустим, установлены пороги -5 и +15 градусов, нужно сделать их -2 и +2. Включаем режим коррекции верхнего порога, нажав и удерживая кнопку во втором режиме. Спустя 2,5 секунды значение начинает быстро меняться в сторону увеличения. Дождавшись, когда появится на индикаторе 15, отпускаем кнопку. Если не повезло и на индикаторе 16 - не беда: нажимаем кнопку кратко и значение уменьшается на 1, т.е. становится 15, что и требовалось. Не трогаем кнопку 2,5 секунды - мерцание сегмента А прекращается - снова включен режим 2. Нажимаем кнопку кратко, включая тем самым режим 3. Теперь нажимаем кнопку надолго и ждем, пока включится режим коррекции нижнего порога. Как только замерцал сегмент D, значение начинает быстро уменьшаться - ждем, пока оно не достигнет значения -2 и отпускаем кнопку. Проскочили? - не беда! Кратковременным нажатием кнопки возвращаем по одному проскоченному градусу... Далее - как и ранее: не трогаем кнопку 2,5 секунды, по и после выключения режима коррекции не трогаем кнопку - в момент автоматического включения режима 1 произойдет запоминание новых значений порогов.

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

Скачать файлы из фалохранилища.

Обсудить проект на форуме.

 


Добавить в любимые (14) | Просмотров: 110763

  Коментарии (13)
 1 Написал(а) deinewaffe, в 18:09 30.01.2009
хотелось бы знать точно какие индикаторы подойдут....
 2 Написал(а) ARV, в 13:38 31.01.2009
с корректировкой платы подойдут любые "динамические" индикаторы, т.е. те, у которых общие катоды (или аноды) разрядов выведены наружу, а одноименные сегменты соединены поразрядно внутри. в принципе, и обычные индикаторы подойдут - если не лень плату разводить.
 3 Написал(а) deinewaffe, в 14:00 31.01.2009
я имел виду без разводки платы.
 4 Написал(а) ARV, в 16:05 31.01.2009
обсуждение следует вести на форуме! :(  
Комментарий - это высказывание своего мнения по поводу... а вопрос - это обсуждение. Неужели непонятно?!
 5 Написал(а) Тоник, в 23:31 03.05.2009
а можешь подправить прошивку с общим анодом, чтобы можно было изменять не в 1 градус, а до десятых долей градуса. Для инкубатура в 1 градус - много. Если что высылай на Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script Заранее спасибо.
 6 Написал(а) Semen, в 14:24 08.09.2009
проект супер, часы добавте, всё в одном девайсе. Можно ? А?
 7 Написал(а) ARV, в 19:18 11.09.2009
на 3-разрядном индикаторе - часы?! :zzz нет никакого смысла... и памяти тоже нет :)
 8 Написал(а) Эдик, в 02:01 14.09.2009
Собрал на Tiny. DS18B20. Вместо 20 показывает -15.
 9 Написал(а) Николай, в 18:37 15.01.2010
поднять до 110 градусов. Хочу применить термометр на ЛУАЗЕ для индикации температуры двигателя, его рабочая температура 70-110 градусов. чтоб применить 2х цветные индикаторы и при достижении верхней температуры происходила смена цвета индикатора. мой адрес Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
 10 Написал(а) александр, в 16:57 27.02.2010
Вопрос автору:- не желаете собрать на заказ? 
Если надумаете вот почта Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
 11 Написал(а) ARV, в 07:00 15.03.2010
на форуме есть огромная тема про этот термостат, есть несколько модификаций - читайте форум, найдете много нового и полезного. все ответы на все вопросы - ТАМ!!!
 12 Написал(а) egor, в 09:29 24.05.2012
не могу найти тему на форуме!!!! 
ткните ссылкой плз-очень надо!!!
 13 Написал(а) franko, в 10:21 23.12.2013
Не подскажите.как при програмировании данного девайса выставлять фьюзы в Казаме. 
Или ,если можно скриншот высталения фьюзов в Казаме. 
с ув.

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