Электронные часы – термометр – термостат – фотореле

Данное устройство изготавливалось как автоматизация к саду из кучи цветов в который превратила моя жена третью комнату в нашей квартире. Оказывается есть всякие-разные привередливые цветы для которых важен фиксированный световой день и зимой им приходится без дополнительного освещения очень грустно. Обычное фотореле, как вы понимаете, не подходило – нужен был гибрид из часов и фотореле. Суть задачи такая: утром в заранее настроенное время, 08:00, к примеру, микроконтроллер вспоминает о том, что у него есть фотодатчик и начинает измерять освещенность. Если освещенность ниже порогового значения, вами же и настроенного, то включается свет. Как только освещенность доходит до нужного значения (солнце взошло) свет выключается Вечером все происходит в обратном порядке. По факту наступления ночи, к примеру в 21.00 свет гаснет и устройство на фотодатчик уже не реагирует. Ну и естественно в логике работы фотореле учитываются такие нюансы как случайные срабатывания. На резкое потемнение – устройство отреагирует сразу – моментально включится свет, а вот наоборот – никак. Случайной вспышкой салюта или проехавшей мимо машиной лампочку потушить не удастся. Равномерное, без провалов освещение должно присутствовать секунд 20, прежде чем выключится свет. Таким образом решена проблема с ложными срабатываниями.

Ну а дальше, как водится, началось…. А давайте чтобы еще температуру показывал в комнате… А тогда и термостат… А вот бы еще часы не сбивались при отключении света… Уж не знаю, как я на будильник не повелся. Хотя нет, знаю, прошивка на чистом ассемблере без подключения сторонних лишних библиотек, как говорится “только полезный код”, заняла у меня почти 90% 48-й меги.

Теперь, собственно, о конструкции. Основой устройства является, как я уже и говорил, ATMega48. Все данные выводятся на семисегментный четырехсимвольный  LED индикатор. В качестве фотодатчика выступает фоторезистор, выведенный наружу через разъем RS-232. Внутри этого же разъема смонтирован аналоговый термодатчик LM235. LM235 – это аналоговый “стабилитрон”, чем-то функционально напоминающий TL431. Напряжение “стабилизации” зависит от температуры и калибровано в 10мв / кельвин. Т.е. 0С = 273К = 2.73в на выходе. Более подробно можете почитать тут. Входная часть фото и термодатчиков реализована на LM358. В случае фотодатчика это просто повторитель, а для термодатчика использован дифференциальный усилитель для перевода кельвинов в цельсий. Немного замудрено, можно было бы сделать это и программно, но будет иметь хороший педагогический эффект для начинающих – придется вникнуть при настройке, а это есть хорошо. Часы собраны на микросхеме RTC M41T56 с I2C интерфейсом. В качестве резервного питания использована батарейка CR2032. От нее производители обещают работу часов в течении 7 лет. Неплохо, для такого лентяя как я. Лампа коммутируется симистором BTA06-600, через оптосимистор MOC3063, который по моим наблюдениям потянет без дополнительного охлаждения нагрузку в 150-200вт. Нагрузку – нагреватель включает реле. Тут все будет зависеть от реле которое вы будете использовать в своей конструкции. Блок питания в моем случае собран на TNY255, но никто не заставляет делать такой же – пойдет любой на 12в, 200-300ма.  Конструктивно все собрано в корпусе Z3A. Он достаточно распространенный.

Логика работы устройства. Как я уже говорил часы имеют один четырехсимвольный семисегментный индикатор, три кнопки и два светодиода. Начну с простого – светодиодов. Один из светодиодов отображает работу нагревателя, т.е. попросту включен параллельно реле (точнее до ключа управляющего реле). Включен нагреватель – горит светодиод, не включен – не горит. Со вторым все немного сложнее. Это режим “авто”. Дело в том, что коммутируемый источник освещения может понадобиться включить и днем, либо принудительно выключить вечером. Мало ли что бывает…. Устройство при включении в сеть включает режим “авто”. Далее при нажатии на кнопку “+” – освещение включается, “-” – выключается, при этом режим “авто” выключается и устройство перестает работать как фотореле. Длинное нажатие на “+” или “-” включит “авто”. Вы зададите вполне закономерный вопрос: а как быть если я случайно нажал на кнопку “+” или “-“? Свет загорится или потухнет навсегда? А как же дуракоустойчивость? Все нормально! Раз в сутки часы сбрасывают режим “авто” в положение вкл. Ну или при сбое электропитания, как вариант… Кнопочка “set” циклически переключает часы с термометром. Часы имеют 24-х часовую форму отображения, термометр измеряет температуру от 0 до 99С с шагом в 1С. Не DS18B20 конечно, но как для дома очень даже прилично все работает. Вот собственно и все режимы работы – часы + термометр + вкл/выкл свет. А зачем больше? Все просто и понятно! Теперь о режиме настроек – в него мы попадаем путем нажатия и удержания кнопки “set”. Тут все гораздо грандиознее… Смотрите лучше рисунок, а то словами долго будет.

Как видите все довольно логично, но некоторые пояснения все же стоит дать. В процессе настройки порога срабатывания фотодатчика попеременно выводятся порог срабатывания и текущие данные с фоторезистора. Это нужно для наглядности, это очень упрощает настройку в момент наступления сумерек вы запускаете настройку и выставляете порог срабатывания близкий к тому что намерял фотодатчик. При нажатии на кнопки “+” / “-” устройство немедленно отображает значение порога, так логичнее. И второй, более важный, нюанс заключается в том, что длинное нажатие кнопки “set” в любой точке меню настроек позволит вам выйти в нормальный режим работы, при этом сохранятся сделанные вами изменения, а часы останутся нетронутыми. Запись в часы производится только в самом конце после нажатия на кнопку set  при вводе минут. Также стоит отметить, что при этом сбрасываются в ноль секунды. Мы их хоть и не видим, но они есть, как в том анекдоте.

Налаживание и конструкция устройства. В моем случае все расположено на двух платах в корпусе Z3A. Аналоговая часть, блок питания и исполнительная часть на большой плате на донышке корпуса и микроконтроллер с кнопками, индикаторами и часами на передней панели. Блок питания собран по в общем-то типовой для TNY255 схеме, нюансов никаких нет. Остановлюсь лишь на данных трансформатора. Феррит EE16, материал N27, N27. Так как частота всего лишь 40khz, с материалом проблем быть не должно, можно взять и безымянный из компьютерного БП. Первичная обмотка 300 витков провода d=0.12, вторичная 40 витков d=0,33. Индуктивность первичной обмотки порядка 10мгн, воздушный зазор 0.22мм. Для тех, кого проект заинтересовал в полном объеме – выкладываю и схему БП. Такие вещи, как предохранитель, выключатель питания, входной фильтр на схеме не указаны. Я думаю и сами догадаетесь..

После сборки как обычно проверяете монтаж, если все нормально – блок питания и цифровая часть должна заработать сразу. Также крайне желательно не забыть прошить EEPROM, это избавит вас от “мусора” вместо полезных данных при первой настройке. Прошивка прилагается. В аналоговой части нужно будет проконтролировать пару напряжений.
1. Напряжение на AREF микроконтроллера должно быть около 2.5в.
2. На катоде IC4 (TL431) должно быть 2.73в. При необходимости подбираете резисторами R22-R23. Чем точнее выставите это напряжение, тем меньше будет погрешность в районе 0С.
3. После этого можно перейти к калибровке термометра. Тут все просто – резистором P1 выставляете текущую температуру окружающей среды при помощи какого-то образцового термометра.
4. Теперь о фотодатчике. Здесь нужно выполнить одно правило. Фоторезистор не обязательно должен быть какого-то определенного номинала. Вам нужно знать его сопротивление без освещения. Сопротивление R28 должно быть таким же. Т.е. Rфото (темн) = 47k = r28. После того как это правило выполнено – измеряем напряжение на выходе 7 ОУ LM358. В темноте должно быть 2.5В, при ярком освещении – близко к 0в.
Вот и вся настройка. Ну и на закуску картинка с фузами, куда же без них?

