29.09.2019

Бинарные часы своими руками (Mega32, DS1307). Бинарные часы


Возможно, кто-то еще помнит, как выглядели панели управления первых электронно-вычислительных машин (ЭВМ). Сегодня их можно увидеть только на архивных фотографиях. Длинные ряды лампочек, которые мелькали на первый взгляд хаотично – завораживали энтузиастов электроники тех лет.

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

Принципиальная схема простых бинарных часов показана на рисунке 1. Схема построена на базе микроконтроллера ATmega48. В схеме часов нет внешнего модуля реального времени (RTC), что в свою очередь несколько снижает стоимость устройства.

При возможном сбое питания от внешнего источника, отсчет времени поддерживается встроенной батарей типа CR2032, при этом светодиоды отключаются. Для обнаружения питающего напряжения от внешнего блока питания используется схема с транзистором VT1 (BC847).

Если на клеммах разъема питания есть напряжение, то оно проходит через диод D1 в результате чего транзистор входит в состояние насыщения, а на вход PC0 микроконтроллера подается логический ноль, который запускает работу светодиодов.

Индикация текущего времени (часы, минуты и секунды) реализована с помощью трех линеек светодиодов. Управление светодиодами происходит методом мультиплексирования, что снижает потребление электроэнергии и уменьшает количество используемых выводов микроконтроллера.

Просмотр осуществляется только в формате 24 часа. Для отображения количества минут и секунд необходимо 6 светодиодов, а для часов 5 светодиодов.

Микроконтроллер ATmega48V-10AU способен работать при пониженном питании вплоть до 1,8В, что является большим преимуществом. Кроме того, ATmega48V-10AU потребляет меньший ток. Частота тактового сигнала стабилизируется кварцевым резонатором на 4 МГц, который одновременно является эталоном для отсчета времени.

Установка текущего времени (часы и минуты) осуществляется с помощью кнопок SW2 и SW1 соответственно. Счетчик секунд обнуляется при нажатии на любую из кнопок.

Стоит отметить, что эти кнопки неактивны при работе от резервной батареи, чтобы предотвратить возможность непреднамеренного изменения времени. Часы собраны на односторонней печатной плате размером 103мм×67мм.

При программировании микроконтроллера, необходимо установить работу микроконтроллера от внешнего кварцевого резонатора 4 МГц и отключить деление тактовой частоты на 8 (этот бит называется CKDIV8).

После правильной сборки часы начинают работать сразу и должны показать 00:00:00.

Питание схемы осуществляется от источника питания с напряжением +5 В. Резервное питание – батарея типа CR2032 не является обязательной, она только поддерживает отсчет времени после пропадания питания от сети.

Потребление тока от батареи составляет около 1,5 мА. При емкости аккумулятора порядка 200 мАч, ее должно хватить на 5 и более дней работы микроконтроллера, что является достаточным в типичных ситуациях.

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

Идея использования двоичной системы для представления времени появилась с возникновением вычислительных машин на электронных . Отдельные экземпляры самодельных бинарных часов часто создавались любителями электроники. Однако бинарные часы редко использовались ввиду отсутствия заводского производства и большого веса.

В 2008 году британская компания Anelace впервые выпустила бинарные наручные часы с LED экраном. Это событие нашло бурный отклик среди молодежи. Сегодня бинарные часы выпускают не только производители компьютерной техники, но и ювелирные фабрики.

Как выбрать

Существуют модели бинарных часов с разным количеством «циферблатов». На некоторых можно заменять диодную подсветку. Бинарные часы можно разделить на две большие категории: с подсветкой группы и ключевым горящим индикатором. В первом вам предстоит суммировать степени двоек, во втором - переводить двоичное число в десятичное. Первый способ предпочтительнее для людей, желающих привлечь внимание, второй - программистам и людям, желающим как можно скорее узнавать время. В целях простоты использования вы можете купить бинарные часы с подписанными диодами (1, 2, 4, 8 и т.д.).

Где купить

В интернет-магазинах имеется множество выгодных приложений по покупке бинарных часов. На специализированных сервисах торговли можно подобрать эксклюзивные модели из разных материалов. Торговый сервис eBay - это самая оживленная площадка электронной коммерции в мире. На сайте eBay, в разделе «Аксессуары» представлены тысячи вариантов бинарных часов. Для их оплаты потребуется электронная валюта PayPal.

Как пользоваться

Для использования бинарных часов в быту необходимо быстро переводить числа и складывать их друг с другом. Прочитайте инструкцию к своим часам, уточните, какой ряд диодов отвечает за часы, какой - за минуту. Если инструкции нет, попробуйте определить это экспериментально - показания минутной шкалы будут изменяться скорее, чем часовой. Общее время складывается из показаний часовой и минутной шкалы. Допустим, на часовой шкале горит первый и пятый диод, а на минутной - третий и четвертый. Это , что на часовой шкале отображается 2 в нулевой степени и 2 в четвертой, то есть 1 + 16 = 17 часов. Сумма минут: 2 в квадрате плюс 2 в кубе: 12 минут. Таким образом, бинарные часы показывают 17:12.

Достоинства бинарных часов

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

Они привлекают внимание, многие люди будут восторгаться вашими «арифметическими способностями». Кроме того, бинарные часы представляют дизайн, несут технологичный «стиль будущего». Настенные (настольные) бинарные часы способны стать частью вашего интерьера.

Многие задаются вопросом по поводу того, . Здесь дам некоторые инструкции и расскажу, как пользоваться некоторыми бинарными часами и как определять на них время. Обо всех моделях часов рассказывать не буду, а только о тех, которые сам держал когда-либо в руках. Бинарные часы отличаются от обычных тем, что не имеют как такового циферблата. Время закодировано. Но на самом деле определить время на них не составляет особого труда, а особенно владельцам, которые пользуются ими постоянно. Представленные ниже часы в интернете могут называться по-разному. Так что ориентируетесь по фотографиям.


Производство: Китай.
Определение времени : самый левый столбец, состоящий из 12 светодиодов, отображает часы; остальные 5 столбцов, состоящие из 60 светодиодов, отображают минуты. Цифры по бокам позволяют лучше ориентироваться в определение времени. На часах с фотографии: 4 часа 41 минута.
Аналогично определяется и дата. Левый столбец показывает месяц. Светодиоды в остальных столбцах показывают число. Если включен режим даты, то максимум могут загореться только 31 диод (31 число месяца).
(Virus)
Производство: Китай.
Как пользоваться бинарными часами Вирус : один красный светодиод равен одному часу, один желтый светодиод равен пяти минутам, один зеленый светодиод равен одной минуте. Время определяется посредством подсчета светодиодов. На часах Вирус с фотографии: 10 часов 54 минуты, так как горит 10 красных светодиодов (10 часов), 10 желтых светодиодов и 4 зеленых (10×5+4=54)
(Mickey mouse )
Производство: Китай.
Определение времени на часах : "мордочка", состоящая из 12 светодиодов отображает часы; "правое ухо" отображает десятки минут; каждый светодиод на "левом ухе" равен одной минуте. Цифры позволяют лучше ориентироваться в определение времени. Дата определяется следующим образом: "мордочка" показывает месяц, "правое и левое ухо" число.

(Flash Lights)
Производство: Китай.
Как пользоваться бинарными часами Спидометр : 12 верхних светодиодов отображают часы, средние 5 светодиодов отображают десятки минут, каждый светодиод из нижней части отображает 1 минуту. Цифры позволяют лучше ориентироваться в определение времени. Индикаторы AM и PM указывают на время суток (день, ночь). Дата отображается следующим образом: верхние 12 светодиодов указывают месяц, остальные - число. Настроить часы, думаю, каждый сможет самостоятельно.

Двоичные часы (Singularity)
Производство: Китай.
Определение времени на двоичных часах: вертикальная шкала с цифрами 1, 2, 4, 8 отображает часы. Чтобы узнать сколько часов, необходимо суммировать цифры, светодиоды которых подсвечены. Нижние горизонтальные светодиоды отображают минуты. Для определения количества минут необходимо сложить подсвеченные цифры. Индикаторы AM и PM указывают время суток (день, ночь). Дата определяется также с помощью арифметических подсчетов.


Определение времени на часах Winston аналогично определению времени на часах Singularity. Winston отличается от вышеупонянутых часов только присутствием на циферблате логотипа Winston.

Бинарные часы Matrix
Производство: Китай
Определение времени на бинарных часах : два левых столбца показывают часы, а два правых - минуты. Время читается слева направо.
Часы имеют несколько индикаторов: доллар говорит о том, что отображается год; солнце - отображается день недели, число и месяц.
Наглядно всё показано на схеме ниже.

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

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

Со стороны электроники бинарные часы не являются особо сложными, но автор усложнил задачу и решил не экономить кнопки и светодиоды. Изначально в проекте должно было использоваться 22 светодиода, 6 кнопок, и одна пищалка. Также была идея собирать часы на Arduino Mega из-за большего количество пинов, но спасением оказались сдвиговые регистры 74HC595.

Материалы:
- Arduino Uno
- 2 полноразмерные макетные платы
- Светодиоды красные 7 шт
- Светодиоды зелёные 7 шт
- Светодиоды синие 6 шт
- Светодиоды жёлтые и белые по 2 шт
- Резисторы 220 ом 25 шт
- Пьезопищалка 1 шт
- Тактовые кнопки 6 шт
- Сдвиговые регистры выходные 74HC595 в корпусе DIP-16 3 шт
- Соединительные провода 90 шт
- Модуль часов реального времени на базе RTC-чипа DS1307

Как всё будет работать.
Существует около 10 видов бинарных часов. Одни показывают время в двоично-десятичном (BCD) формате, другие в виде двоичных чисел. Так как автору не особо нравятся BCD-часы, он решил сделать свои чисто двоичными. Некоторым их сложнее читать, но разница в них невелика, потому что переводить числа из двоичных в десятичные несложно. Также обязательным условием создателя часов являлась индикация секунд на часах.

Вдобавок часы имеют 6 кнопок:
Set - отвечает за режим настройки часов/будильника и сохранение параметра в режиме настройки.
Mode - отвечает за переключение между режимами часов, будильника и таймера.
Up - в настройке часов/будильника/таймера, повышает параметр на один. В будильнике и таймере отвечает за активирование и выключение выбранного режима. При срабатывании сигнала - отключит сигнал будильника/таймера.
Down - в настройке часов/будильника/таймера, уменьшит параметр на один. В таймере приостановит его без сброса отсчёта. При срабатывании сигнала будильника - перенесёт сигнал на 5 минут.
24/12 - изменение формата времени.
Dim - отвечает за включение и отключение светодиодов (когда светодиоды отключены остальные кнопки перестают работать).
Схема положения светодиодов:

Подключение компонентов
Все светодиоды автор будет подключать последовательно и с резистором. Резистор припаивается к одному из выводов светодиоды, не имеет значения к какому. Подключение светодиодов будем происходить через сдвиговые регистры, этот чип имеет 16 контактов. Такое количество контактов позволяет использовать большое количество выводов, занимая на Arduino всего 3 пина.


Распиновка сдвигового регистра 74HC595:
Q0-Q7 - это выводы регистра, к которым будут подключать светодиоды.
Vcc - пин питания на него подадут 5В.
GND - земля соединяемая с GND на Ардуино.
OE - пин отвечает за инвертированную активацию выводов, но использоваться он не будет, его просто замыкают на землю.
MR - инвертированная очистка регистра, управлять им не нужно, поэтому подключатся будет к питанию 5В.
ST_CP - пин отвечает за обновление состояния регистра. При записи состояния на него нужно подать LOW, после записи - HIGH, для обновления состояния выводов. Его нужно подключат к пину на Arduino. Соединить этот пин трёх регистрах можно параллельно.
SH_CP - пин, отвечает за сдвиг на 1 бит регистра. Его нужно подключат к пину на Arduino. Соединяются на микросхемах также параллельно.
DS - на этот пин подаются данные, он подключается к пину на Arduino.
Q7" - этот пин используется для каскадного соединения с остальными регистрами 74HC595.

