РадиоКот :: Серия простых часов Orbit: вкусно, как «Orbit-часы»
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

Серия простых часов Orbit: вкусно, как «Orbit-часы»

Автор: Aheir
Опубликовано 04.05.2010

Да, согласен, название странное, но легко объяснимое: сегодня у нас речь пойдет о линейке настольных часов-будильников, собранных в корпусах от сканеров штрих-кодов Metrologic MS7120 Orbit – поэтому я статью так и назвал. Линейка, надо сказать, не супер большая, но три модели в себя включает. Назовем их… ну, скажем, Orbit LED, Orbit Segment и Orbit Nixie. Да, точно, так и назовем.
Внешне сканер выглядит вот так:

Сканер

Немного о конструкции. Сам сканер достаточно несложно разбирается на составные части: основание со съемным дном, на котором предусмотрено место для крепления печатной платы, и подвижный в одной плоскости сферический оптический блок, лицевая сторона которого представляет собой красный светофильтр, диаметром около 75мм. На «макушке» сферы имеется прозрачное съемное окно для установки светодиодов (думаю, все в супермаркетах обращали внимание, что при корректно считанном коде сканер обычно пищит и моргает лампочкой – вот это она и есть).

Сканер в разборе

Поэтому часы также было решено конструктивно разделить на составляющие: основная плата в нижней части и плата дисплея в оптическом блоке. Кроме того, в уже упоминавшееся окно для установки светодиодов, на их место, устанавливается маленькая платка с кнопкой управления и RGB-светодиодом для индикации режимов работы. С нее, пожалуй, и начнем, тем более что схема – проще некуда: кнопка, замыкающаяся на землю, и RGB-светодиод, катоды кристаллов объединены и соединены с землей, зажигаем его плюсом (ввиду простоты схема в электронном виде не разрабатывалась). Печатная плата ей под стать, из особенностей: светодиод NM5050RGB установлен в вырезе платы, чтобы сэкономить высоту; применена сверхнизкая SMD-кнопка от какого-то плеера – по тем же причинам:

Плата светодиода

Разъем для экономии места не устанавливался, провода просто распаяны в плату. В съемном прозрачном окне корпуса сделано отверстие для толкателя кнопки, в качестве которого применен шток от обычной тактовой кнопки, подходящей длины:

Кнопка

Основные платы для всех моделей часов идентичны и выполнены по схеме, представленной на рисунке:

В качестве управляющего микроконтроллера применена Atmega8 в TQFP исполнении, так же на плате имеются микросхема часов реального времени DS1307, зуммер, отладочный светодиод, стабилизатор питания, блок высоковольтного питания, разъемы – и все. Наружу смотрит разъем 8P8C (коммуникационный, как на сетевых карточках, под RJ-45). На него выведено питание схемы, а также линии программирования и Rx/Tx микроконтроллера. Разъем программирования продублирован на плате гребенкой PLS-6, на такие же гребенки выведено подключение платы светодиода с кнопкой и платы дисплея. Кроме того, присутствует разъем подачи высокого напряжения – PLS-4. Естественно, для бесперебойной работы и сохранения времени микросхеме RTC требуется батарейка, применена CR2032 в стандартном держателе. Замечу, что на рисунке представлена фактическая схема, плата же, установленная в часах, разводилась по несколько более расширенной схеме, позволяющей использовать различные микросхемы RTC, по-разному осуществлять получение высокого напряжения и контроль над высоковольтным преобразователем со стороны МК.

Основная плата

«Расширенную» схему и соответствующую ей печатную плату (именно на ней собраны все часы) можно скачать в конце статьи, файлы имеют суффикс «v1» в названии, фактическая схема - «v2».
Видимо, пора рассказывать про то, чем же модели часов друг от друга отличаются…

Orbit LED

В качестве элемента отображения в этих часах применен дисплей, состоящий из 132 SMD-светодиодов красного свечения типоразмера 0805. Они сгруппированы в 3 концентрических кольца (по 60 штук для показа секунд и минут и 12 штук для показа часов). Светодиоды организованы в матрицу 18х8, поэтому для управления оказалось достаточно всего четырех регистров 74HC4094 в стандартном каскадном включении. Схема представлена на рисунке:

Плата выполнена двухсторонней. На одной стороне разместились светодиоды с токоограничительными резисторами, на другой – регистры с блокировочными конденсаторами и разъем. Форма платы позволяет устанавливать ее в сферическую полость оптического блока корпуса сканера (я просто приклеил ее на термоклей к одной из половинок: на фото не именно эта плата, но принцип понятен):

Крепление платы

В качестве эксперимента и из желания сэкономить себе времени, я эту плату развел автотрассировщиком: выглядит она, конечно, страшновато, но, как оказалось, вполне работоспособна. Замечу, что в таком включении наблюдается некоторая перегрузка выводов регистров по току. Применяемые лично мной регистры я предварительно протестировал в таком режиме, так что практически спокоен за них, но по-хорошему здесь стоило бы поставить дополнительные транзисторные ключи в линии-строки матрицы, по которым осуществляется сканирование.
Очевидно, что для этой модели часов не требуется высокое напряжение, генерируемое основной платой, поэтому вся высоковольтная часть (на схеме обведена жирной линией) просто не монтируется. Поскольку я для питания часов использовал стабилизированный сетевой источник 5В/180мА, то КРЕНка (LM7805) тоже не требуется (просто закорачиваем ее 1-ый и 3-ий выводы на плате) и защитный диод D2 нужно заменить на 5-ти вольтовый.
Экран часов умеет работать в трех режимах: показ времени точками (положение точки соответствует положению стрелки на обычном циферблате), инкрементный режим (зажигаются все светодиоды вплоть до текущего значения времени) и декрементный (инверсный к инкременту). Представление о них дает следующая фотография:

Режимы работы

Orbit Segment

Здесь основной дисплей – семисегментный светодиодный на 4 знакоместа.

Orbit Segment

Помимо индикаторов используется также 60 SMD светодиодов для отображения секунд. Массив из светодиодов и индикаторов организован по принципу матрицы и управляется теми же сдвиговыми регистрами, однако здесь их количество уменьшилось:

Как и в предыдущем случае, монтаж высоковольтной части и стабилизатора питания не требуется. Плата экрана так же разведена автороутером, в часах установлена плата предыдущей версии «v1» (отличается наличием резисторов в линиях столбцов массива SMD светодиодов – они не требуются и закорочены на плате (поставлены резисторы 2,2Ома)), в конце статьи для скачивания доступны версии «v2» файлов проекта.
Внешний вид – на фото:

Orbit Segment

Orbit Nixie

Здесь в качестве индикаторов применены газоразрядные ИН-2 в количестве 4 штук.
Схема платы дисплея:

Для питания индикаторов служит высоковольтный преобразователь на основной плате (наконец-то он нам пригодился!), данные загружаются в два регистра 74HC595 и преобразуются высоковольтными дешифраторами К155ИД1. Схема несколько запутанная, что связано с тем, что приоритетным было удобство разводки, схема корректировалась по разработанной плате.

Orbit Nixie

За неимением панелек индикаторы впаяны напрямую в плату. Из-за ограничения габаритов применена нестандартная расстановка индикаторов, смотрится довольно интересно. Десятичная точка отсутствует, при желании несложно добавить неоновую лампочку или светодиод.
Пару слов про высоковольтный преобразователь. При желании в качестве такового можно использовать микросхему MAX1771/771 в SO-8 (на плате предусмотрено место под нее), однако в текущем варианте реализовано получение высокого напряжения встроенными средствами МК: ШИМ для генерации и АЦП для стабилизации. Глубины регулирования хватает для получения стабильных 200В в диапазоне питающих напряжений от 10 до 18В. Для стабилизации можно также использовать не АЦП, а компаратор МК, соответствующие цепи присутствуют на схеме и разведены на плате «v1» - однако я этот путь не исследовал.
В процессе:

Orbit Nixie

Внешний вид:

Orbit Nixie

Все управление и настройка всех часов осуществляются с помощью одной кнопки на «макушке» сферического блока, там же расположен светодиод для индикации состояния устройства. Доступны следующие воздействия:
1.короткое нажатие на кнопку, подтверждаемое звуковым сигналом;
2.удержание кнопки на ~1с до одиночного звукового сигнала;
3.дальнейшее удержание кнопки на ~2с до двойного звукового сигнала;
4.дальнейшее удержание кнопки на ~3с до тройного звукового сигнала.
Сведения по режимам работы часов представлены в таблице:

Модель

Нажатие

Короткое

Долгое 1с

Долгое 2с

Долгое 3с

LED

Циклическая смена типа отображения: инкрементное -> декрементное -> точечное

Вкл/выкл будильника; если будильник включен — индикация красным светодиодом ~1c

Вход в режим настройки будильника (индикация зеленым светодиодом); удержание кнопки — циклическое увеличение значения часов/минут, отпускание кнопки — запись результата с подтверждением звуковым сигналом; при значении часа более 12 — смена индикации на красный.

Вход в режим настройки часов (индикация синим светодиодом); удержание кнопки — циклическое увеличение значения часов/минут, отпускание кнопки — запись результата с подтверждением звуковым сигналом; при значении часа более 12 — смена индикации на красный.

Segment

Показ даты

Вкл/выкл будильника; если будильник включен — индикация красным светодиодом ~1c

Вход в режим настройки будильника (индикация зеленым светодиодом); удержание кнопки — циклическое увеличение значения часов/минут, отпускание кнопки — запись результата с подтверждением звуковым сигналом

Вход в режим настройки часов и даты (индикация синим светодиодом); удержание кнопки — циклическое увеличение значения часов/минут/года/месяца/числа, отпускание кнопки — запись результата с подтверждением звуковым сигналом.

Nixie

Показ даты

Вкл/выкл будильника; если будильник включен — индикация красным светодиодом ~1c

Вход в режим настройки будильника (индикация зеленым светодиодом); удержание кнопки — циклическое увеличение значения часов/минут, отпускание кнопки — запись результата с подтверждением звуковым сигналом

Вход в режим настройки часов и даты (индикация синим светодиодом); удержание кнопки — циклическое увеличение значения часов/минут/года/месяца/числа, отпускание кнопки — запись результата с подтверждением звуковым сигналом.

Для входа в режимы по долгому нажатию необходимо нажать и удерживать кнопку до соответствующего (одиночного -> двойного -> тройного) звукового сигнала, после чего отпустить ее. Поясню настройку времени (часов или будильника): после входа в соответствующий режим, нажимаем и удерживаем кнопку - происходит увеличение параметра, отпускаем кнопку – параметр запоминается и звучит сигнал, нажав и удерживая кнопку во второй раз мы начнем изменять следующий параметр и т.д. Если не нажимать кнопку в течение примерно 10с – часы вернутся в основной режим, какие либо изменения настроек при этом не сохраняются!
При срабатывании будильника звучит прерывистый звуковой сигнал и происходят чередующиеся зеленые/красные/синие/ вспышки индикатора. Для прекращения сигнала нужно нажать на кнопку.

Немного по прошивкам и работе МК.
Все писалось в CVAVR"е. МК тактируется от встроенного генератора на 8МГц. Индикация (вывод данных в регистры) осуществляется в прерывании по срабатыванию таймера, для вывода данных используется аппаратный SPI МК, в основном цикле происходит обработка нажатий на кнопку (при нажатии запускается таймер, о продолжительности нажатия судим по его значению после отпускания кнопки) и процедур настройки времени и срабатывания будильника. Фьюзы следующие:

Фьюзы

Исторически прошивки появлялись в том же порядке, в котором дано описание устройств в этой статье. Прошивка для Orbit LED наиболее сложная (вывод на матрицу светодиодов, распределенное чтение данных из DS1307 по I2C), из нее достаточно просто получается прошивка для Orbit Segment, а уж для Nixie – вообще запросто (но добавлены процедуры, отвечающие за генерацию высокого напряжения (используется ШИМ контроллера) и его стабилизацию на уровне 200В (АЦП)). Исходники доступны для скачивания, при обнаружении глюков с багами будем разбираться совместно)
Все семейство в сборе:

Все вместе

Update от 27.04.12

Доработки для Orbit LED
В связи с разработкой системы синхронизации времени, потребовалось внести некоторые изменения в прошивку Orbit LED, а именно – возможность настройки времени через UART микроконтроллера. Как отмечалось выше, он предусмотрительно выведен на внешний разъем. Система команд такая (передаем строку символов):
Thhmmssxxxx – установка времени: hhmmss – понятное дело: часы, минуты и секунды, xxxx – контрольная сумма
Ahhmmbxxxx – настройка будильника: hhmm – время срабатывания, b (0 или 1) – выключить или включить будильник, xxxx – контрольная сумма.
Контрольная сумма считается ПО ПОЛЮ ДАННЫХ (без заголовка Т или А) по следующему алгоритму:


/*
Name : CRC-16 CCITT
Poly : 0x1021 x^16 + x^12 + x^5 + 1
Init : 0xFFFF
Revert: false
XorOut: 0x0000
Check : 0x29B1 ("123456789")
MaxLen: 4095 байт (32767 бит) - обнаружение
одинарных, двойных, тройных и всех нечетных ошибок
*/
unsigned int Crc16_element(unsigned char data, unsigned int crc)
{
unsigned char i;

crc ^= (unsigned int)(data)*256;
for (i = 0; i < 8; i++) crc = crc & 0x8000 ? (crc*2) ^ 0x1021 : crc*2;
return crc;
}

unsigned int Crc16 (unsigned char *buf, unsigned int len)
{
unsigned int crc = 0xFFFF;
unsigned char i = 0;

while (i++ < len) crc = Crc16_element (*buf++, crc);
return crc;
}

Исходники и прошивка доступны для скачивания

Файлы:
основная плата и плата светодиода
плата Orbit LED
плата Orbit Segment
плата Orbit Nixie
прошивка Orbit LED
прошивка Orbit Segment
прошивка Orbit Nixie
прошивка Orbit LED (update от 27.04.12)

Вопросы, как обычно, складываем тут.




Как вам эта статья?

Заработало ли это устройство у вас?

24 2 2
1 1 0