Mногомодовые часы


Мы все привыкли к классической конструкции электронных часов с цифровым отображением времени. В этой статье предлагается простая для изготовления конструкция необычных часов, выполненных на светодиодной матрице. Часы не отличаются хорошей точностью, но зато имеют несколько оригинальных режимов отображения. Конструкция больше претендует на игрушку и может украсить ваше рабочее место.

Описание

Это проект многорежимных часов, основанный на ATTiny2313. В качестве дисплея используется светодиодная матрица 8x8. С ограниченным разрешением эти 12-часовые часы показывают время в 6 различных режимах.

Режим ччмм, обычные часы плюс минуты разделённые двоеточием в режиме бегущей строки.

mclock04.jpg

Режим секунд, отображаются только секунды.

В режиме TIX (показан ниже) светодиодная матрица разделена на квадранты, верхние квадранты показывают час в значениях bcd (двоично-десятичные). Они представлены количеством точек для обозначения цифр. Нижние квадранты показывают минуты в bcd. Т.е. для 9:47 он показывает 9 точек в верхней половине и 4 точки + 7 точек в нижней половине. Нулевые значения не отображаются, т.е. цифра 10 будет выводится как одна точка в левой части экрана.

mclock05.jpg

В режиме игры в кости (показано ниже) светодиодная матрица разделена на два набора «кубиков». Верхняя пара показывает часы от 1 до 12, нижняя пара кубиков показывает минуты с шагом в 5 минут. Т.е. для 9:45 он показывает значение кубика: верхнее 9 + нижнее 9 (9 часов, 9 x 5 минут).

mclock06.jpg

В двоичном (bcd) режиме (показано ниже) цифры часа, минуты и секунды отображаются в виде двоичных точек в разных строках светодиодной матрицы. Строки 0 и 1 (сверху) представляют собой цифры часа, строки 2 не заполнены, строки 3 и 4 представляют цифры минут, строка 5 пуста, строки 6 и 7 представляют вторые цифры.

mclock07.jpg

Схема использует мультиплексирование строк и столбцов для управления светодиодами, по одной строке за раз, это дает рабочий цикл 12,5%, когда «наборы» светодиодов (8 из них в каждой из 8 строк) включаются на короткое время. Токоограничивающие резисторы устранены для экономии макетной платы, и, поскольку мы не используем постоянно отдельные светодиоды, они не будут повреждены.

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

Это хобби-проект, и точность часов зависит от калибровки вашего внутреннего генератора. Я не использовал кристалл в этом проекте, так как это нарушит макет «матрица поверх mcu». Кварцевый резонатор можно использовать для повышения точности на альтернативном макете. С программной компенсацией я могу добиться расхождения в 2 минуты в день. Мне нужно будет корректировать время каждые 3-4 дня, чтобы часы можно было использовать. Это скорее игрушка для кабинета, чем швейцарские часы.

Функции

  • Минимальный набор компонентов - 3 шт.
  • Батарея питания от 3 до 5В.
  • Использование сторожевого таймера для отсчета времени, спящий режим при отключении питания потребляет около 1 мкА.
  • Калибровка позволяет настроить увеличение секунд для каждого часа
  • Используется 12-часовой, а не 24-часовой режим, и у него нет индикатора AM/PM.
  • Не очень точно (можно добавить чип RTC).

Установка Fuse bit

L-fuse - 0x64
H-fuse - 0xDF

Установка тактовой частоты на 1 МГц для экономии энергии

Строка программирования для AVRDUDE:

avrdude -c usbtiny -p t2313 -P / dev / ttyUSB0 -V -U lfuse: w: 0x64: m -U hfuse: w: 0xdf: m -U efuse: w: 0xff: m

Перечень деталей

  • Attiny2313v (v - версия с низким энергопотреблением, которая работает с 3 В)
  • Светодиодный матричный дисплей 8x8 (красный лучше всего работает при питании 3В)
  • Тактильная кнопка

    mclock01.jpg

    Пояснения по применению

    • Короткое нажатие клавиши в режиме отображения циклически переключает: ЧЧММ - секунды - tix - кости - двоичный - спящий режимы.
    • Долгое нажатие входит в режим настройки, последующее долгое нажатие прокручивает меню.
    • Пункты меню проходят через SE, AJ, DM.
    • В режиме настройки времени «SE» короткое нажатие вызывает настройку.
    • После установки короткое нажатие увеличивает цифровые значения (часы, минуты), а долгое нажатие подтверждает.
    • В режиме калибровки «AJ» можно ввести минуты и секунды. Это время, которое нужно «выиграть» за каждый час.
    • В спящем режиме MCU переходит в режим пониженного энергопотребления, потребляя менее 1 мкА энергии, сторожевой таймер установлен так, что система выходит из спящего режима каждые 1/8 секунды. Это, однако, приводит к тому, что время всегда будет медленным, поскольку для повторного включения MCU требуется несколько циклов. Поэтому мы должны иметь калибровочное значение, чтобы часы шли точно.
    • Последние установочные значения хранятся в EEPROM и будут использоваться для следующего включения.
    • В настройке диммера «DM» короткое нажатие переключает доступные уровни яркости, длительное нажатие подтверждает настройку.
    • Мультиплексирование светодиодных сегментов включает временные задержки для компенсации разницы яркости для отдельных строк.

    Макет

    mclock_bb.png

    Светодиодная матрица 8x8 имеет размер точки 1,9 мм и имеет общий катод. Если у вас общий тип анода, вы можете изменить несколько строк в коде. См. следующую схему и убедитесь, что у вас правильные распиновки. Похоже, они довольно распространены, и если вы покупаете их на Ebay, большинство поставщиков имеют одинаковую распиновку, даже если номер модели отличается.

    Конструктив очень технологичен. Распиновка микроконтроллера запрограммирована так, что она совпадает с контактами на светодиодной матрице. Поэтому монтажная плата имеет очень простую разводку дорожек.

    mclock08.jpg

    Схема

    mclock_schema.jpg

    Сборка

    • следуйте рисунку макетной платы и поместите две перемычки на мини-плату
    • вставьте ATTiny2313v
    • вставьте кнопку управления

      mclock02.jpg

    • наконец вставляем светодиодную матрицу 8x8 поверх ATTiny2313v

    mclock03.jpg

    Исходный код

    Загрузить mclock.c
    Загрузить файл makefile

    Загрузить mclock.hex
    Загрузить mclock.ee.hex

    Исходный код занимает около 500 строк и не требует пояснений. Проект был построен в Lucid box linux Ubuntu с набором инструментов avr-gcc.

    Хотя в проекте для выбора меню используется только несколько букв, я включил в ROM 38 символов (цифры 0-9, все буквы A-Z, '.' и символ пробела).

    Режим TIX и режим "игры в кости" не является по настоящему случайным, поскольку мы ограничены размером кода.

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

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

    Устранение проблем

    • Проверить соединения
    • Проверьте настройку Fuse на Attiny2313
    • Если у вас проблемы с миганием отрегулируйте часы, добавив параметр -B xx в avrdude.

    Фильм о работе устройства

    mclock09.jpg

    Источник проекта: https://sites.google.com
    Следует отметить, что в оригинальной статье имеются ошибки в схеме и рисунках (прим. RA3TOX). В данной статье эти ошибки устранены.


    Материал перевёл и подготовил Николай Большаков - RA3TOX
    Октябрь 2020.