Chronulator 2.0 – часы на стрелочных вольтметрах с подсветкой
Автор: Boris aka bschepan Здравствуй, дорогой РадиоКОТ! Поздравляю тебя с шестым днём рождения! Хочу пожелать Коту всяческих успехов, здоровья и счастья, а сайту – 100% аптайма :) и быстрых пингов. На создание этих часов меня вдохновили три проекта ([1], [2], [3]), на которые я случайно наткнулся на бескрайних просторах интернета, и необходимость создания оригинального подарка на день рождения. Часы предполагалось разместить на каминной полке/буфете/столе, поэтому никаких будильников я делать не стал, но при желании на плате легко поместится пищалка, благо место позволяет. Основной фишкой-инновацией часов стала подсветка индикаторов, насколько я могу судить, до меня никто этого не делал. Ну а поскольку я планировал сделать отображение и часов, и даты, то на подсветку легла ещё и роль индикации текущего режима: зеленый – часы и минуты (верхние шкалы вольтметров), красный – месяцы и дни (нижние шкалы). В режиме установки даты/времени текущая изменяемая шкала выделяется мигающей подсветкой. Что касается читабельности показаний часов, то для того, чтобы с ходу определять по ним время, к ним надо немного привыкнуть (сказывается экзотичность отображения), у меня это заняло примерно часа три периодических поглядываний на часы :). Видео-ролик, демонстрирующий работу часов, приложен к статье. На самом деле, в реальности они выглядят куда лучше, чем смогла передать камера. :) Алгоритм работы У часов три основных режима: отображение времени/даты, установка времени/даты и калибровка шкал. После включения часы переходят в режим отображения часов и минут (цвет подсветки зелёный), кнопка DATE/TIME переключает их в режим отображения месяца и дня (цвет меняется на красный) и обратно. Кнопка SET переводит часы в режим установки и в дальнейшем переключает шкалы (подсветка текущей шкалы будет мигать). Сначала устанавливаются часы (кнопками UP и DOWN), затем минуты, потом месяц, день и год. На последнем стоит остановиться поподробнее. Отображение года выполнено так: левый вольтметр всегда показывает 20 часов, это символизирует первые две цифры года. На втором вольтметре можно выбрать год от 1 до 31 (на шкале дней). При этом подсветка мигает на обоих индикаторах. Возможно, это не очень наглядно, но, с другой стороны, год отображается только в режиме установки. Если при включении удерживать кнопку DATE/TIME, то часы перейдут в режим калибровки, о чём свидетельствует мигающий синий светодиод. В этом режиме кнопкой DATE/TIME выбирается калибруемая шкала (по циклу: часы - минуты - месяцы - дни), кнопкой SET подтверждается выбор и запускается непосредственно калибровка. Её суть сводится к настройке соответствия каждому значению шкалы своего коэффициента заполнения ШИМ. На примере шкалы часов: сначала кнопками UP и DOWN стрелка выставляется на 0 часов, потом нажимаем SET и то же самое делаем для положения 1 час и т.д. Для шкалы минут это не очень наглядно, т.к. она плотная, поэтому можно подключить часы к компу через COM-порт и в любой терминальной программе смотреть, какое значение сейчас настраивается. Я для этого использовал Bluetooth модуль [4], чтобы не возиться с преобразователями уровней и лишними проводами. Выход из режима калибровки осуществляется передёргиванием питания или кнопкой Reset. Все значения коэффициентов ШИМ сохранятся в EEPROM, так что калибровка требуется только один раз. Что внутри? Для начала схема и детали:
Часы собирались из того, что было под руками. Схема очень простая. Основа часов – PIC16F887 [5], работающий на частоте 20мгц. На самом деле, кварц можно ставить какой угодно (или даже затактировать МК от внутреннего генератора), только в программе надо будет изменить параметры настройки таймера TMR0. 887-ой PIC был выбран из имевшихся у меня контроллеров. Поскольку программа для него написана на MikroC, то код легко переносится на любой другой PIC, лишь бы у него были аппаратный I2C, два модуля CCP и EEPROM. В качестве микросхемы часов используется широко известная RTC DS1307 [6] на модульной плате:
Включена целиком и полностью по типовой схеме. При желании меняется на любую другую часовую микросхему с интерфейсом I2C. При этом надо будет переразвести только маленькую платку для неё (специально для этого она и делалась отдельным модулем) и переписать функции в файле ds1307.h. Светодиоды D1 – D3 – это один RGB-светодиод, D4 – D11 – светодиоды подсветки вольтметров. Токоограничительные резисторы подбираются исходя из конкретных параметров светодиодов, подтягивающие резисторы для кнопок и шины I2C могут быть любого номинала от 4.7 до 10 kΩ. Подстроечными резисторами RV1 и RV2 выставляется полное отклонение стрелки обоих вольтметров при максимальных значениях коэффициентов заполнения ШИМ. Транзисторы Q1 - Q4 - любые NPN (я использовал КТ315, под них и плату разводил). Кнопку Reset можно вообще не ставить, она в основном для наладки предназначалась. Я сначала думал её тоже вывести куда-нибудь на заднюю крышку, но потом выяснилось, что проще питание передёрнуть. Источником питания служит модульный БП NFM-10-12. Можно заменить на что угодно, дающее больше 8 вольт с сохранением на схеме стабилизатора L7805 со всей обвязкой, либо на пятивольтовый БП, тогда стабилизатор не нужен. Диод D12 стоит для защиты от неправильной полярности (необязателен, можно вместо него впаять перемычку). Теперь первая главная изюминка – изготовление подсветки. Ох, и намучился я с ней! Вольтметры у меня серии М4202, относительно легко разбираются, но внутри под шкалой очень мало места для размещения светодиодов. Пришлось поиграться с дремелем и оргстеклом, в результате чего на свет появились вот такие держатели для светодиодов, которые удалось закрепить на тех же винтах, что держат шкалу:
Шкалы рисовались в программе FrontDesigner (легко отыскивается в интернете) и слегка доводились до кондиции в графическом редакторе. Потом печатались на бумаге и наклеивались поверх родных шкал с вольтами. Что касается платы, то выглядит она так странно потому, что разводилась под конкретный корпус (вариант на фото несколько отличается от конечного, поскольку отчасти он был «испытательным полигоном»): Корпус Вторая изюминка – корпус. Не секрет, что корпуса - это вообще больная тема для радиолюбителей. Обычно все силы уходят на разработку устройства и написание прошивки, а на корпус уже ничего не остаётся. С ним я тоже возился довольно долго. Первый вариант был из фанеры, но выглядел он, мягко говоря, не очень. Поэтому пришлось делать другой, и тут уже удачно на работе подвернулся доступ к деревообрабатывающим станкам и нормальному краскопульту. В результате получилась вот такая симпатичная коробочка из дуба: На лицевой стороне вырезаны отверстия для вольтметров и их креплений, а также просверлены дырки для кнопок и RGB-светодиода. На задней крышке – отверстия для выключателя и для разъема питания 220 вольт. Вид изнутри (куча проводов :) ) Задняя крышка крепится к корпусу при помощи пяти болтов и самопальных «гаек» из оргстекла с нарезанной резьбой. В конечном варианте зеленой платки с подстроечниками нет, они теперь расположены прямо на основной плате, то же касается и токоограничительных резисторов для подсветки (вторая зеленая платка на левом вольтметре). Кодинг Прошивка написана в компиляторе MikroC Pro 4.60. В исходниках есть какие-то комментарии, так что, думаю, разобраться в них несложно. Конечно, там есть чего пооптимизировать :), но и так, в общем, неплохо работает, и свободные ресурсы для реализации каких-нибудь фич типа будильников ещё есть. В проекте используются библиотеки компилятора для работы с шиной I2C, модулем CCP и UART, с памятью EEPROM, а также функция опроса состояния кнопки Button. Функции для работы с DS1307 располагаются в отдельном файле ds1307.h. Оба вольтметра управляются аппаратными ШИМ-модулями. Коэффициенты заполнения, соответствующие значениям на каждой шкале, хранятся в EEPROM. Таймер TMR0 настраивался при помощи очень удобной программки PIC Timer Calculator [7]. Все функции работы с UART из исходников, в принципе, можно смело выкинуть, они нужны для отладочно-наглядных целей. Все исходники вместе с проектом для компилятора, прошивкой и файлом симуляции для Proteus лежат в одном архиве. Да, там куча файлов, но так и надо, это так проект у MikroC выглядит... Ссылки
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
||||||||||||||||
|
||||