Файлы:
Схема в SPlan 7
Печатная плата в Spint Layout 5
Прошивка для индикатора с общим анодом
Прошивка EEPROM

33 коментарі до “Электронные часы – термометр – термостат – фотореле

  1. Добрый день!
    Возможно это уже стало банальной просьбой: – можно васпопросить создать прошивку для ATmega8. ATmega48 в smd корпусе недоступна в реальном времени, а повторить вашу идею хотелось бы. Спасибо!

  2. Оххх…. Между мегой 8 и 48 просто пропасть разницы в конфигурационных регистрах. Но не это самое неприятное – из-за существенной разницы в адресации придется перелопатить 4кб кода на ассемблере выборочно позаменять in с out на lds c sts и прочие нюансы… Безглючной прошивки с первой попытки не получится. Отлаживать придется в Вашей конструкции. Готовы? Я почему-то думал, что m41t56 будет сложнее найти…

  3. Ну что ж, давайте потихоньку попытаемся…

  4. Собирайте по имеющейся схеме, но ставьте мегу8. Ноги у них одинаковые. На днях подправлю и отправлю прошивку Вам на почту.

  5. какой атмега48 из этого сайта подойдет или какой нужен? дорожки для печатной платы в какой программе делали?ткните носом пожалуйста в ссылку для флешера.В какой среде разработки писали код?
    Заранее благодарю вас
    Если вас не затруднит напишите пожалуйста почту zhirov0vlad@gmail.com вдруг возникнут вопросы
    PS соневаюсь что увидите это сообщение

  6. Ну да бог с ней с почтой, раз не работает. Отвечу тут:

    1. Микроконтроллер ATMega48PA-AU – самый распространенный из этого семейства на сегодня.
    2. Плата разводилась в SprintLayout 5.0.
    3. Писалось все в AVR Studio 4.xx на родном ассемблере, оттуда же и прошивалось.
    4. Прошить контроллер можете любой другой программой подходящей к Вашему программатору (CVAvr и т.п.) Прошивка и содержимое EEPROM в конце статьи.

  7. спасибо за ответы.
    Еще пожалуйста подскажите есть ли уже готовые программаторы?Если да то если Вас не затруднит дайте ссылку
    Спасибо Вам за помощь

  8. Пришлите пожалуйста печатную плату в Sprint layout’e блока питания

  9. Реле электромеханическое, одна группа контактов на замыкание.
    Вы надо мной прикалываетесь? Я же Вам на почту уже ответил, как просили.

  10. Извините. с почтой разобрался. Антиспам кидал ваши письма в спам. Спасибо за потраченное время и нервы.

  11. Андрей,поделитесь пожалуйста секретом изготовления лицевой части дивайса.За ранние спасибо.

  12. Абсолютно не секрет.
    1. Черную панель красим из баллона в белый цвет.
    2. Печатаем на прозрачной пленке на лазерном принтере саму панель (зеркально, тонером внутрь). То что будет прозрачным – станет белым. Если есть зачернитель тонера используем и его. Полутона (серый цвет) также получается довольно неплохо.
    3. Скальпелем режем нужные отверстия.
    4. В непрозрачных местах клеим на духсторонний скотч.

    В общем метод довольно доступный и для ленивых…

  13. спасибо за ответ.а в какой программе рисуете?

  14. Здравствуйте! А можно ли подправить прошивку и схему под DS1307 и температурник 18B20? Спасибо!

  15. Ага… И вывод на цветной TFT дисплей. Нет. Это уже будет другое устройство.

  16. Здравствуйте! Возможно ли в термостате вместо LM235 и LM358 применить термопару с AD597 и расширить диапазон температур до 300 градусов?

  17. Без правки ПО – нет. Извините, проект старый, потому если и буду что-то исправлять – то только ошибки.

  18. Вещь очень неплохая в меня давно крутилась идея зделать полностю автономный аквариум с добавлением такой технологии как аквапоника ето устройство полностью б обеспечило независимый контроль за аквариумом ток если бы еще реле времени было то вообще чудная вещь (реле нужно для перекачки воды в емкость с растениями точно не помню но вроде 7 раз в час по 5 мин. )

  19. Эм.. а что все таки в снаббере резистор\конденсатор как в лайоуте или диод\сапрессор?

  20. Слишком быстро мигает настройка чувствительности света, более разборчиво было бы с интервалами 2-3 сек.

  21. Добил, сильно жужжал транс, проклеил стыки plasik 70 проварил в парафине. На катоде 2.732, калибровка температуры удалась при R20 91K, а вот последующие показания слишком отличаются от образцового термометра ТМ-902С, подстраивал потенциометр при комнатной 22, но если феном нагреть термопару термометра показывает 130 град, а нагревая ЛМ235 – 79 градусов. Фоторезистор в темноте уходит в бесконечность, R28 100К, на солнце d = 0…1. Выключенным пролежал сутки, часики отстали на 3 минуты, кварц новый прочищены контакты, предполагаю требуется замена.
    [URL=http://piccy.info/view3/9621236/e229e5350060698436463f2bd561a260/][IMG]http://i.piccy.info/i9/51e1d847ccf94fdab065df5493678381/1459415369/27979/868028/IMG_20160331_120614_500.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2016-03-31-09-10/i9-9621236/500×331-r][IMG]http://i.piccy.info/a3/2016-03-31-09-10/i9-9621236/500×331-r/i.gif[/IMG][/URL]
    [URL=http://piccy.info/view3/9621239/b7d9d10df5943fc14575e784df51c622/1200/][IMG]http://i.piccy.info/i9/f4874fbe443cf1afef8d6eea95a654ec/1459415386/86983/868028/IMG_20160331_120546_800.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2016-03-31-09-09/i9-9621239/800×510-r][IMG]http://i.piccy.info/a3/2016-03-31-09-09/i9-9621239/800×510-r/i.gif[/IMG][/URL]

  22. Привет!
    Код программы 9,37 кБ. В меге48 4кБ?
    Как втиснуть?

  23. Моe вiтання.Чи вдалося переробити вашу розробку пiд Atmega 8 (прошивку) якщо так то може наважитесь у загал.

  24. Дуже гарна праця нажаль покинута розробником мабуть подався у полiтики.

  25. Доброго дня Олег. Гарне питання… Якби то я пам’ятав… Вісім років пройшло. Взагалі у Атмел не дуже добре такі заміни відбуваються. Ядро те ж саме, але регістри, адресація регістрів різні. Іноді навіть недостатньо виправити всі “матюки” компілятора. Тож якщо і цікавитеся цим проектом – краще купіть 48-му мегу. Вона не дефіцит і не дорожча за 8-му мегу.

  26. Ні. Не подався. З мене не вийде гарний політик – я звик називати речі своїми іменами. Вже писав про це – немає натхнення, бо війна майже поруч. Точніше розробки є – немає натхнення писати.

  27. Дуже гарна праця нажаль покинута розробником мабуть подався у полiтики.
    Доброго часу доби.48 вже прошита та впаяна.Гарна праця.Щiро дякую за вашi розробки.Нат жаль ранiш не було часу зайнятися маленькiм захопленням та-й з
    деталюшок тiлькi кт315 та в кращому випадку 561ла3.Тож дякую ше раз.На все добре.Нехай нам усiм щастить!!!

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *