РадиоКот >Лаборатория >Цифровые устройства >

Теги статьи: ЧасыИН-12ГРИ

Часы на газоразрядных индикаторах ИН-12Б

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

Часто бывает, что толчок к разработке какого-либо устройства дает одна единственная попавшая в руки деталь или элемент. Так случилось и на этот раз – не в добрый час досталась мне сборка из 6-ти газоразрядных индикаторов ИН-12Б, умеющих отображать цифры от 0 до 9 и десятичную точку.

Распиновка и внешний вид ИН-12

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

Некое подобие структурной схемы устройства представлено на рисунке:

Структурная схема

На схеме красными стрелками показаны шины передачи данных, а синими – питание узлов.

Часы могут питаться от нескольких независимых источников, развязка которых осуществляется с помощью диодов Шоттки с низким падением D1-D6. В качестве входа для первого источника питания установлен MOLEX разъем, что позволяет использовать компьютерный БП, второй вход оформлен в виде обычного коаксиального DC/DC разъема, а третьим источником является AC/DC преобразователь, схема которого любезно предоставлена моим коллегой (к сожалению, он не зарегистрирован на форуме) и представлена на рисунке:

Схема AC/DC

Схема несложная, но есть нюансы: диод VD1 – быстрый (если использовать микросхему IR2153D он не требуется), супрессоры VD4 и VD15 необходимы для защиты выпрямительных диодов, если они выбраны без большого запаса по напряжению. Трансформатор Tp2 выполнен на трех сложенных вместе ферритовых кольцах типоразмера 20х12х6 2000НН: первичная обмотка содержит 70 витков провода 0.3мм, маломощная вторичная обмотка (для питания IR2153) – 2 секции по 7 витков того же провода (мотается в два провода, потом начало одного провода соединяется с концом другого и получается средняя точка – как обычно), мощная вторичная обмотка – 2 секции по 7 витков косой из трех проводов 0.5мм (мотаем в 6 проводов, потом делим пополам и т.д. – как и с маломощной). Не забывайте о межслойной изоляции!

Радиаторы для транзисторов для мощностей ватт до 15-17 не требуются, хотя на плате место под них предусмотрено. Резистор R1 представляет собой три последовательно включенных резистора по 100кОм каждый.

Входной фильтр: Тр1 и конденсаторы С1 и С2 – взят как есть от АТХ блока питания, дроссель L3 намотан на кольце выходного дросселя от того же БП (просто намотал проводом МГТФ в один слой - сколько влезло, но можно и готовый опять же взять...)

Будем для определенности предполагать, что после диодной развязки напряжения питания составляет 12В.

Для питания цифровой части часов необходимо напряжение 5В, которое получается из 12В с помощью импульсного DC/DC преобразователя, построенного на базе микросхемы TL2575-05 от Texas Instr.:

DC/DC 12 в 5

Для питания газоразрядных индикаторов требуется источник высокого напряжения порядка 200В, необходимый для зажигания и поддержания устойчивого разряда в индикаторе. Повышающий преобразователь 12->200В выполнен на микросхеме MAX1771:

DC/DC 12 в 200

В высоковольтной части схемы следует применять элементы, выдерживающие соответствующие напряжения. Делитель, образованный резисторами R2, R3 и переменным резистором, задает выходное напряжение, которое в некоторых пределах можно подстраивать. В моем случае, выходное напряжение составляет 190В, чего вполне достаточно для работы индикаторов. Мощности преобразователя хватает для одновременной работы всех 6 индикаторов.

Советую быть поосторожнее при отладке: 200В – высокое напряжение, и хоть гальваническая развязка от сети и присутствует, да и мощность преобразователя не велика, по лапам он лупит вполне достойно…

Конструктивно эти DC/DC преобразователи для экономии места и по ряду других соображений оформлены в виде отдельных плат и вертикально впаиваются в плату часов:

DC/DC преобразователи

Слева – 5-ти вольтовый преобразователь, справа – повышающий.

Дешифратор служит для преобразования потока данных, получаемых им от МК, к виду, пригодному для отображения на индикаторе. Схема дешифратора вместе с дисплеем представлена на рисунке:

Схема

Данные ля отображения на дисплее загружаются в 4 последовательно соединенных регистра 74НС595. В последнем регистре этой цепочки хранятся данные, соответствующие состоянию десятичный точек дисплея, его выходы непосредственно управляют высоковольтными ключами Q1-Q6, которые, в свою очередь, зажигают или гасят соответствующую десятичную точку.

Младшие 4 разряда остальных трех регистров содержат двоичный код, соответствующий значению нечетных знакомест дисплея (1, 3, 5), а старшие полубайты – четных (2, 4, 6). Этот код поступает на входы двоично-десятичных дешифраторов с высоковольтным выходом К155ИД1, управляющих непосредственно индикаторами. В цепи анода каждого индикатора установлен токоограничительный резистор. Поскольку ток точки существенно меньше тока любой из цифр индикатора, в цепи коллекторов «точечных» транзисторов установлены дополнительные резисторы. Таким образом, поскольку состояние регистров обновляется только по команде управляющего МК и изменения происходят только на некоторых линиях данных, мы получаем фактически статическую индикацию, хотя обновление показаний дисплея происходит 20 раз в секунду.

Блок микроконтроллера состоит собственно из МК, часов реального времени M41T80M6 от STMicroelectronics, USB модуля на FT232BM для связи с ПК, преобразователя уровней интерфейса RS-232 микросхемы MAX232 для тех же целей и кнопок управления. Схема всего этого счастья, как водится, представлена на рисунке.

Блок МК

Модуль USB на FT232BM представляет собой отдельную плату, вертикально впаиваемую в основную. Модуль собран по типовой схеме за исключением отсутствующей микросхемы EEPROM:

Модуль FT232BM

Одновременно может работать только один из интерфейсов COM или USB, причем предпочтение отдается USB, т.к. переключение реализовано при помощи реле, запитанного от разъема USB: при втыкании кабеля реле перекинется и на контроллер пойдут данные от модуля FT232.

Вообще, о преобразователях интерфейсов USB <-> RS232 можно почитать в этой статье, а по секрету скажу, что в конечной версии часов стоит такой преобразователь на TUSB3410, но все сказанное относительно приоритетов интерфейсов справедливо и для него..

Конструктивно часы оформлены в корпусе от компьютерного CD-ROM и состоят, как уже было отмечено, из нескольких плат. Всю площадь корпуса занимает основная плата, которая внутри корпуса крепится на штатные посадочные места, оставшиеся от «родных» плат CD-ROMа. На ней смонтирован сетевой БП, микроконтроллер с часами, все необходимые разъемы и часть микросхем дешифратора. Остальные микросхемы дешифратора смонтированы на отдельной плате, которая установлена над основной платой, вторым этажом. Модули питания вертикально впаяны в основную плату.

На заднем торце между разъемами установлены 4 кнопки, служащие для настройки часов и выбора режима работы.

Вот так вот все это выгядело на этапе отладки:

Отладка

Здесь подключена только дополнительная плата дешифратора, основной платы пока нет.

Полностью собранная плата часов:

Плата Top

Плата Top

Плата Bottom

Так, с конструктивом маленько разобрались, теперь пару слов по поводу прошивки.

Контроллер – ATMega8515. Такой выбор сделан только потому, что их есть у меня. В принципе, код легко портируется на ATMega16 (нужно только убрать определение порта Е и еще пара нюансов).

Контроллер считывает данные из микросхемы RTC посредством шины I2C, занимается загрузкой данных в регистры, следит за состоянием кнопок и слушает UART – вцелом, все как всегда.

Часы могут отображать собственно время (в форматах ЧЧ:ММ:СС или ЧЧ:ММ), дату в формате ДД:ММ:ГГ, вести отсчет секунд :СС, имеют будильник, а также могут использоваться для отображения числовой информации, поступающей через СОМ или USB.

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

Функции распределены по кнопкам следующим образом:
1. Нажатие кнопки 1 на 1с – установка будильника. На экране отображается текущее настроенное время будильника, разряд часов мигает. Кнопки 3 и 4 служат для уменьшения/увеличения показаний, новое значение подтверждается нажатием кнопки 1 и звуковым сигналом, после чего начинает мигать разряд минут, настройка значения которых производится аналогично. Если не производить никаких действий после входа в процедуру установки, через некоторое время часы вернутся в основной режим.
2. Нажатие кнопки 1 на 2с – установка времени и даты в следующем порядке: часы, минуты, год, месяц, число. Настройка производится аналогично.
3. Нажатие кнопки 1 на 3с – сервисные настройки: режим отображения времени (1 или 2 - ЧЧ:ММ:СС или ЧЧ:ММ), время показа даты в секундах, время показа данных от ПК в секундах (если в течение этого времени от ПК не придут новые данные, часы вернутся в основной режим)
4. Короткое нажатие кнопки 2 – показ даты в течение времени, настроенного в сервисном меню, после чего часы возвращаются в нормальный режим
5. Короткое нажатие кнопки 3 – вкл/откл режим отсчета секунд: на экране отображаются только секунды.
6. Нажатие кнопки 3 на 1с – вкл/откл индикации.
7. Нажатие кнопки 4 на 1с – вкл/откл будильника (при включенном будильнике в старшем разряде отображается десятичная точка).