Схема подключения:

Пьезопищалка будет подключена к третьему пину Arduino последовательно с резистором. Перед включением пищалки в схему автор посмотрел какие пины поддерживают ШИМ, так как для неё это обязательно. На Arduino Uno ШИМ поддерживают 3, 5, 6, 9, 10 и 11 пины.

В подключении кнопок используются резисторы, встроенные в Arduino, при этом одна сторона кнопок подключается к земле, а другая к пинам Arduino.

Так, выглядит итоговая конструкция:

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

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

Работа светодиодов.
Так как обращение к светодиодам происходит через сдвиговый регистр, в первую очередь потребовалось реализовать ещё подпрограммы для светодиодов. Для более просто работы с диодами осуществлён ряд дополнительных функций. Реализованы различные эффекты анимации диодов. Когда часы не настроены - диоды, отвечающие за часы и минуты, начнут мигать (как мигают обычные часы когда не настроены). В светодиодах, отвечающих за секунды, также есть своя анимация, диод может бегать вправо-влево в режиме будильника, или же в режиме настройки часов.

Основной цикл.
Программа настроена на работу следующим образом: часы выводят информацию в зависимости от текущего состояния, и меняют своё состояние в зависимости от использования кнопок, и событий. Выглядит это всё как немалое количество вложенных условий. Состояние диодов обновляется каждый раз после проверки состояния таймеров и кнопок с вызовом их обработчика.

Запуск макета
После включения проекта, на первый взгляд, девайс работал правильно и стабильно. Но автор обнаружил недоработку, часы отставали на одну секунду в час, за длительное время это стало бы большой погрешностью.

Изучив эту проблему, было выяснено что оригинальная Arduino Uno использует керамический резонатор, а ему не хватает точности для измерения времени в длительных сроках. Наиболее рациональным решением была покупка часов реального времени, плюс из-за этого модуля время на часах не будет сбиваться при отключении. Автором был приобретен модуль Grove RTC от Seeed Studio. Он представляет из себя готовую плату с чипом часов. Пины модуля SDA и SCL автор подключил к Arduino на пины A4 и A5, GND к земле. Так как питание 5В занято платой часов подключать модуль было некуда. Автор решил запитать модуль от одного из цифровых пинов, который будет находиться постоянно под напряжением. Также автору потребовалось дорабатывать исходный код и добавить библиотеку часов реального времени.

Сборка часов
Завершив долгую работу над кодом, пришло время придать устройству завершённый внешний вид, и перенести его с макетной платы на печатную. В первую очередь потребовалось сделать разводку для платы. Для этого была использована Fritzing, так как автор уже имел представление о внешнем виде часов, и у него была построена схема устройства. Трассировку платы автор также провёл вручную, на это потребовалось немало времени.
Проект для производства печатной платы:

Производство печатной платы было заказано в Китае. Seeed Studio имеет сервис по производству плат Fusion PCB. Через Fritzing был произведён экспорт файла в формат Extended Gerber, с ним работают многие производители плат. Через две недели автор получил долгожданную плату на почте.

Оставалось только припаять уже немного запылённые детали на плату. Готовый результат после пайки выглядел намного лучше макета на Breadboard.

Автор проекта долго трудился и получил то что хотел - уникальные бинарные часы с таймером и будильником. Используя батарейный отсек часы можно поместить куда угодно. Arduino оправдала ожидания и полностью справилась с поставленной задачей.




© 2024
womanizers.ru - Журнал современной женщины