Пятница, 19.04.2024

В помощь радиолюбителю
Приветствую Вас Гость
Главная | Регистрация | Вход | RSS
Умный дом » Автоматика для дома
Наружные часы-термометр с боем


Владимир Макаров

Наружные часы-термометр с боем.

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

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

В данной статье описывается устройство, в котором в одном корпусе объединены  наружные часы  и термометр. Размер корпуса устройства - 36х28х7см, размер индикатора одной цифры часов или минут - 5х9см, размер индикатора одной цифры термометра - 3х5cм. При этих размерах цифры хорошо различимы на расстоянии до 25 метров.

Часы показывают время в часах и минутах в формате Н24. Начало каждого часа в период с 09.00 до 23:00 включительно обозначается звуком курантов Спасской башни Московского Кремля. На фонограмме записан перезвон колоколов и бой колокола по количеству наступивших часов суток в формате Н12. В 23:00 в алгоритме программы и прошивки исполняется мелодия "Спокойной ночи, малыши", звуковые файлы которой так же имеются в архиве.

Термометр показывает актуальные положительные и отрицательные значения температур воздуха, с точностью до десятых долей градуса.
Внешний вид часов показан на рисунке 1.

Рисунок 1.
Внешний вид часов-термометра.

Демонстрационный ролик:

 

Часы-термометр

Схема электрическая принципиальная контроллера часов-термометра показана на рисунке 2.

highslide.js

Рисунок 2.
Контроллер. Схема электрическая принципиальная.

Контроллер устройства разработан основе микроконтроллера ATmega8 (DD3). Микроконтроллер считывает значения часов и минут с микросхемы часов реального времени DS1307N (DD2).
Взаимодействие МК с DS1307N  осуществляется по последовательному двухпроводному интерфейсу TWI (Two Wire Interface), являющемуся полным аналогом интерфейса I2C (Inter-Integrated Circuit).

Микроконтроллер ATmega8 имеет на борту аппаратную реализацию сигналов TWI (выводы SDA и SCL). В прикладную программу устройства включены функции взаимодействия с оборудованием TWI микроконтроллера и функции взаимодействия с микросхемой DS1307N.
Программой также обеспечивается возможность корректировки пользователем значений часов и минут в микросхеме DS1307N для чего предусмотрена обработка нажатий кнопок устройства «часы+» (SA1) и «минуты+» (SA2), так же возможна корректировка и показаний термометра.

Блок кнопок выполнен в виде пульта. Назначение кнопок управления следующее;
Кнопка "часы+" - установка часов (увеличение на 1),  кнопка "минуты+" установка минут (увеличение на 1), "температура-" - корректировка температуры (уменьшения на 0.1 градуса), "температура+"  корректировка температуры (увеличение  на 0.1 градуса).

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

highslide.js

Рисунок 3.
Внешний вид пульта управления.

highslide.js

Рисунок 4.
Обратная сторона пульта управления.

Включение DS1307N осуществлено по типовой схеме. Стабильный ход часов обеспечивается кварцевым резонатором на 32768Гц (Y1), включенным в цепь внутреннего генератора часов.
Непрерывный ход часов в периоды отключения основного питания (+5В) поддерживается резервным элементом питания (GB1) типа CR2032 напряжением 3В.

Выводы SDA и SCL через подтягивающие резисторы (R5 и R6) подключаются к шине TWI. Индикатор «разделительное двоеточие» (DS1), разделяющий на табло разряды часов и минут, отображает секундные импульсы, снимаемые с вывода SQW/OUT микросхемы DS1307N. Для управления индикатором DS1 используется транзистор КТ315Б (VT1), работающий в ключевом режиме.

Считанные значения часов и минут отображаются на табло семисегментными индикаторами часов (DS2, DS3) и минут (DS4, DS5). Значения (0,1) сегментов для всех четырех индикаторов часов передаются в регистры сдвига на микросхемах 74HC595 (DD4, DD5, DD6, DD7), включенных последовательно.
В каждом цикле передачи данных на табло микроконтроллер сбрасывает регистры сдвига по входу !MR, а затем последовательно бит за битом выдает данные о включении сегментов на вход DS микросхемы DD4 и продвигает биты по регистрам сдвига подачей сигнала такта SH_CP. Особенностью регистра сдвига 74HC595 является то, что значения битов регистра сдвига передаются на выходы Q0..Q7 не сразу, а при поступлении импульса на вход «защелки» ST_CP. Это позволяет высвечивать разряд на табло после полного заполнения регистра сдвига, что исключает мерцание сегментов индикатора во время заполнения регистра сдвига.

С выходов Q0..Q7 регистров сдвига сигналы поступают на входы транзисторов Дарлингтона в микросхемах ULN2803A (DD8, DD9, DD10, DD11). Эти транзисторы обеспечивают согласование разных уровней питания регистров сдвига и индикаторов (5 и 12 Вольт соответственно)  и позволяют подключать мощную индикаторную нагрузку вплоть до 500мА на один сегмент индикатора.

При наступлении нового часа для исполнения звуковой имитации боя курантов звуковому генератору через разъем XP1 подается код мелодии (контакты L0, L1, L2, L3 и L4). Через этот же разъем подается питание для звукового генератора (контакт VDD, GND).
С выхода BUSY («занят») разъем XP1 снимается сигнал занятости звукового генератора проигрыванием фонограммы, но в данной версии прикладной программы этот сигнал не обрабатывается.

Описание звукового генератора представлено в отдельном разделе данной статьи.
Датчик температуры DS18B20 (DD2) обеспечивает измерение температуры окружающей среды и подачу кода температуры в микроконтроллер по его запросу.
Взаимодействие МК с DS18B20 осуществляется по однопроводному интерфейсу, задействующему только 1 порт МК (PINС3).

Датчик подключен по классической схеме, взятой из описания DS18B20. Обязательным дополнительным оборудованием является подтягивающий резистор 4.7кОм (R7).
Прикладная программа содержит необходимый набор функций для инициализации датчика, записи команд и чтения данных.

Прочитанное микроконтроллером значение температуры приводится для отображения на индикаторы в формате S ХХ.Х T, где S – знак температуры (+ или -), XX.Х – целая и дробная часть значения  температуры, T – символ градусы по Цельсию.
Отображение температуры осуществляется с помощью регистров сдвига 74HC595 (DD12, DD13, DD14), транзисторов Дарлингтона в микросхемах ULN2803A (DD15, DD16, DD17) и индикаторов (DS7, DS8, DS9) аналогично описанному выше способу отображения часов и минут. Индикатор «+/-» управляется через транзисторы Дарлингтона непосредственно микроконтроллером. Индикатор «°С» включен постоянно.

В устройстве предусмотрена корректировка отображаемой температуры в диапазоне от минус 5.0 до плюс 5.0 градусов с шагом 0.1 градуса.
Установленное значение корректировки складывается с измеренным значением температуры и отображается на индикаторах. Установленное значение корректировки постоянно храниться в энергонезависимой памяти МК (EEPROM) и каждый раз после подачи питания на устройство восстанавливается в прикладной программе.
Установка значения корректировки температуры осуществляется кнопками «температура-» (SA3) и «температура+» (SA4).
Цепочка R8-С5 выполняет начальный сброс МК при подаче питания.

Для внутрисхемного программирования МК предусмотрен разъем для подключения программатора (XP2).
Питание устройства осуществляется напряжением 12 Вольт. Для питания МК ATmega8, датчика часов DS1307N, датчика температуры DS18B20 и регистров сдвига 74HC595 осуществляется преобразование питания DC-DC в 5 Вольт с использованием микросхемы MC34063 (DA1), включенной по рекомендованной в описании схеме.
Для получения 5 Вольт на выходе DC-DC преобразователя значения резисторов R2 и R4 должны быть 1кОм и 3кОм соответственно.
Значения фьюзов микроконтроллера ATmega8: D9, E4 (HIGH, LOW).

Звуковой генератор.

Схема электрическая принципиальная звукового генератора показана на рисунке 5.

highslide.js

Рисунок 5.
Звуковой генератор. Схема электрическая принципиальная.

