Например TDA7294

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

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

Автор - Aheir, aheir@radiokot.ru
По мотивам ветки Форума Часы на газоразрядных индикаторах

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

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

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

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

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

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

Часы могут питаться от нескольких независимых источников, развязка которых осуществляется с помощью диодов Шоттки с низким падением 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.:

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:

Одновременно может работать только один из интерфейсов 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
Прошивка


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

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

59 2 2
4 0 1