Skip to content
 

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

Данное устройство изготавливалось как автоматизация к саду из кучи цветов в который превратила моя жена третью комнату в нашей квартире. Оказывается есть всякие-разные привередливые цветы для которых важен фиксированный световой день и зимой им приходится без дополнительного освещения очень грустно. Обычное фотореле, как вы понимаете, не подходило – нужен был гибрид из часов и фотореле. Суть задачи такая: утром в заранее настроенное время, 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

28 Comments

  1. Юрий сказав:

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

    • electra сказав:

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

  2. Юрий сказав:

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

    • electra сказав:

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

  3. Владислав сказав:

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

    • electra сказав:

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

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

  4. Владислав сказав:

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

  5. Владислав сказав:

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

  6. Владислав сказав:

    Что за элемент К1?

    • electra сказав:

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

      • Владислав сказав:

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

  7. chip сказав:

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

    • electra сказав:

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

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

  8. Daniel сказав:

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

  9. AJU-670 сказав:

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

    • electra сказав:

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

  10. Рома сказав:

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

  11. Андрей сказав:

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

  12. Андрей сказав:

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

    • Андрей сказав:

      Добил, сильно жужжал транс, проклеил стыки 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]

  13. Biker сказав:

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

Leave a Reply