Звуковой генератор построен на микроконтроллере ATtiny861 (DD1). В основу положено известное решение «255-Voice PCM Sound Generator» (Автор - ChaN, оригинал статьи здесь - http://elm-chan.org/works/sd20p/report.html). Устройство и программа адаптированы для использования в устройстве часов.

Звуковой генератор обеспечивает проигрывание WAV файлов записанных на microSD Card в соответствии с кодами мелодий, выставленных на контактах L4..L0 разъема XP1.
С помощью преобразователя на линейном регуляторе LM1117-3.3 (DA2)  подаваемое на устройство напряжение12 Вольт преобразуются в напряжение 3.3 Вольта, необходимое для питания microSD Card и микроконтроллера устройства.

Для согласования уровней выходных сигналов от контроллера часов-термометра (5B) с уровнями входных сигналов звукового генератора (3.3В) служат делители напряжения на резисторах R9...R18.
Запуск звукового генератора осуществляется всякий раз, когда меняется состояние входной комбинации L4..L0 на разъеме XP1 при условии, что генератор в это время не занят проигрыванием звукового файла.

Запуск осуществляется по прерыванию на ножках PINA3...PINA7. Функция обработки прерывания преобразовывает код L4..L0 в имя файла. Микроконтроллер читает файл с microSD Card и направляет поток на внутренний широтно-импульсный модулятор - на выходах OC1A и OC1B формируется звуковой сигнал фонограммы. Звуковой сигнал через цепочку R1, R2, R3, C2, C3 подается на вход усилителя низкой частоты TDA7056A (DA1), нагруженный динамиком SP1 (8Ом). Резистор R5 и потенциометр R4 обеспечивают регулировку громкости.

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

Подключение microSD Card осуществлено через адаптер формата SD Card, который в свою очередь подключаен к устройству через разъем XS1.
Цепочка R7-С7 выполняет начальный сброс МК при подаче питания.
Для внутрисхемного программирования МК предусмотрен разъем для подключения программатора (XP2).
Значения фьюзов микроконтроллера ATtiny861: DF, C1, FF (HIGH, LOW, EXT)
 

Индикаторы.

Питание всех индикаторов осуществляется напряжением 12 Вольт.
Индикаторы часов и минут выполнены из двух рядов светодиодов. Расположение светодиодов в сегментах показано на рисунке 6. 



Рисунок 6.
Расположение сегментов часов.

Сегменты A,D состоят из 10 светодиодов на сегмент, сегменты B, C, E, F, G из 12 светодиодов на сегмент, разделительное двоеточие состоит из 8 светодиодов.
При таком расположении светодиодов в сегментах цифры на индикаторах будут высвечиваться как показано на рисунке 7.



Рисунок 7.
Свечение цифр на индикаторах часов.

Индикаторы термометра выполнены из одного ряда светодиодов. Расположение светодиодов в сегментах показано на рисунке 8.



Рисунок 8.
Расположение сегментов термометра.

При таком расположении светодиодов в сегментах цифры на индикаторах будут высвечиваться как показано на рисунке 9.



Рисунок 9.
Свечение цифр на индикаторах термометра.

При соединении светодиодов в сегменте они могут быть включены последовательно. Для расчета рекомендую воспользоваться LED-калькулятором http://cxem.net/calc/ledcalc.php.
Согласно расчетам при последовательном включении светодиодов должны быть использованы номиналы резисторов, указанных на рисунке 10.

highslide.js

Рисунок 10.
Схема последовательного включения светодиодов.

Обратите внимание, что для разных типов светодиодов схемы отличаются.

Конструкция.

Самым трудоемкими элементами при изготовлении устройства являются индикаторы. Каждый разряд изготавливается на отдельной плате - удобно травить, паять, тестировать. Печатные платы разработаны в DipTrace. Макет печатной платы одного разряда часов показан на рисунке 11.

highslide.js

Рисунок 11.
Макет печатной платы разряда часов.

Печатные платы всех элементов табло часов-термометра представлены в архиве.

Печатная плата контроллера представлена на рисунке 12, а внешний вид платы на рисунке 13.

highslide.js

Рисунок 12.
Макет печатной платы контроллера.

highslide.js

Рисунок 13.
Внешний вид контроллера.

Печатная плата звукового генератора представлена на рисунке 14, а внешний вид платы на рисунке 15.

highslide.js

Рисунок 14.
Макет печатной платы звукового генератора.

highslide.js

Рисунок 15.
Внешний вид звукового генератора.

Устройство собрано в корпусе, спаянном из металлического оцинкованного профиля, используемого для монтажа гипсокартона.
В корпусе размещены промышленный блок питания (12В/2А), динамик, панель управления, табло с индикаторами, контроллер и звуковой генератор. Размещение блоков часов-термометра показано на рисунках 16 и 17.

highslide.js

Рисунок 16.
Размещение блоков устройства в корпусе.

highslide.js

Рисунок 17.
Размещение индикаторов устройства в корпусе.

В архиве размещены файлы:
 
ExternalClock.c – исходный код программы на Си контролера часов-термометра
ExternalClock.hex – прошивка контроллера часов термометра
SoundGenerator.rar – исходный код программы на Си звукового генератора
SoundGenerator.hex – прошивка звукового генератора
SoundFiles.rar – звуковые файлы «Куранты»
SCH_ExternalClock.dch – схема контроллера в DipTrace
SCH_SoundGenerator.dch – схема звукового генератора в DipTrace
PCB_ExternalClock.dip – печатная плата контроллера в DipTrace
PCB_ExternalClockControl.dip – печатная плата пульта управления контроллера в DipTrace
PCB_SoundGenerator.dip – печатная плата звукового генератора в DipTrace
PCB_DigitLarge.dip – печатная плата цифры часов в DipTrace
PCB_DigitLargeD.dip – печатная плата разделительного двоеточия в DipTrace
PCB_DigitSmallM.dip – печатная плата цифры термометра в DipTrace
PCB_DigitSmallS.dip – печатная плата знака «+/-» термометра в DipTrace
PCB_DigitSmallT.dip – печатная плата символа «градус по Цельсию» термометра в DipTrace


Архив, первая часть.

Архив, вторая часть.

 

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

 



Категория: Автоматика для дома | Просмотров: 61574 | Добавил: MVS

Понравилась статья - нажми на кнопку!

 Нравится 

Всего кликов: 166

Назад

Поделись с друзьями:





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

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


Всего комментариев: 14
* * 14) Добавил: MVS Владимир (01.05.2023 16:13) [Материал]

