Новая статья об еще одном термостате, который я делал для себя, что в последствии и определило его функциональность и конструктив.
Управляет мой термостат ИК-обогревателями типа «Иколайн ИКО-06», но может быть применён и с другими обогревателями.
Содержание статьи / Table Of Contents
↑ Чего отапливаем?
Опуская критерии выбора, для обогрева кухни на даче я купил два инфракрасных обогревателя. Производитель рекомендует ставить 1 кВт на 10 м2. Кухня 18 м2, я поставил два по 0,6 кВт. Впечатления самые положительные.Мои родители проживают на даче от снега до снега. Весной и осенью на кухне, скажем — не жарко, тело тепла просит.
Нагреватели я приобрел умышленно без регулятора температуры. Во-первых, с регулятором это дороже, во-вторых, вряд ли я смог бы найти нужный мне функционал, а в-третьих — это же возможность что-то сделать самому, что любому радиолюбителю любо!
↑ Функционал
• Поддержка заданной температуры в заданном диапазоне 10-35 гр. С• Включение, отключение по времени.
• Часы реального времени.
• Минимальная (дежурная) температура.
↑ Компоненты, критерии выбора
• Управляющий микроконтроллер — Atmega8. Валялся на полке.• Индикатор — TIC55. Валялся на полке.
• Часы реального времени — DS1307. Готовое решение часов реального времени со своим резервным питанием.
• Термодатчик — DS1631, термометр/термостат. Я как правило ориентируюсь на цифровые термо-датчики, ну, а поскольку для DS1307 нужна шина i2c, то и термо-датчик был выбран с такой же шиной.
• Управление — инкрементальный энкодер с кнопкой. Прикольно! С практической точки зрения, мы получаем три кнопки в одном установочном месте.
• Коммутация — электромагнитное реле Omron G6RN-1. Есть небольшой запас, катушка реле 5 В., контакты 8 А.
↑ Схема и плата
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
Размещение термодатчика внизу платы,
установочное место отделено воздушным зазором для термоизоляции
Качество платы на троечку. В то время я ещё баловался бумагой из глянцевых журналов. И мне редко удавалось добиться вменяемого результата. В настоящее время я пользуюсь специальной термотрансферной бумагой: результат всегда предсказуемый, никаких проблем с отмачиванием, тонер полностью остается на плате.
↑ Работа
Индикация и режимы. Прибор имеет семь режимов работы:1. Отображение текущей температуры
2. Отображение времени
3. Попеременное отображение температуры и времени
4. Установка температуры регулирования
5. Установка времени включения регулирования
6. Установка времени отключения регулирования
7. Установка времени
Прибор всегда включается в третьем режиме — попеременное отображение температуры и времени. Поворотом ручки энкодера влево и вправо изменяется режим работы/индикации.
Первые три режима — просто индикация, следующие четыре индикация и настройка параметров.
Вкратце о настройке. Настроек всего четыре: установка температуры регулирования, времени включения/отключения и настройка часов. Для настройки какого-либо параметра нужно нажать на кнопку энкодера, выставить нужное значение вращением ручки энкодера, нажать кнопку для запоминания параметра.
↑ Проверка работы с отрицательными температурами
Взял я баллон охладителя CRAMOLINE FREEZER и попшикал до легкого инея.CRAMOLINE FREEZER представляет собой идеальный инструмент для низкотемпературного тестирования электронных систем и термочувствительных компонентов. Обеспечивает быстрое охлаждение. Если хорошенько побрызгать, то до -50°С! Ну, нам столько не надо.
↑ Программно-аппаратная часть
Программа написана на языке СИ в среде Atmel AVR Studio. Сразу оговорюсь, что код не блещет изяществом. Написан практически «в лоб», так как я, не собирался публиковать эту работу.Регулирование температуры осуществляется двумя способами:
1. Включается принудительно в произвольный момент времени.
2. В заданном интервале времени.
С первым способом все понятно, в 1, 2 или 3 режиме нажимаем кнопку энкодера — термостат включен, в качестве индикатора зажигается подсветка дисплея. Нажали еще раз — термостат выключен. На самом деле не совсем выключен, а в качестве температуры регулирования устанавливается так называемая, по моей терминологии — дежурная температура равная +10 гр. С. Сделано это для того что бы предотвратить замерзание воды на кухне, если температура будет стремится нулю.
Второй способ. Устанавливается время включения и время отключения термостата. Например: 7-10. Термостат включится в семь утра и будет поддерживать установленную температуру до 10 утра. Естественно после можно будет включить термостат вручную. Регулирование по времени я использую для того что бы утром, к тому моменту как я выхожу умываться, завтракать — кухня уже прогрелась. Ну и отключается прибор сам, в установленное время.
Теперь немного заострю внимание на несколько не тривиальной аппаратно-программной реализации.
Три параметра, которые нужно хранить при отключении питания, я храню не в EEPROM микроконтроллера, а в часиках DS1307. В DS1307 есть SRAM, 64 байта. В области 00h-07h лежат данные RTC, то бишь дата, время. А с адреса 08h по 3Fh (56 байт), могут располагаться пользовательские данные. Вот там я и храню свои параметры. Не надо искать какой-либо смысл в этом, просто мне хотелось попробовать/побаловаться.
Выход SQW/OUT DS1307 настроен на генерацию меандра с частотой 1Гц. Выход подключен входу внешнего прерывания микроконтроллера. В обработчике прерывания устанавливается флаг, который разрешает чтение времени с DS1307.
Теперь про термометр. В качестве термодатчика я использую DS1631, он же термостат! У этой микросхемы есть настраиваемый выход — «Tout». То есть, сам датчик, посредством этого выхода осуществляет управление исполнительным устройством, микроконтроллер используется только для настройки порогов, которые хранятся в EEPROM DS1631. Для того что бы выключить регулирование, я перезаписываю пороги срабатывания.
Опять же, можно было это реализовать и на микроконтроллере, но хотелось побаловаться. Хотя, для подстраховки, на схеме я предусмотрел джемпер для переключения источника управления реле.
↑ Конструктив
Корпус собран из того что валялось под руками, а под руками у меня в тот день валялись заглушки от салазок винчестеров от сервера Supermicro.Половинки корпуса соединил также частями заглушек, для передней и задней стенки использовал оргсекло.
↑ Внешний вид готового устройства
↑ Обзор файлов проекта программы
Termostat.c — главный файл, содержит основную программу.includes.h, global.h, init.h, init.c, avrlibtypes.h, avrlibdefs.h — файлы созданные программой AVR Wizard, использовал в то время. Сильно в этих файлах не копался. Добавил в файл init строчки для инициализации периферии.
i2c-soft.h, i2c-soft.c — программный драйвер шины i2c, автор указан в файлах.
tic55.h, tic55.c — библиотека для работы с индикатором tic55.
ds1307.h, ds1307.c — библиотека для работы с DS1307, позаимствована у CVAVR.
ds1631.h, ds1631.c — библиотека для работы с DS1631, позаимствована у CVAVR и подправлена.
↑ Фьюзы
↑ Небольшой видеоролик
↑ Резюме
К аппаратной части у меня нет претензий, а вот в программной есть что изменить, улучшить. В частности, необходимо переделать опрос энкодера. У меня реализован алгоритм для ленивых — не правильный алгоритм. Один из выходов энкодера подключен к входу внешнего прерывания микроконтроллера. Вход настроен на срабатывание по фронту. В обработчике прерывания, я смотрю, какой уровень в этот момент времени на другом выходе энкодера, таким образом, я различаю вращение влево и вправо.Собственно, прибор работает два года без нареканий и, если мне будет скучно, то я перепишу опрос энкодера, хотя это вряд ли — скучно мне не бывает!
↑ Ссылки и файлы
Проект платы/схемы в DipTrace 🎁Diptrace.7z 15.21 Kb ⇣ 104Прошивка: 🎁Termostat-hex.7z 4.37 Kb ⇣ 92
Даташит на DS1307 🎁DS1307.pdf 262.14 Kb ⇣ 74
Даташит на DS1631 🎁DS1631-DS1731.pdf 260.96 Kb ⇣ 74
• Заказать пачку термотрансферной бумаги, 10 листов А4. Бесплатная доставка.
• Заказать пачку термотрансферной бумаги, 50 листов А4. Бесплатная доставка.
• Заказать пачку термотрансферной бумаги, 100 листов А4. Бесплатная доставка.
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.