РадиоКот >Лаборатория >Цифровые устройства >
Часы на газоразрядных индикаторах ИН-12Б
Часто бывает, что толчок к разработке какого-либо устройства дает одна единственная попавшая в руки деталь или
элемент. Так случилось и на этот раз – не в добрый час досталась мне сборка из 6-ти газоразрядных индикаторов
ИН-12Б, умеющих отображать цифры от 0 до 9 и десятичную точку.
Раньше такие индикаторы широко применялись для отображения цифровой информации в измерительных приборах и т.п.,
однако сейчас актуальность подобного решения сомнительна, поэтому, изучив соответствующую тему нашего форума и
пробежавшись по данным в ней ссылкам, было принято волевое решение сваять на основе ИНок часы… Что, в свободное
от основных занятий время, и было неспешно реализовано.
Некое подобие структурной схемы устройства представлено на рисунке:
На схеме красными стрелками показаны шины передачи данных, а синими – питание узлов.
Часы могут питаться от нескольких независимых источников, развязка которых осуществляется с помощью диодов Шоттки
с низким падением D1-D6. В качестве входа для первого источника питания установлен MOLEX разъем, что позволяет
использовать компьютерный БП, второй вход оформлен в виде обычного коаксиального DC/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.:
Для питания газоразрядных индикаторов требуется источник высокого напряжения порядка 200В, необходимый для
зажигания и поддержания устойчивого разряда в индикаторе. Повышающий преобразователь 12->200В выполнен на
микросхеме MAX1771:
В высоковольтной части схемы следует применять элементы, выдерживающие соответствующие напряжения. Делитель,
образованный резисторами R2, R3 и переменным резистором, задает выходное напряжение, которое в некоторых пределах
можно подстраивать. В моем случае, выходное напряжение составляет 190В, чего вполне достаточно для работы
индикаторов. Мощности преобразователя хватает для одновременной работы всех 6 индикаторов.
Советую быть поосторожнее при отладке: 200В – высокое напряжение, и хоть гальваническая развязка от сети и
присутствует, да и мощность преобразователя не велика, по лапам он лупит вполне достойно…
Конструктивно эти 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:
Одновременно может работать только один из интерфейсов COM или USB, причем предпочтение отдается USB, т.к.
переключение реализовано при помощи реле, запитанного от разъема USB: при втыкании кабеля реле перекинется и
на контроллер пойдут данные от модуля FT232.
Вообще, о преобразователях интерфейсов USB <-> RS232 можно почитать в этой статье, а по секрету скажу,
что в конечной версии часов стоит такой преобразователь на TUSB3410, но все сказанное относительно приоритетов
интерфейсов справедливо и для него..
Конструктивно часы оформлены в корпусе от компьютерного CD-ROM и состоят, как уже было отмечено, из нескольких
плат. Всю площадь корпуса занимает основная плата, которая внутри корпуса крепится на штатные посадочные места,
оставшиеся от «родных» плат CD-ROMа. На ней смонтирован сетевой БП, микроконтроллер с часами, все необходимые
разъемы и часть микросхем дешифратора. Остальные микросхемы дешифратора смонтированы на отдельной плате, которая
установлена над основной платой, вторым этажом. Модули питания вертикально впаяны в основную плату.
На заднем торце между разъемами установлены 4 кнопки, служащие для настройки часов и выбора режима работы.
Вот так вот все это выгядело на этапе отладки:
Здесь подключена только дополнительная плата дешифратора, основной платы пока нет.
Полностью собранная плата часов:
Так, с конструктивом маленько разобрались, теперь пару слов по поводу прошивки.
Контроллер – 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
Прошивка
Как вам эта статья?
|
Заработало ли это устройство у вас?
|
|
|
Эти статьи вам тоже могут пригодиться: