В недавнем материале мы небезуспешно пытались заставить работать с Ардуиной жидкокристаллический индикатор на базе чипа HD44780. Что же - это было сравнительно легко. Потому что большую часть функций по организации работы индикатора брал на себя тот самый чип, встроенный в него. Плюс к этому, Ардуина также имеет достаточно развитые средства работы с такими индикаторами, поэтому работа с ним была легка и приятна.

 Изучаемые в этой статье семисегментные светодиодные индикаторы, пожалуй, на сегодняшний момент, являются самым распространенным средством представления цифровой и псевдографической информации. Все вы наверняка их видели в различных бытовых приборах - от часов до микроволновки. Хотя, как правило, в таких приборах они скрыты за полупрозрачным цветным (чаще зеленым) экраном. Цвет свечения таких индикаторов  также бывает различный. Лично я видел оранжевые, зеленые и красные. 

led dyn

Вот, примерно, такие они на вид. Размеры также бывают очень разные - от совсем небольших, до "гигантских".

Однако, внутреннее устройство и принцип работы таких приборов абсолютно одинаков. Каждый разряд индикатора состоит их 7 светодиодов ( плюс 8-й, точка. Не всегда бывает). Каждый светодиод расположен за узкой щелью, которая и загорается при его включении, создавая эффект светящейся черточки. Зажигая несколько таких черточек и оставляя другие темными, можно отобразить различные цифры или знаки. Тут уж дело фантазии конструктора. 

Для удобства подключения, эти черточки, из которых составляются знаки, обозначают буквами латинского алфавита:

led dyn2

Теперь разберемся, как же соединены эти светодиоды внутри самого индикатора. Из одной из прошлых статей, где мы перемигивались похожими светодиодами, помним, что они загораются только при определенной полярности приложенного напряжения. То есть - диод будет гореть, если на анод подать "+", а на катод - "-". В наших индикаторах или катоды, или аноды всех светодиодов соединены между собой. Если в один проводник соединены аноды, то индикатор называется - с "общим анодом", если катоды - с "общим катодом". Соответствующую полярность источника питания нужно подавать на него в том и другом случае.

Соответственно, все остальные выводы такого индикатора, кроме общего анода (катода), выведены наружу и соответствуют своим сегментам на "экране". Схема соединения индикатора:

led dyn3

Общее правило: если при подаче на общий проводник индикатора "плюса" питания, а на любой сегмент "минуса", этот самый сегмент загорается, то имеем индикатор с "общим анодом". Ну и, соответственно, наоборот.

Вот эти мои индикаторы, которые на фото выше (те что поменьше), были когда-то выпаяны из какой-то аппаратуры и не имели никакой маркировки. Причем, можно заметить, что у них в одном корпусе содержится по 2 индикатора. Тем не менее, взяв 2 проводка, соединенные с источником питания (лучше стандартные 5 вольт) и (обязательно!) сопротивление на 100 - 200 ом, можно методом научного тыка определить все выводы. То есть, начинаем подавать напряжение наугад на разные выводы индикатора. В какой-то момент мы найдем такую пару выводов, когда загорится какой-то сегмент. Значит, один из выводов, на которые мы наткнулись - это общий провод для данного индикатора (анод или катод). Ну, а вычисление расположения выводов других сегментов - дело техники и здравого смысла. Рекомендую нарисовать на бумажке расположение выводов индикатора и соответствующих им сегментов.

Разобравшись с выводами и нарисовав схему соответствия выводов конкретного индикатора с его сегментными светодиодами, мы обнаружим, что для подключения КАЖДОГО индикатора (разряда), нам нужно управлять ДЕВЯТЬЮ выводами (7 сегментов, точка и анод). То есть, так выходит, что, если мы хотим одновременно использовать, например, 4-хразрядный экран, то нам понадобится куда-то подключать 4 * 9 = 36 его выводов! И куда мы будем их подключать, когда во всей Ардуине их меньше?

Придется как-то выкручиваться. Если мы физически не можем управлять одновременно всеми 4-мя индикаторами, то будем управлять ими..... ПО ОЧЕРЕДИ! Воспользуемся недостатком человеческого глаза.. Ну, или достоинством, раз в данном случае оно нам поможет. 

А именно - если достаточно быстро демонстрировать и скрывать какое-то изображение, то, при определенной частоте показов, оно покажется нам постоянно демонстрирующимся- неизменяющимся. Этот эффект называется инерционностью зрения, и мы им воспользуемся.

Идея такая: показывать цифры (или другие знаки) не одновременно, а поочередно. Причем, с такой скоростью, чтобы наблюдателю казалось, что все они горят одновременно.

Алгоритм работы: исходное положение - на анодах (буду для простоты про свои индикаторы) нулевой потенциал, ни один индикатор не горит. Все выводы одноименных сегментов всех индикаторов соединены между собой согласно рисунку. Набираем на них нужную комбинацию "0" и "1", соответствующую какой-нибудь цифре. Затем подаем на анод "1". Индикатор загорается первым разрядом, показывая нам набранную цифру. Через какое-то время подаем на анод "0", первый разряд тухнет. Набираем на сегментных выводах комбинацию, соответствующую второму разряду, подаем "1" на анод второго разряда, он загорается цифрой, выдержка - и тушим его. И так далее по кругу. Если проделывать это с достаточно большой скоростью, то нашему глазу будет казаться, что все разряды зажжены одновременно. При этом мы использовали всего 7 сегментных выводов и 1 анодный для каждого индикатора, в моем случае, для четырех индикаторов - 4. Всего - 11, если не считая точки. Уже стало гораздо легче.

Вот это и есть принцип динамической индикации, на котором работает подавляющее количество приборов с цифровой индикацией.

Ну, а пока займемся размещением наших индикаторов на макетной плате:

led dyn1

 

На этом рисунке показаны установленные на макетке индикаторы и зажжен один сегмент. ВАЖНО! Напряжение на сегменты необходимо подавать через гасящие сопротивления 50-150 ом!

led dyn4

 

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

led dyn5

 

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

 Теперь еще такой нюанс. Как мы помним из предыдущих статей, ток одного включенного светодиода - примерно 20 миллиампер. А их, в одном разряде - целых 7, а с точкой - так и 8. То есть, через общий анодный вывод, при одновременном свечении всех сегментов разряда может протекать суммарный ток около 150 миллиампер. А это очень много, если учесть, что максимальный выходной ток вывода Ардуины - не более 40 миллиампер. Поэтому, для соединения анодов с Ардуиной будем использовать дополнительно транзисторные ключи:

led dyn6

 

Транзисторы, в принципе, можно использовать любые, главное, правильно их подключить. У меня оказались - типа p-n-p. Поэтому их коллекторы я напрямую соединил с анодами индикатора, эмиттеры - с "+" питания, а к базам - подключил сопротивления 1 ком. Теперь это и будут мои "выводы" анодов индикатора. Надо еще учесть такую вещь - теперь, с транзисторными ключами, для того, чтобы на аноде индикатора появился "+" , на базу транзистора нужно подать "-". Не забыть этот момент при написании программы.

Ну, с "железом", вроде как и все. Можно начинать писать программы для нашего прибора. Но об этом - уже в следующей статье.

Продолжение следует...

 

 

Добавить комментарий