Схема и программа рабочие. Даже не знаю что и посоветовать кроме проверки подключения датчика, качества платы и пайки. Уж, извините за такой ответ. Я бы ещё осциллографом сигналы посмотрел между датчиком и МК. Был случай, ножка МК в кроватке согнулась и не было контакта. Прозвонить цепи надо.

* * 13) Добавил: sednevsergey1309 Сергей Резванов (01.05.2023 15:50) [Материал]

Использую DALAS DS18B20 ,проверял прибором gm328a все датчики работают.Ставил их в другие схемы всё в порядке показывают температуру нормально. Посоветуйте Владимир в чём загвоздка .

* * 12) Добавил: MVS Владимир (30.04.2023 23:05) [Материал]

Извините, соврал! Микросхема DS18B20?

* * 11) Добавил: MVS Владимир (30.04.2023 23:02) [Материал]

А Вы точно используете микросхему  DS1307N?   Должна быть именно такая.

* * 10) Добавил: sednevsergey1309 Сергей Резванов (30.04.2023 16:53) [Материал]

Всё отлично ,схема хорошая собрал почти быстро . Но были небольшие проблемы с индикацией.Схема работает ,но есть проблема с датчиком температуры почему-то микроконтроллер не хочет считывать показания .стоят нули .перепробовал несколько датчиков одно и тоже.подскажите в чём причина.

* * 9) Добавил: ra0cfx Александр Антонов (17.01.2023 17:06) [Материал]

Проекту совершенно не хватает блока коррекции времени по GPS. Вот прям напрашивается.

* * 8) Добавил: arctros Юрец (22.07.2021 00:12) [Материал]

DS3231 и DS1307 полностью взаимозаменяемые без изменений в прошивке! yes

* * 7) Добавил: MVS Владимир (10.02.2021 23:12) [Материал]

Карим, это, конечно, заманчиво, переделать схему на такой достойный датчик времени  как DS3231. Но вот именно в ближайшие месяцы просто нет времени. Уж извините.

* * 6) Добавил: Ryng Карим (10.02.2021 06:39) [Материал]

Добрый день! Уважаемый автор не могли бы Вы переделать прошивку под DS3231.

* * 5) Добавил: MVS Владимир Макаров (29.06.2017 13:22) [Материал]

Архив не битый, просто для нормальной его распаковки необходимо сохранить (скачать) обе его части в одно место (папку), тогда распакуется нормально. По отдельности части не распакуются.
В статье в конце сделал пометку. Автор.

* * 4) Добавил: Ryng Карим Омаров (23.06.2017 08:51) [Материал]

Добрый день! Уважаемый MVS, 2 часть архива к сожалению битая. Не могли бы Вы перезалить архивы.

* * 3) Добавил: Айжан Айжан Олегов (06.05.2016 17:12) [Материал]

просто супер, будем на вас равняться, господин Макаров!

* * 2) Добавил: MVS Владимир Макаров (30.03.2015 20:00) [Материал]

Да, где-то месяц ушел на эту конструкцию. Но оно того стоит. Спасибо за оценку. Автор.

* * 1) Добавил: nik-pnn Николай (29.03.2015 12:09) [Материал]

Грандиозный конструктив! shlapa
Особенно паять табло. У меня бы терпения вряд ли хватило бы.
Автору респект  и уважуха за его терпение и грандиозные труды respect
Красивые и аккуратные конструкции выходят из Ваших рук. Спасибо!