Все настройки сохраняются либо в энергонезависимой памяти микросхемы часов, либо в энергонезависимой памяти МК, так что при выключении питания сохраняются.

При срабатывании будильника раздается звуковой сигнал до тех пор, пока не будет нажата любая кнопка.

Управление и настройка часов может осуществляться через COM (USB) посредством специальных последовательностей передаваемых байт - посылок. Любая посылка состоит из 7 байт, причем обязательно начинается с 0x80 и заканчивается 0x8F. Перечень команд: 

1. set_time 80 81 xx xx 00 00 8F установить время
2. set_date 80 82 xx xx xx 00 8F  установить дату 
3. set_alarm 80 83 xx xx 00 00 8F установить время будильника
4. set_clock_mode 80 84 0x 00 00 00 8F установить режим показа времени
5. set_date_sht  80 85 xx 00 00 00 8F установить время показа даты
6. set_data_sht 80 86 xx 00 00 00 8F установить время показа данных
7. alarm_on_of 80 87 0x 00 00 00 8F вкл/выкл будильник 
8. show_sec 80 88 0x 00 00 00 8F вкл/выкл отсчет секунд
9. show_data 80 89 xx xx xx xx 8F показать данные
10. get_time  80 8A 00 00 00 00 8F послать на ПК строку-время
11. get_date 80 8B 00 00 00 00 8F послать на ПК строку-дату
12. show_date 80 8C 00 00 00 00 8F показать дату
13. power_en 80 8D 00 00 00 00 8F вкл/выкл индикацию
14. reserved 80 8E 00 00 00 00 8F зарезервировано

Вместо хх должны присутствовать корректные данные: часы/минуты для команд 1 и 3; день/месяц/год для 2; 1 или 2 для 4; от 2 до 98 для 5 и 6 (это установка времени показа данных и даты в десятых долях секунды, т.е. 36 – это 3.6с; число д.б. кратно 2, т.е. четным); 0 или 1 для 7 и 8. В режиме показа данных (команда show_data) первые три значащих байта соответствуют парам знакомест дисплея и, очевидно, не могут содержать числа больше 99, единицы в последнем байте соответствуют горящим десятичным точкам, поэтому его значение не может быть больше 63.

В случае пересылки ошибочных данных часы отсылают ПК строку «Error», выполнение корректных команд подтверждается сообщениями вида «установлен режим хх» и т.п., а команды установки подтверждаются еще и коротким звуковым сигналом.

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

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

Окончательно все это выглядит вот так:

Готовое

Мое рабочее место в полной темноте (на мониторе - наброски этой самой статьи :)

Фото

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

Файлы:

Платы в формате SL5
Прошивка




Эти статьи вам тоже могут пригодиться:

Часы на ГРИ из того что было.

Простые часы на газоразрядных индикаторах и Tiny13 со статической индикацией

Простые часы на ГРИ

Часы с ГРИ на ATmega8

Как я делал часы на ГРИ

часы на одном ГРИ и pic16f84

Простенькие 6ти ламповые часики с термометром на газоразрядных индикаторах с 6ю эффектами индикации.

Часы, календарь, термометр.

Часы радиоприемник

Часы на светодиодных матрицах с драйверами MAX7219

Простые часы-ночник

Часы на PIC.

Тёплые ламповые часы на Нумитронах

Первичные часы.

Часы на RGB матрицах + радио + BMP180+AM2321 +ПДУ

Часы - информатор для ПК

Простые часы-ночник2

Часы из HDD: Русский ответ

Первичные часы 2 - микроконтроллер наносит ответный удар

МФУ для стола радиолюбителя

Часы "GadgetClock" для офисного стола

Простые часы на микроконтроллере.

Автомобильные часы.

Часы из амперметров

Очень маленькое, но очень полезное устройство.

Миниатюрные часы на вакуумно-люминисцентном индикаторе ИВ-21

Часы. Эллипс, Скелетон, RGB.

Просто часы

Карманные часы "MicroClock"

Часы Click Clock с акселерометром