Десятичный счетчик-дешифратор K561ИЕ8 (CD4017) и красивый эффект на нём
Привет, Хабр! Бегущие огни многие из нас уже собирали. А что, если сделать их не одномерными, а двумерными? То есть, чтобы они бегали не по вектору, а по матрице?
Получится эффект со множеством вариантов настройки, в зависимости от частоты вертикальной и горизонтальной развёртки.
И воплотим мы его не на Ардуино и микроконтроллерах, а на микросхемах стандартной логики. Которые и от импорта не зависят, и программному взлому не поддаются, а ещё они олдскульные, тёплые, почти ламповые.
Начнём с классических, одномерных бегущих огней.
Подобные схемы мы собирали уже дважды, и разбирали принцип их работы. Сегодняшние бегущие огни отличаются от светомузыкальной игрушки тем, что тактируются не микрофонным усилителем, а таймером NE555, а от колеса Фортуны — тем, что частота задающего генератора не модулируется постепенно разряжающимся электролитическим конденсатором, а настраивается посредством подстроечного резистора.
Эта простейшая любительская конструкция очень наглядно и ярко демонстрирует необходимость блокировочных конденсаторов по питанию, они же фильтры питания, в устройствах на цифровых микросхемах.
На видео можно наблюдать, что при отключении фильтрующего конденсатора огоньки хаотично «бесятся», вместо того, чтобы дисциплинированно бегать по своей траектории с заданной скоростью. По причине того, что по линии питания чувствительная и высокоскоростная микросхема получает ложные сигналы.И в отличие от микроконтроллера, никакого алгоритма распознания ложных сигналов запрограммировать в неё нельзя. Десятичный счётчик-дешифратор просто считает входные импульсы и выводит логическую единицу на выход, соответствующий тому числу, до которого он досчитал.
Именно поэтому разработчики и производители советской аппаратуры на цифровых микросхемах не жалели дорогих палладиевых конденсаторов серии КМ (керамический многослойный) для, казалось бы, такой «тупой» работы, как фильтровать питание каждого корпуса или небольшой группы корпусов. (Здесь корпус — синоним слова микросхема, или словосочетания интегральная схема, integrated circuit, IC, принятого в англоязычной литературе).
▍ Шаговый искатель и счётчик-дешифратор
Казалось бы, простая микросхема CD4017, или K561ИЕ8, имеет в своём составе 31 логический элемент, не считая 5 триггеров. Согласитесь, было бы утомительно паять такую схему на отдельных логических элементах и тем более транзисторах, не говоря о лампах или реле!
Хотя в случае реле функцию счётчика-дешифратора выполнял шаговый искатель. В нём спусковой механизм, подобный тому, что в часах, (в терминологии часовщиков — «спуск», или «ход»), вместо маятника или балансира приводился в движение электромагнитом, а вместо стрелок были ножи переключателя, которые вращались между контактами.
Такие декадные шаговые искатели использовались на телефонных станциях. Прерыватель номеронабирателя посылал в линию число импульсов тока, соответствовавшее набранной цифре, а шаговые искатели в количестве, соответствующем числу цифр в номере, отсчитывали эти импульсы и переключали контакты так, чтобы подключить аппарат вызывающего абонента к аппарату абонента с набранным номером.
Интегральный счётчик-дешифратор K561ИЕ8, как следует из названия, состоит из двоичного счётчика, (только особого, как мы увидим ниже), и двоично-десятичного дешифратора.
Счётчик построен на пяти синхронных D-триггерах. Такой триггер, (от английского delay — задержка или data — данные), — запоминает состояние входа и выдаёт его на выход. D-триггеры имеют, как минимум, два входа: информационный D и синхронизацию C. После прихода активного фронта импульса синхронизации на вход C D-триггер открывается. Сохранение информации в D-триггерах происходит после спада импульса синхронизации. Поскольку информация на выходе остаётся неизменной до прихода очередного импульса синхронизации, D-триггер называют также триггером с запоминанием информации или триггером-защёлкой.
Импульсы синхронизации на все пять триггеров приходят с 14 ноги микросхемы, являющейся счётным входом, или входом тактирования — Clock. Перед этим они проходят через инвертирующий триггер Шмитта, чтобы микросхема воспринимала сигналы с разными уровнями логических единицы и нуля, и элемент И-НЕ.
Этот элемент предназначен для того, чтобы при высоком уровне сигнала запрета тактирования на выводе 13, — Clock inhibit, — счётчик не реагировал на входные импульсы.
Сигнал запрета тактирования проходит через два элемента НЕ, что может показаться бессмысленным. Однако в микросхеме таким образом реализован просто неинвертирующий буфер — усилитель-повторитель сигнала.
Транзистор, включённый по схеме с общим эмиттером или общим истоком, в зависимости от того, биполярный он или полевой, инвертирует входной сигнал. Когда на входе плюс, (рассматриваем NPN или N-канальный МОП в схеме с плюсовой шиной питания и минусом на массе), транзистор открывается и притягивает выход к земле.
Когда на входе низкий уровень, транзистор закрыт, и выход подтянут резистором или чем-то более интересным к плюсу питания. Что-то интересное — это источник тока на полевом транзисторе, который очень часто используется внутри микросхем для организации подтяжки нужной точки схемы к нужной шине.
Получается, что если бы мы собирали буфер-повторитель на транзисторах, их нам понадобилось бы как минимум два. То есть, это были бы два инвертора, или элемента НЕ, включённые последовательно.
Спросите, почему бы не применить эмиттерный или истоковый повторитель? — Потому что он не является честным буфером. Напряжение на его выходе ниже напряжения на базе или затворе на определённую, и немалую величину. То есть получится деградация уровня сигнала, которая в цифровой схеме неприемлема.
Чтобы получить настоящий буфер, повторяющий на выходе входное напряжение, транзисторному повторителю нужен ещё и операционный усилитель, имеющий в своём составе несколько транзисторов. Чего ни мы, ни создатели микросхемы не сочтём целесообразным.
Потому два логических элемента НЕ один за другим — это полностью осмысленное техническое решение, а не шутка чертёжника.
Итак, высокий логический уровень на выходе элемента ИЛИ-НЕ будет лишь в одном случае: когда на обоих его входах логический 0. То есть, когда на входе запрета тактирования низкий уровень, (для чего проще всего подпаять эту ножку к логической земле), а на входе тактирования логическая 1. (Триггер Шмитта ведь инвертирующий).
Ножка 15 — вход сброса — Reset — через такой же буфер из двух инверторов подаёт сигнал сброса на все пять триггеров.
А вот считает десятичный счётчик по-своему, не так, как привычный нам двоичный, каждый триггер которого, просто делит частоту входного сигнала на 2. Здесь такое происходит только между первым и вторым триггером, а также между третьим, четвёртым и пятым.
Перенос единицы на вход D третьего триггера происходит только в случае, когда на обоих входах соответствующего элемента ИЛИ-НЕ логический 0.
То есть, когда второй триггер установлен в единицу (сигнал на ИЛИ-НЕ берётся с инвертирующего выхода), и хотя бы один из двух триггеров — первый и третий — установлен в единицу.
Получается такая последовательность состояний триггеров:
00000 — 00001 — 00011 — 00111 — 01111 — 11111 — 11110 — 11100 — 11000 — 10000
Со следующим тактом система возвращается в 00000, и всё повторяется снова. Так работает десятичный счётчик.
Отметим, что эта система кодирования чисел отличается и от 4-разрядного двоично-десятичного кода, применяемого в телефонии, и от системы кодирования »2 из 5», где десятичная цифра кодируется 5 разрядами, из которых 2 бита установлены в 1, а 3 бита — в 0, что даёт ровно 10 комбинаций.
У нас получается, что от 0 до 4 выходное число равно числу единиц в коде. А от 5 до 9 оно равняется 10 минус число единиц в коде.
Сигнал переноса — Carry Out — на 12-м выводе микросхемы является инвертированным сигналом с выхода пятого триггера. От 0 до 4 его уровень высокий, а от 5 до 9 — низкий.
Далее дешифратор на десяти элементах И переводит этот пятиразрядный код в десятичный:
0, если 0 на первом и пятом триггерах — 00000;
1, если 1 на первом и 0 на втором триггере — 00001;
2, если 1 на втором и 0 на третьем — 00011;
3, если 1 на третьем и 0 на четвёртом — 00111;
4, если 1 на четвёртом и 0 на пятом — 01111;
5, если 1 на первом и на пятом — 11111;
6, если 0 на первом и 1 на втором — 11110;
7, если 0 на втором и 1 на третьем — 11100;
8, если 0 на третьем и 1 на четвёртом — 11000;
9, если 0 на четвёртом и 1 на пятом триггере — 10000.
Такая гениальная система двоичного кодирования десятичных чисел называется кодом Джонсона, и позволяет обойтись для каждого из выходов дешифратора всего-навсего одним двухвходовым элементом И. Соответственно, счётчик носит название счётчика Джонсона на сдвиговом регистре с перекрёстной обратной связью.
Лично меня это приводит в восхищение. Такое грамотное применение дискретной математики — просто противоположный полюс по сравнению с подходом ардуинщика, у которого вместо любого схемотехнического узла микроконтроллер.
А в программе того контроллера все расчёты с плавающей точкой, которая губит и производительность, и точность, и мешает сравнению величин. А где точка фиксированная, там перепутаны целые с неотрицательными, не учтены переполнения, и все тайминги на пустых циклах. «Счётчики? Прерывания? — Не слышали о таких».
Не поймите неправильно, к миру Ардуино и всего ему подобного я отношусь с огромной любовью и уважением. Такие любительские средства разработки и отладки снижают порог вхождения настолько, что сделать свои первые шаги в мир электроники сможет и дошкольник, и человек преклонного возраста, не говоря уже обо всех остальных. Это просто прекрасно!
Но стремиться к повышению инженерной культуры даже в простых казуальных самоделках можно и нужно. Хотя бы потому, что это интересно, и позволяет повысить самоуважение и веру в свои силы.
До пандемии ковида и дефицита полупроводников заменять даже простейшие триггеры микроконтроллерами было экономически обоснованным, если не стоял вопрос надёжности. Далее времена изменились, и люди снова вспомнили о своих верных друзьях — старых добрых микросхемах и транзисторах.
А в мире сложных разработок необходимы знания не только микроконтроллеров и процессоров, но самых разных схемотехнических узлов, которые дополняют друг друга и совместно создают прекрасную умную технику.
Под каждую конкретную задачу систему на чипе не создать. Нужно уметь работать и с операционными усилителями, и со стандартной логикой, и с транзисторами, и преобразователь напряжения уметь рассчитать и трассировать. Потому продолжаем изучать составляющие электроники на простых примерах.
▍ Развёртка, прямо как в телевизоре
А вот и схема нашего двумерного эффекта. Про блокировочные конденсаторы тут не забыли: присутствуют керамический C6 и электролитический оксидный C1.
Горизонтальная и вертикальная развёртка устроены почти одинаково. Выводы запрета тактирования, — ножка 13, — обеих CD4017 соединены с землёй. Ножка 12 — вывод переноса — не используется и висит в воздухе. Она представляет собой выход, а не вход, потому висеть в воздухе имеет полное право.
Десятый выход, — ножка 11, — каждого дешифратора соединён с его входом сброса, — ножкой 15. В узле горизонтальной развёртки напрямую, а в узле вертикальной через резистор R1 3.3 кОм, потому что в правом положении переключателя S4 горизонтальная развёртка тактируется сигналом сброса вертикальной.
Одинаковые тактовые генераторы собраны на интегральных таймерах NE555. Каждый из них имеет переменный резистор регулировки частоты и переключатель частотных диапазонов. Высокую частоту задаёт керамический времязадающий конденсатор, низкую — электролитический.
В схеме горизонтальной развёртки используются NPN транзисторы S9014, включённые по схеме с общим эмиттером. Потому предусмотрены резисторы в цепи базы, номиналом по 10 килоом.
Такие же транзисторы применены в схеме вертикальной развёртки, но тут они включены по схеме с общим коллектором, потому в базовых резисторах не нуждаются. У такого каскада от природы высокое выходное сопротивление. Резисторы по 220 Ом задают токи светодиодов.
Стоит похвалить авторов схемы за использование одинаковых транзисторов в верхнем и нижнем ключах. Очень лаконичное, грамотное решение.
Посмотреть примеры живой динамической красоты, которую создаёт эта довольно простая и принципом работы и в сборке, (если хватит терпения паять почти полторы сотни деталей), можно на видео. И процесс пайки тоже.
В одной из следующих статей попробую превратить эту игрушку в осциллоскоп. Необходимая для этого микросхема, (а вы могли догадаться, что это LM3915), уже в пути. Скоро её получу.
На первом видео вы могли заметить ещё два красивых светодиодных эффекта. И качающийся колокольчик, и электронная юла построены на обычных симметричных мультивибраторах, на двух транзисторах.
Как видим, даже простейшие схемы на простых транзисторах могут быть очень эффектными и эффективными, если подойти к ним творчески. А уж микросхемы открывают безграничный волшебный мир, если научиться ими пользоваться.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх