Речь пойдёт о такой вещи, как часы на газоразрядных индикаторах. Многие такие видели, или даже читали про них.
Для тех, кто не знает, объясняю: газоразрядный индикатор это колба, заполненная разреженным газом, в нашем случае неоном. Катоды выполнены в форме символов, а анод в виде сетки, которая их окружает. Если подавать на индикатор высокое напряжение, то есть порядка 200 вольт, то вокруг выбранного катода образуется светящаяся область тлеющего разряда.
Так вот, была поставлена такая задача: сделать часы на газоразрядных индикаторах, которые при этом будут дублировать всю информацию на жидкокристаллическом экране, а время будут получать из микросхемы часов реального времени. В качестве ядра устройства был выбран микроконтроллер AtMega8. Это распространённый микроконтроллер, проверенный многими, и на него написано очень много разных библиотек, что сильно помогает.
Для самой индикации мне досталась планка из целых десяти газоразрядных индикаторов ИН-12 и ИН-15, так что о статической индикации не может идти и речи.
Разберёмся с устройством управляющего модуля:
Микроконтроллер ATmega8 сначала подключаем к питанию, и притягиваем резистором 10к ножку reset к плюсу, чтобы она не срабатывала, когда это не нужно.
ЖК экран подключается по шине из шести проводов, не считая питания. Я использовал модель экрана wh1602a, но они отличаются друг от друга только порядком выводов на плате, поэтому заменить экран легко.
Далее переходим к микросхеме часов реального времени. Она должна отсчитывать время, и при необходимости сообщать его микроконтроллеру. Я использовал модуль часов реального времени на микросхеме ds1307. Такой способ гораздо точнее вычисления времени в самом микроконтроллере, и к тому же, время сохраняется при отключении питания от часов, так как они имеют собственную батарейку. Как и часы БИОСа на материнской плате.
Для настройки часов используются семь кнопок, шесть из них напрямую идут на выводы микроконтроллера, а седьмую подключил диодами к двум выводам одновременно. То есть при её нажатии программа будет думать, что нажаты сразу две эти кнопки. Это сделано для экономии выводов, микроконтроллера, иначе их просто не хватает.
Ну, и в итоге, для вывода времени на газоразрядные индикаторы у нас остаётся один свободный порт B. Этого вполне достаточно для динамической индикации, если использовать два дешифратора.
Первый дешифратор, это известная высоковольтная логическая микросхема к155ид1. Для неё используются пины порта B с четвёртого по седьмой. Она получает от микроконтроллера номер символа по четырёхбитной шине, и открывает необходимый вывод. Таким образом она снимает высокое напряжение с катодов индикатора, и сбрасывает его в минус, минуя микроконтроллер.
Развёртка же осуществляется через дешифратор к155ид10, подключённый к пинам порта B с нулевого по третий. Он работает так же, как и предыдущий дешифратор, только с низким напряжением. Его выводы имеют открытый коллектор, поэтому они притянуты к плюсу внешними резисторами. Далее сигнал инвертируется с помощью логических элементов «не», и открывает эти два каскада транзисторов, защищающие логику от высокого напряжения. Схема этих каскадов была взята из статьи на сайте schem.net, там этот процесс очень подробно описан. Только транзисторы я заменил на более доступные аналоги. NPN транзистор — кт604БМ, PNP — 2n5401.
То есть, можно использовать всего один порт микроконтроллера для индикации на этом экране. Это позволяет сэкономить как выводы микроконтроллера, так и время работы процессора.
Я оформил часы в такой корпус, в корпусе от блока питания находятся два адаптера, а вентилятор не работает, как можно подумать.
На фотографии видно: управляющий блок с часами реального времени, повышающий преобразователь напряжения, модуль с высоковольтной логикой и транзисторами, и саму планку с десятью газоразрядными индикаторами.
На переднюю часть корпуса выведены тумблеры для включения подсветки ЖК экрана, для включения самого повышающего преобразователя, регулятор контрастности ЖК экрана, и кнопка «F» для переключения режимов.
Сбоку находятся пять кнопок для настройки времени.
У часов есть три режима отображения времени: время и дата, только время, и время без отображнения секунд.
Видео с демонстрацией работы (ближе к его концу):
Все материалы по проекту (исходники, схемы, и печатные платы) я оставлю здесь: yadi.sk/d/Kj4ZHAgBiHRU9
Использованные материалы:
Статья на schem.net о транзисторной развязке: cxem.net/mc/mc187.php
Статья о преобразователе напряжения: e-kit.su/main/1562
Автор: DDRDmakar