[Из песочницы] Nexie clock на одном порте — ATmega8
Речь пойдёт о такой вещи, как часы на газоразрядных индикаторах. Многие такие видели, или даже читали про них.
Для тех, кто не знает, объясняю: газоразрядный индикатор это колба, заполненная разреженным газом, в нашем случае неоном. Катоды выполнены в форме символов, а анод в виде сетки, которая их окружает. Если подавать на индикатор высокое напряжение, тоесть порядка 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