Привет, Хабр! Программируемый таймер без микроконтроллера, который мы сегодня соберём, может отсчитывать секунды до Нового года или просто служить пособием по цифровой схемотехнике и тренажёром для пайки.
Проект основан на двух микросхемах реверсивного двоично-десятичного счётчика CD40192 (функциональный аналог К1554ИЕ6, 74АС192 ) и предоставляет нам возможность их подробного изучения.
Авторы конструкции не забыли внести в плату традиционную пару ошибок, и экспериментатору придётся подумать и потрудиться для того, чтобы устройство заработало как полагается.
В предыдущей статье мы собирали электронный секундомер с двумя семисегментными светодиодными индикаторами. Он «умеет» считать вперёд до 30 или 60 секунд, в зависимости от положения джампера, после чего останавливается и ждёт нажатия кнопки для перезапуска.
Наша сегодняшняя конструкция является гораздо более продвинутой по сравнению с предыдущей. Здесь тоже два десятичных разряда, но этот таймер считает назад, причём начиная с того числа, которое мы запрограммировали посредством двух счетверённых микропереключателей.
Отсчитав положенное число секунд, автомат подаёт звуковой сигнал при помощи зуммера, а затем ждёт перезапуска. Предусмотрены три кнопки — пуск, стоп со сбросом и пауза.
Чтобы считать секунды, а также минуты и часы от нуля и только вперёд, нам было достаточно одной 16-выводной микросхемы CD4518 на два десятичных разряда. Она применяется не только в таймере на полминуты и минуту, но и в полноценных олдскульных кварцевых электронных часах с цифровой индикацией.
▍ Декадный счётчик CD40192
Но чтобы иметь возможность ввода непосредственных значений и счёта как вперёд, так и назад, иными словами, инкрементного и декрементного, на каждый из двух десятичных разрядов потребуется отдельная шестнадцативыводная микросхема CD40192, способная работать в диапазоне напряжений питания от 3 до 18 вольт.
Микросхема имеет четыре входа J1-J4 для загрузки непосредственного значения в счётный регистр, четыре выхода Q1-Q4, инкрементный счётный вход CLOCK UP, декрементный счётный вход CLOCK DOWN, вход сброса RESET, инвертирующий вход разрешения предустановки ¬PRESET ENABLE (иными словами, вход запрета предустановки), а также инвертирующие выходы переноса ¬CARRY и заимствования ¬BORROW.
▍ Что нам стоит триггер построить?
Давайте посмотрим на внутреннюю логику работы микросхемы. Данные четырёх двоичных разрядов запоминаются посредством четырёх T-триггеров со счётными входами на базе синхронных D-триггеров, снабжённых асинхронными входами установки и сброса.
Как мы помним, триггер является электронной ячейкой памяти. Каждый из триггеров микросхемы CD40192 состоит из четырёх элементов 2И-НЕ, одного логического инвертора и четырёх элементов логики на комплементарных проходных транзисторах (CPTL, complementary pass transistor logic). Эти элементы представляют собой мультиплексорные ключи и нарисованы на схеме в виде загадочных квадратиков c буквами P и n сверху и снизу.
Эта схема из даташита SCHS106 от Harris Semiconductor содержит ошибки (напишите в комментариях, какие), потому предлагаю рассмотреть вместо неё часть схемы сдвоенного триггера КР561ТВ1 (CD4027B).
Два триггера КР561ТВ1 JK типа, за что отвечает участок схемы, обведённый красным. Входы J и K сегодня нам не нужны, потому данный участок мы рассматривать не будем.
Если убрать эти лишние входы, останется синхронный D-триггер. Чтобы получить из него счётный Т-триггер, необходимо соединить вход данных с инвертирующим выходом. Это изображено в виде зелёного проводника.
Получился точно такой же триггер, как в CD40192, только без ошибок. Давайте пронумеруем логические элементы, чтобы можно было описать состояния триггера уравнениями булевой алгебры.
При логическом нуле на входе тактирования мультиплексорные ключи A и D замкнуты, а B и C — разомкнуты. Поэтому булевы уравнения для выходов четырёх элементов 2И-НЕ будут выглядеть так.
Q4 = ¬(Q3 & ¬R).
Q1 = ¬(¬R & Q4) = ¬(¬R & ¬(Q3 & ¬R)) = R | (Q3 & ¬R).
Если на входе R логическая единица, получаем:
Q1 = 1 | (Q3 & 0) = 1.
В противном случае:
Q1 = 0 | (Q3 & 1) = Q3.
Q2 нас не интересует, так как сигнал с его выхода никуда не подаётся.
И наконец, получаем уравнение для неинвертирующего выхода триггера:
Qx = Q3 = ¬(¬S & Q4) = ¬(¬S & ¬(Q3 & ¬R)) = S | (Q3 & ¬R).
Если на входе S логическая единица, то:
Qx = Q3 = 1 | (Q3 & ¬R) = 1.
А при низком логическом уровне на входе установки получается:
Qx = Q3 = 0 | (Q3 & ¬R) = Q3 & ¬R.
Иными словами, при логическом нуле на входе сброса состояние неинвертирующего выхода триггера не изменится, а при логической единице — сбросится в ноль.
Итак, у нас получился прекрасный RS-триггер. Но теперь давайте рассмотрим, что происходит при появлении высокого логического уровня на тактирующем входе.
Теперь мультиплексорные ключи A и D разомкнуты, зато замкнуты B и C. Получаем следующие уравнения.
Qx = Q3 = ¬(¬S & Q1) = S | ¬Q1.
Подставляем старое состояние выхода Q1, равное старому состоянию выхода Q3, если не было сигнала асинхронного сброса.
Qx = S | ¬Qx.
Итак, положительный фронт тактирующего импульса изменяет состояние неинвертирующего выхода триггера на противоположное по сравнению с предыдущим, если неактивны сигналы асинхронных сброса или установки.
При высоком уровне на асинхронном входе установки неинвертирующий выход триггера установится в единицу вне зависимости от состояния остальных входов.
¬Qx = Q4 = ¬(Qx & ¬R). = ¬Qx | R.
Логическая единица на асинхронном входе сброса переведёт неинвертирующий выход триггера в единицу вне зависимости от состояния остальных входов и неинвертирующего выхода.
А при логическом нуле на входе R состояние инвертирующего выхода будет противоположным состоянию инвертирующего. Получается такая таблица состояний нашего счётного триггера.
Заметим, что в случае триггера, построенного по такой схеме, может случиться коллизия, когда на его входы одновременно поданы сигналы асинхронных установки и сброса. Тогда и на инвертирующем, и на неинвертирующем выходе триггера будут логические единицы, что лишено смысла.
Однако после снятия ошибочного сигнала триггер придёт в адекватное состояние. И как мы увидим далее, разработчики реверсивного счётчика CD40192 предусмотрели защиту от одновременной подачи на триггер сигналов установки и сброса.
Теперь мы знаем, как работают триггеры этой микросхемы, и готовы к изучению подсистемы асинхронной загрузки непосредственного значения в счётный регистр.
Эта подсистема состоит из четырёх одинаковых узлов управляющей логики, каждый из которых содержит по одному логическому элементу НЕ, И, 3И-НЕ и 2ИЛИ-НЕ.
Запишем уравнение состояния для сигналов установки и сброса триггеров счётного регистра:
Sx = ¬(¬PE & Jx & Rx) = ¬(¬PE & Jx & Rx).
¬Sx = ¬PE & Jx & Rx.
Это означает, что для установки триггера необходимо состояние логической единицы одновременно на входе данных соответствующего разряда и входе сброса данного триггера, а также логический ноль на инвертирующем входе разрешения предустановки.
В отличие от CD4027B, входы установки и сброса внутренних триггеров CD40192 являются инвертирующими. У CD4027B просто добавлены два логических элемента «НЕ», чтобы получить неинвертирующие входы.
А так выглядит булево уравнение для сигнала асинхронного сброса триггера.
¬Rx = (¬Jx & ¬PE) | RESET.
Здесь всё просто. Триггер будет сброшен при логической единице на входе общего сброса, либо если разрешена запись непосредственного значения, и на соответствующем входе данных присутствует низкий логический уровень.
Осталось рассмотреть, как происходит сам процесс подсчёта импульсов. На схеме мы видим, что состояние каждого из четырёх триггеров выводится на соответствующую ножку микросхемы через инвертор и инвертирующий буфер.
Также предусмотрены инвертирующие выходы переноса ¬CARRY и заимствования ¬BORROW, переходящие в логический ноль, соответственно, при переполнении и опустошении четырёхразрядного счётчика.
Формула состояния счётного входа триггера первого разряда выглядит так:
¬CL = ¬(CLOCK UP & CLOCK DOWN).
Получается, что для перебрасывания триггера необходим не только переход инкрементного или декрементного входа из нуля в единицу, но и высокий логический уровень на другом из этих двух входов.
Логические элементы, изображённые на схеме сверху и снизу от счётных триггеров, задают условия тактирования последних при счёте вверх и вниз.
В отличие от считающего до 1111b = 15 двоичного счётчика CD40193, CD40192 является двоично-десятичным счётчиком. Потому сброс регистра в 0000b = 0 и формирование сигнала переноса происходит после инкрементного счёта до 1001b = 9.
Чтобы осуществить многоразрядный двоично-десятичный счёт, необходимо соединить выходы переноса и заимствования младшего разряда соответственно с инкрементным и декрементным счётными входами старшего.
Наш сегодняшний электронный секундомер считает только вниз, поэтому выход заимствования микросхемы IC4 соединён с декрементным входом IC3. Выход переноса IC4 никуда не подключён, а инкрементные входы обеих микросхем соединены с плюсом питания, чтобы на них всегда была логическая единица.
Выходы данных IC3 и IC4 соединены с соответствующими входами уже хорошо знакомых нам двоично-десятичных дешифраторов CD4511 — IC1 и IC2, управляющих, соответственно, семисегментными индикаторами DS1 и DS2.
Для непосредственного ввода двоично-десятичных цифр применяются счетверённые микропереключатели, соединяющие входы данных IC3 и IC4 с плюсом питания. Для подтяжки этих входов к земле устройства использованы две резисторные сборки RP1 и RP2, каждая из которых содержит четыре резистора сопротивлением 10 килоом.
На двух логических элементах 2И-НЕ микросхемы IC5 собран симметричный RS-триггер. Он устанавливается в логическую единицу кнопкой К1 и сбрасывается сигналом низкого уровня с выхода заимствования счётчика старшей декады IC3.
Логическая единица на выходе триггера запускает счёт секунд, запрещая загрузку непосредственных значений в регистры счётчиков. То есть, К1 — это кнопка запуска отсчёта.
Соответственно, логический нуль переводит счётчики в режим асинхронной загрузки, когда обратный отсчёт заблокирован, и данные считываются с микропереключателей SW1 и SW2.
Вне зависимости от состояния триггера, можно остановить отсчёт и загрузить числа с микропереключателей, нажав кнопку К2. Это кнопка сброса.
А кнопка К3 закорачивает времязадающий конденсатор C3 генератора секундных импульсов на микросхеме IC7 NE555 (КР1006ВИ1). Это точно такой же генератор, как и у двух прошлогодних секундомеров.
Таким образом, К3 — это кнопка паузы. Она не влияет на содержимое счётчиков. Отсчёт секунд приостанавливается на время, пока эта кнопка нажата.
Итак, таймер обратного отсчёта работает следующим образом. Когда триггер IC5A IC5B установлен в единицу, счётчики считают секунды в обратном порядке до тех пор, пока не досчитают до нуля.
Далее триггер сбрасывается в ноль, и счётчики переходят в режим загрузки непосредственного значения с микропереключателей. Одновременно с этим загорается светодиод D1 и открывается транзистор Q1, в коллекторную цепь которого включён зуммер В1.
▍ Ошибки на плате
Зуммер пищит, сигнализируя о том, что пришёл Новый год. Или о том, что завершена термическая обработка ингредиента для праздничного блюда. Или просто о том, что схема собрана без ошибок.
Таких ошибок на плате было две. И как всегда, это были отсутствующие фрагменты дорожек.
На этот раз первая из них находилась между ближайшим до микропереключателя выводом резистора R3 и четвёртым выводом счётчика IC4, из-за чего сигнал генератора секундных импульсов никуда не попадал и числа на индикаторах не уменьшались.
Вторая дорожка, которую «забыли» проложить на плате, соединяет 13-й вывод IC4 с 4-м выводом IC3, то есть, передаёт сигнал заимствования с младшей декады на декрементный вход старшей. Без этого проводника не будут убывать десятки секунд и не произойдёт сброса триггера с индикацией о завершении отсчёта.
После приведения платы в соответствии с приложенной схемой самоделка заработала как полагается.
Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале ????
Комментарии (20)
iig
27.12.2023 10:10+3Авторы конструкции не забыли внести в плату традиционную пару ошибок, и экспериментатору придётся подумать и потрудиться для того, чтобы устройство заработало как полагается.
А кто авторы, и чему посвящен квест? Если для экзамена в учебном заведении, то даже не знаю.. Студенты они изобретательные, решение припаять 2 проводка очень быстро станет общедоступным. Или там каждому студенту выдают свою плату?
ahdenchik
27.12.2023 10:10+2Советская традиция публикации схем в детских и любительских журналах, когда практически каждая схема или разводка платы содержала ошибки (типа отсутствия или лишней дорожки или, например, перевёрнутого поляризованного компонента)
MaFrance351
27.12.2023 10:10+2Для всяких соревнований по электронике, где заранее неизвестно, что за схема вообще будет, неплохой вариант.
Я участвовал в подобных (в WorldSkills на направлении "Электроника" и в локальных на базе одной из школ нашего города), но там было просто - бралась рабочая плата, и её специально поганили. А тут всё просто и технологично...
Lunathecat Автор
27.12.2023 10:10Экзамен проводился в один определённый день. Платы и инструкции к ним до того дня были секретными. Как задания на ЕГЭ.
OldFashionedEngineer
27.12.2023 10:10+1Это у китайцев так что-ли?
Lunathecat Автор
27.12.2023 10:10Да. А можно было по-другому?
OldFashionedEngineer
27.12.2023 10:10+1У нас сейчас в колледжа тоже сдают демонстрационный экзамен, на них аналогичные задания.
Vestibulator-1
27.12.2023 10:10+1А зачем добавлен таймер 555 если осталось ещё два свободных вентиля ЛА7 на которых можно собрать генератор?
OldFashionedEngineer
27.12.2023 10:10+1Такие генераторы не очень стабильны. И в зависимости от типа микросхемы может понадобиться бубен для запуска генерации.
Vestibulator-1
27.12.2023 10:10+1В качестве бубна транзистор можно использовать, в крайнем случае. Схемы на дискретных элементах тем и хороши что понимаешь как это работает.
OldFashionedEngineer
27.12.2023 10:10+1Это Вы мне рассказываете? Посмотрите мои статьи)))
Можно и без транзисторов. Главное элемент нестабильности по входу задать. На двух 2и-не можно один из входов первого вентиля rc цепочкой запускать. Ну или просто резистор на землю подвесить. Сильно зависит от типа микросхемы, под общим наименованием 74hc у разных производителей внутренности микросхем могут сильно отличаться.
Но все равно, что не делай, частота плавать будет. Да и значение частоты надо подбирать из-за большого разброса реальных порогов между логическими уровнями.
Vestibulator-1
27.12.2023 10:10+1Не вижу поводов для споров, в рамках имеющейся конструкции, стабильность частоты не является решающим фактором и решил положить в карман "лишний" таймер, вот такой я жадный человек.
Ваши статьи читал, но имею возможность только раз в сутки поругать или похвалить или спросить, и за это время забываю что собственно хотел сказать.
mlnw
27.12.2023 10:10+1Э как пахнуло олдскулом с времён курса электротехники и электроники из универа (дешифраторы, компараторы, триггеры и это всё). Щас народ даже для мигания светодиодом, бывает, ставит трёхкопеечные МК (впрочем, иногда это даже оправдано). За предложение поставить микросхему типа 555, или не дай бог, мультивибратор могут не так понять :)
Cubus
27.12.2023 10:10+1Оно вроде и абсурдно, но некоторые МК действительно очень дешёвые и в некоторых случаях получается примерно та же цена, что и на микросхемах.
Ну и плюсом получаем возможность правки некоторых багов программно. Я вот очередные Nixie часики делаю, и разумеется, кое-где чуть напортачил с разводкой. Ну и ничего, в коде 4 бита развернул и всё работает.
iig
27.12.2023 10:10+1Оно вроде и абсурдно
Очень редко нужно просто мигать светодиодом. Иногда нужно, чтобы светодиод был 2(3) цветный, менял яркость, мигал ровно N раз, мигал с интервалом в несколько часов.. Все это можно сделать и на мультивибраторах.. но сложно..
LAutour
27.12.2023 10:10+2А что емкости по питанию совсем пожалели?
Lunathecat Автор
27.12.2023 10:10+1Совсем. Возможно, это для того, чтобы испытуемый подумал, что схема работает неправильно из-за помех по питанию.
Anima377
Интересный механизм. Я хоть в электронике и не разбираюсь, но это очень интересно.