Схема. Настенные часы-будильник с интерфейсом USB

Настенные часы-будильник с интерфейсом USB  

      Принципиальная схема часов показана на рис. 1. Микроконтроллер ATMega8-16AU (DD4) связан по интерфейсу SPI с микросхемой управления динамической индикацией MAX7219CNG (DD3), а к ее выходам подключены светодиодные семиэлементные индикаторы HG1—HG5, причем HG3 представляет собой четырехразрядный индикатор. Микросхему MAX7219CNG можно заменить, например, на МАХ7221 с соответствующими буквенными индексами. В качестве счетчика реального времени выбрана микросхема DS1307Z (DD1), а для измерения температуры применен цифровой датчик LM76CHM5 (ВК1). Оба прибора связаны с микроконтроллером по интерфейсу TWI.

       Связь часов с компьютером организована с помощью микросхемы FT232BM (DD2), которая взаимно преобразует сигналы UART микроконтроллера и сигналы интерфейса USB. В компьютере для обслуживания этой микросхемы должны быть установлены программные драйверы, которые можно найти в Интернете по адресу   www.ftdichip.com   При подключении часов к компьютеру они создадут виртуальный СОМ-порт, с которым и работает обслуживающая часы программа.
      С делителя напряжения, образованного резистором R20 и фоторезистором R22, на вход ADCO аналого-цифрового преобразователя микроконтроллера поступает напряжение, обратно пропорциональное яркости освещения фоторезистора. Измеряя его, микроконтроллер устанавливает оптимальную яркость свечения индикаторов HG1—HG5.

       Кнопки SB1—SB4 служат для управления часами.
       Напряжение питания поступает с разъема XS2 на микросхемы и другие элементы часов через интегральный стабилизатор DA1. Для предотвращения сбоя при отключении питания к микросхеме DD1 подключен литиевый элемент резервного питания G1. С этой же целью установки всех будильников хранятся в энергонезависимой памяти (EEPROM) микроконтроллера.
       Информацию о всех примененных в часах микросхемах и фоторезисторе можно найти в Интернете. Для этого обычно достаточно набрать в окне запроса поисковой системы Google или Yandex название элемента.

       При включении питания программа микроконтроллера инициализирует его внутренние ресурсы, микросхему часов реального времени и датчик температуры, читает информацию из EEPROM Далее начинается основной программный цикл, в котором выполняются следующие действия:
— вывод изображения на индикаторы в соответствии с текущим пунктом меню (переменная menu_st) или режимом отображения (переменная view);
— опрос датчика температуры;
— установка яркости свечения индикаторов;
— проверка будильников и проигрывание мелодии в течение заданного промежутка времени в случае их срабатывания;
— опрос состояния кнопок с последующим выбором пункта меню (режима отображения, времени/даты, будильников);
— при работе с компьютером обработка принятых по USB информационных пакетов, подготовка и отправка ответов.

       Процедура обработки прерывания от микросхемы часов реального времени DD1 (int0jsr) выполняет чтение текущего времени и включение светодиодов HL1, HL2. Они выключаются в основном цикле через полсекунды после включения.
       Обработка прерываний по переполнению таймера (процедура timer0_ovf_isr) заключается в обслуживании нескольких программных счетчиков.
       По прерыванию по приему UART (uart0_rx_isr) происходит запись принятого байта в массив rx_nas, а по прерыванию uart0_tx_isr — передача UART байта из массива tx mas.
 Настенные часы-будильник с интерфейсом USB
       Структура меню часов показана в табл. 1. Устанавливаемый параметр (его выбирают последовательными нажатиями на указанную в таблице кнопку) всегда находится на инди-каторахНС1, HG2, HG4, HG5 и выделяется светящими десятичными точками. Индикатор HG3 показывает номер пункта меню (от 1 до 13).
       Возможны следующие режимы работы будильника:<br />0 — будильник выключен;
1 — ежедневное срабатывание;
2 — срабатывание только по будням;
3 — срабатывание только по выходным;
4 — однократное срабатывание (фактически раз в год).

       Сигналом будильника служит мелодия «Неаполитанская песенка», воспроизводимая через динамическую головку ВА1. Формирование необходимых значений звуковой частоты происходит с помощью таймера TIMER 1 микроконтроллера, работающего в режиме широтноимпульсного модулятора (ШИМ) с точной фазой и частотой.

       В этом режиме максимальное значение в счетчике таймера задают числом, записываемым в регистр OCR1A. По достижении содержимым счетчика максимального и минимального значений состояние выхода РВ1 (ОС1А) микроконтролера инвертируется, а счетчик изменяет направление счета на противоположное. Таким образом, значение в регистре OCR1А задает необходимую частоту сигнала на выходе РВ1.

      Для проигрывания мелодии в программе микроконтроллера организованы четыре массива:
notejnas — значения для записи в регистр OCR1A, соответствующие нотам;
long_note_mas — коды длительности нот и пауз;
EE_mus_note — последовательность нот в исполняемой мелодии;
EE_mus_long — последовательность длительностей нот и пауз в исполняемой мелодии.

       При воспроизведении мелодии последовательно выполняется запись в регистр OCR1A значений из массива note_mas в соответствии с их индексами, хранящимися в массиве EE_mus_note. Значения длительности звучания нот и пауз извлекаются из массива EE_mus_long (первый полубайт — длительность паузы, второй полубайт — длительность звучания ноты) и преобразуются в коды для загрузки в счетчик времени из массива long_note_mas. Воспроизведение мелодии прекращается при нажатии на любую кнопку или по истечении установленного промежутка времени.
 Настенные часы-будильник с интерфейсом USB       
      Программа для управления часами с помощью компьютера, окно которой показано на рис. 2, написана на языке С# в среде MS Visual Studio 2008. Для ее работы необходимо, чтобы в компьютере был установлен пакет .Net Framework 3.5. Созданный в компьютере драйвером микросхемы FT232BM виртуальный СОМ-порт настраивается на скорость передачи и приема 35700 Бод при восьми информационных разрядах в слове и с контролем на четность.

       Каждый принимаемый и передаваемый информационный пакет начинается с байта-идентификатора направления передачи (0x32 — передает компьютер, 0x45 — передают часы). Далее следует байт длины сообщения. Его значение на три единицы больше числа информационных байтов N в пакете. За ним передается байт-код выполняемой операции и N байтов информации. Принимаемые байты подсчитывает программный счетчик. Как только их число превысит N+3, прием прекратится. Выполняемые операции и соответствующие им значения байтов информационных пакетов указаны в табл. 2.
Настенные часы-будильник с интерфейсом USB
       После подключения часов к компьютеру и запуска программы связи нужно нажать на экранную кнопку «Найти ЧАСЫ», после чего поочередно во все, в том числе виртуальные, СОМ-порты компьютера будут посланы команды 0x00. Когда часы ответят на команду, в статусной строке окна появится номер СОМ-порта, к которому они подключены. Затем им будут посланы две команды: прочитать время (0хА1) и прочитать будильники (0хАЗ). Панель «Время/Дата» покажет время и дату момента подключения, прочитанные из часов. После этого можно начинать работу с программой.

       Нажатием на экранную кнопку «Синхронизация» подается команда 0x01 и в часы записываются время и дата из операционной системы компьютера. А если нажать на экранную кнопку «Установить», в часы будут записаны время и дата, набранные на панели «Время/ Дата». Экранной кнопкой «Сброс секунд» подают команду 0x02, обнуляющую счетчик секунд.

       Нажимая на экранную кнопку «Записать будильники», подают команду 0x03 с параметрами, соответствующими содержимому панелей «1 — 8 будильники» и «9 — 16 будильники», а также указанное в соответствующем окошке время звучания мелодии. Аналогично командой 0хАЗ, посылаемой при нажатии на экранную кнопку «Прочитать будильники», выполняется обратная операция — отображение в соответствующих окнах параметров, хранящихся в EEPROM микроконтроллера. На время обработки принятой от компьютера информации и формирования ответа в часах включается звуковой сигнал.
  Настенные часы-будильник с интерфейсом USB  
  Настенные часы-будильник с интерфейсом USB  
       Основные узлы часов (за исключением адаптера USB на микросхеме DD2 и связанных с ней элементов) смонтированы на двусторонней печатной плате из фольгированного стеклотекстолита толщиной 1 мм. Чертеж платы показан на рис. 3. Расположение деталей и перемычек из изолированного провода на двух сторонах платы изображено на рис. 4. В отверстия, показанные залитыми, необходимо вставить отрезки провода, пропаяв их с обеих сторон платы. Типоразмеры резисторов и конденсаторов для поверхностного монтажа — 0805 или 0603.

      Перед установкой индикаторов HG1, HG2, HG4 и HG5 следует припаять все перемычки, резистор R17, микросхему DD3 и разъем XS1 (USB-BM). Чтобы уместить этот разъем на плате, придется удалить его заднюю часть, верхние контакты удлинить и соединить с соответствующими контактными площадками отрезками провода. Необходимо также вставить в отверстия и припаять к контактным площадкам, предназначенным для подключения адаптера USB, штыри от разъемов PLS (без пластмассовой колодки). Их острия должны быть направлены в сторону, противоположную индикаторам, и выступать на 3 мм над поверхностью платы.

       Для индикатора HG3 на плате следует установить панель из двух гнездовых колодок PBS-12. В результате лицевые панели всех индикаторов должны расположиться на одном уровне. Выводы кнопок SB1—SB4 припаивают к штырям от разъемов PLS, впаянным в отверстия платы. Гальванический элемент G1  — CR2032 в держателе СН005-2032.

      Фоторезистор прикреплен к корпусу клеем (например, цианакрилатом) Для более точного измерения температуры микросхему LM76CHM5 лучше вынести за пределы корпуса. Программирование микроконтроллера осуществлялось с помощью внутрисхемного программатора, подключаемого через LPT-порт компьютера.
 Настенные часы-будильник с интерфейсом USB 
       Адаптер USB выполнен в виде отдельного модуля на односторонней печатной плате, чертеж которой изображен на рис. 5. Со штырями на основной плате он соединяется с помощью гнездовой колодки PBS-10. Для того чтобы плата уместилась в корпусе, необходимо вынести кварцевый резонатор ZQ2 за ее пределы. Во избежание случайных замыканий корпус резонатора следует изолировать.
 Настенные часы-будильник с интерфейсом USB 
       Собранные в корпусе G1389G фирмы Gainta часы изображены на рис. 6. На лицевой панели корпуса сделаны отверстия для индикаторов HG1—HG5, светодиодов HL1, HL2 и толкателей кнопок SB1 — SB4, а на боковых — для разъемов. Из обрезков пластмассы изготовлены крепления для подвески часов на стену. Фоторезистор R22 приклеен к корпусу так, чтобы на его чувствительную поверхность попадал внешний свет.

Прилагаемые файлы:     orologio.zip  

Б. ЧАЙКОВСКИЙ, г. Пенза
«Радио» №2 2011г.

Похожие статьи:
Часы-будильник с термометром

2 thoughts on “Схема. Настенные часы-будильник с интерфейсом USB

  1. да я почти собрал, жду индикаторы, что касаемо работоспособности пока не знаю.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *