Эксперимент 22. Кто быстрее?
Следующий проект с использованием цифровых логических микросхем познакомит нас с концепцией обратной связи, когда выходной сигнал подается обратно, чтобы влиять на вход — в данном случае, блокируя его. Устройство будет небольшим, но довольно изящным, а полученные сведения пригодятся вам в будущем.
Что вам понадобится
• Макетная плата, монтажный провод, кусачки, инструмент для зачистки проводов, мультиметр
• Источник питания на 9 В (батарея или сетевой адаптер)
• Логическая микросхема 74НС32 (1 шт.)
• Таймеры 555 (2 шт.)
• Однополюсные ползунковые переключатели на два направления (2 шт.)
• Кнопки (2 шт.)
• Резисторы с номиналами 220 Ом (1 шт.), 2,2 кОм (1 шт.) и 10 кОм (3 шт.)
• Конденсаторы емкостью 0,01 мкФ (2 шт.), 0,1 мкФ (1 шт.) и 0,33 мкФ (1 шт.)
• Стабилизатор напряжения LM7805 (1 шт.)
• Стандартные светодиоды (2 шт.)
• Слаботочный светодиод (1 шт.)
Цель проекта
В телевикторинах участники соревнуются в ответах на вопросы. Первый человек, который нажмет кнопку ответа, автоматически блокирует других участников таким образом, что их кнопки становятся неактивными. Как собрать схему, которая делает то же самое?
Если вы поищете в онлайн-источниках, то найдете достаточное количество любительских сайтов, предлагающих устройства, работающие подобным образом, но они будут лишены возможностей, которые я считаю необходимыми. Подход, который я собираюсь предложить, одновременно прост и тщательно продуман. Он прост, потому что содержит очень мало микросхем, но в то же время предусматривает «контроль со стороны ведущего», чтобы сделать игру более реалистичной.
Сначала мы проверим идею в варианте с двумя игроками. После этого я покажу, как его можно расширить для четырех и более игроков.
Формулировка концепции
Мне хотелось бы показать, как проекты подобного рода вырастают из начальной идеи. Я надеюсь, что, проведя вас по стадиям разработки схемы, смогу вдохновить вас на реализацию в будущем собственных идей, которые окажутся более значимыми, чем простое копирование чьей-то работы.
Вначале рассмотрим основную концепцию: есть два человека, у каждого кнопка, кто первым нажмет свою кнопку, тот блокирует другого.
Иногда, если нарисовать эскиз, то он помогает лучше понять замысел, поэтому я начну с него. На рис. 4.108 сигнал от каждой кнопки проходит через воображаемый компонент, который я буду называть «блокиратором кнопки», активируемый кнопкой другого человека. Я пока не знаю наверняка, каким будет этот блокиратор кнопки и как он станет действовать, но сразу ясно, что при нажатии кнопки одним из игроков, он заблокирует кнопку другого игрока.
Теперь, когда передо мной эскиз, я сразу вижу проблему. Если потребуется расширить схему для трех игроков, она усложнится, потому что каждый игрок должен активировать блокираторы кнопок двух оппонентов, а если игроков станет четыре, то каждый должен активировать блокираторы кнопок трех оппонентов. Взаимосвязи существенно усложнятся (рис. 4.109).
Рис. 4.108. Основная концепция: игрок, который отвечает первым, блокирует другого
Каждый раз, когда я вижу подобные сложности, то предполагаю, что существует лучший альтернативный способ.
К тому же, есть еще одна неприятность. После того как игрок снимает палец с кнопки, кнопки других игроков снова разблокируются. Это наталкивает на мысль о том, что мне понадобится триггер с фиксацией (как и в экспериментах 15, 19 и 21). Его задачей станет поддержание сигнала от кнопки первого игрока и продолжение блокирования других игроков, даже после того как первый игрок отпустит кнопку.
Рис. 4.109. Увеличение числа участников с двух до трех усложняет взаимосвязи более чем в два раза
Теперь все кажется еще сложнее. Но погодите. Если кнопка победителя запускает триггер, он поддерживает цепь победителя под напряжением, то кнопка победителя становится ненужной. Таким образом, триггер может блокировать все кнопки. Это существенно упрощает дело. Можно резюмировать сказанное в виде такой последовательности событий:
• Первый игрок нажимает кнопку.
• Его сигнал блокируется.
• Зафиксированный сигнал передается далее и блокирует все кнопки.
Новый набросок (рис. 4.110) поясняет эту идею. Теперь схема стала модульной, и ее можно расширять почти на любое количество игроков, просто добавив больше модулей без усложнения основной цепи.
Рис. 4.110. Триггер теперь блокирует все кнопки
Есть, однако, одно серьезное упущение: необходим переключатель сброса, который возвращает систему в исходное состояние после того, как игроки нажмут кнопки и увидят кто победил. Также мне нужен способ предотвратить преждевременное нажатие кнопки до того, как ведущий закончит задавать вопрос. Возможно, я смогу скомбинировать эти функции в одном из переключателей, который будет под управлением ведущего.
Посмотрите на рис. 4.111. В положении «Сброс» переключатель ведущего может сбросить систему и отключить питание кнопок. В положении «Игра» переключатель прекращает удерживать систему в режиме сброса и подает питание на кнопки. Я вернулся к демонстрации версии для двух игроков, чтобы сделать все как можно проще, но концепцию по-прежнему легко расширить.
Теперь я должен решить логическую проблему. В том виде, как нарисована схема, на ней все соединено вместе. Я показал направление сигналов стрелками, но пока не знаю, каким образом остановить прохождение сигнала в неправильном направлении. Если я не решу эту проблему, сигнал любого игрока будет зажигать оба светодиода. Как можно избежать этого?
Рис. 4.111. Теперь ведущий может управлять игрой
Я мог бы поставить диоды в идущие «наверх» провода, чтобы ток не мог спускаться «вниз». Но у меня есть более элегантная идея: добавить элемент ИЛИ, потому что его входы электрически отделены друг от друга. Предлагаемое решение продемонстрировано на рис. 4.112.
Базовый логический элемент ИЛИ имеет только два входа. Ограничит ли это меня в увеличении количества игроков? Нет, поскольку можно купить элемент ИЛИ с тремя, четырьмя или даже с восьмью входами. Если хотя бы на одном из них окажется высокий уровень, то и на выходе будет высокий уровень. Если игроков меньше, чем входов, вы заземляете неиспользуемые входы и игнорируете их.
Рис. 4.112. Добавление элемента ИЛИ изолирует цепь одного игрока от другого
Теперь у меня есть четкое представление о том, каким должен быть блокиратор кнопки. Я думаю, что это должен быть еще один логический элемент. Он действует так: «Если есть только один входной сигнал, от кнопки, я его пропущу. Но если будут и другие входные сигналы, я не позволю им пройти».
Прежде чем я начну выбирать логические элементы, следует решить, каким должен быть триггер с фиксацией. Можно купить готовый триггер, который включается, если получает один сигнал, и выключается, если получает другой, однако микросхемы, содержащие триггеры, имеют множество дополнительных функций, которые не нужны для такой простой схемы, как эта. Поэтому я снова собираюсь использовать таймеры 555 в бистабильном режиме. Они требуют малого количества соединений, работают очень просто и могут обеспечивать ток достаточной силы, чтобы зажечь светодиоды. Единственная проблема заключается в том, что в бистабильном режиме таймерам 555 необходим:
• низкий уровень на входе запуска, чтобы создать высокий уровень на выходе.
• низкий уровень на входе сброса, чтобы обеспечить низкий уровень на выходе.
Получается, что кнопка каждого игрока должна будет генерировать отрицательный импульс вместо положительного. Это будет удовлетворять требованиям таймеров.
Вот, наконец, упрощенная схема (рис. ЦВ-4.113). Я хочу показать контакты таймеров 555 в их правильном положении, поэтому пришлось немного передвинуть компоненты, чтобы уменьшить количество пересечений проводов, но вы поймете, что логически это та же самая схема.
Мне не хватило места для добавления символов плюса и минуса, чтобы показать, в каких состояниях находятся выводы таймера, и поэтому красный кружок означает, что вывод находится в высоком состоянии, а синий означает низкое состояние. Черные кружки означают, что состояние вывода может меняться. Белые кружки означают, что состояние этих выводов не имеет значения, и они могут оставаться неподключенными.
Прежде чем вы попробуете собрать предлагаемую схему, проверьте ее работоспособность теоретически, поскольку на конечном этапе ошибок не должно возникнуть. Важный момент, который следует учесть: таймеру 555 необходим отрицательный уровень на запускающем выводе, чтобы создать положительный уровень на выходе. Это означает, что когда любой из игроков нажимает кнопку, она должна выдавать инверсный сигнал.
Это немного трудно для интуитивного понимания, поэтому я привожу четыре рисунка (рис. ЦВ-4.114-4.117), демонстрирующие работу схемы.
Рис. ЦВ-4.113. Предварительная логическая схема. Синие выводы таймеров находятся в низком состоянии, красные — в высоком, белые выводы не используются
На первом шаге переключатель ведущего находится в положении сброса. Низкое напряжение на выводах сброса таймеров обеспечивает низкие уровни на их выходах. Выходы соединены со светодиодами (которые выключены) и входами логического элемента ИЛИ1. Поскольку на его входах низкий уровень, то и на выходе тоже низкий уровень. Однако элементы ИЛИ2 и ИЛИЗ игнорируют этот сигнал, поскольку один вход у каждого из этих элементов находится в высоком состоянии, которое обеспечивают подтягивающие резисторы рядом с кнопками. Вспомните о том, что если любой из входов элемента ИЛИ высокий, то выход тоже высокий. А пока запускающий вход таймера, работающего в бистабильном режиме, находится под высоким потенциалом, таймер запускаться не будет. Схема находится в стабильном состоянии.
На втором шаге ведущий задал вопрос и переместил свой переключатель вправо, соединяя кнопки игроков с отрицательной шиной. Тем не менее, никто из игроков еще не ответил, поэтому подтягивающие резисторы поддерживают схему в стабильном состоянии и уровни на выходах таймеров низкие.
Рис. ЦВ-4.114. Шаг 1. Состояние сброса
На третьем шаге игрок 1 нажал кнопку слева. Это посылает низкий импульс к элементу ИЛИ2. Теперь на обоих входах этого элемента присутствует низкий уровень и его выход становится низким. Этот сигнал поступает на запускающий вход таймера, находящегося слева. Но компоненты не реагируют мгновенно, и таймер еще не обработал сигнал.
На четвертом шаге, спустя несколько микросекунд, таймер сработал и выдал положительный выходной сигнал, который включает светодиод и поступает на вход элемента ИЛИ1. Теперь на входе этого элемента высокий уровень, следовательно, такой же уровень будет и на выходе. Этот сигнал поступает к входам элементов ИЛИ2 и ИЛИЗ, после чего на их выходах устанавливается высокий уровень. В результате на запускающих входах обоих таймеров теперь тоже высокий потенциал. Нажатие кнопки любым из игроков теперь будет проигнорировано, поскольку на выходе элемента ИЛИ1 продолжает сохраняться высокий уровень.
Рис. ЦВ-4.115. Шаг 2. Кнопки игроков активны, но ни один из них еще не нажал кнопку
Замечание
Помните о том, что когда таймер 555 работает в режиме триггера, низкий уровень на его запускающем входе будет переключать выход в высокое состояние, и оно будет оставаться таким же, даже если запускающий вывод снова станет высоким.
Единственное условие, при котором уровень на выходе таймера 555 станет низким, — подача низкого уровня на вывод сброса. Это произойдет только тогда, когда ведущий вернет свой переключатель в положение сброса.
Есть только одна ситуация, которая может омрачить этот прекрасный сценарий. Что если оба игрока нажмут свои кнопки абсолютно одновременно? В мире цифровой электроники это крайне маловероятно. Но если каким-либо образом это произошло, должны сработать оба таймера и зажечься оба светодиода, демонстрируя, что произошло совпадение.
Рис. ЦВ-4.116. Шаг 3. Игрок слева нажал кнопку, но таймер 555 пока не среагировал
На телевикторине вы никогда такого не увидите. Я подозреваю, что если их электронная система регистрирует одновременный ответ от двух участников, то, возможно, она имеет функцию случайного выбора одного из них. Конечно же, это просто предположение.
Чтобы показать, как можно усовершенствовать устройство при необходимости включить в игру дополнительных участников, я изобразил упрощенную схему для трех игроков на рис. ЦВ-4.118. Эту схему можно расширять и далее, единственное ограничение — количество доступных входов у элемента ИЛИ1.
Рис. ЦВ-4.117. Шаг 4. Ответ игрока слева теперь блокирует игрока справа
Рис. ЦВ-4.118. Схему можно легко расширить для большего числа игроков
Сборка макета
На рис. 4.119 я переделал схему под реальную микросхему ИЛИ, изобразив все по возможности близко к конфигурации на макетной плате, чтобы вы смогли легко ее собрать. Макет устройства показан на рис. 4.120, а номиналы и расположение компонентов — на рис. 4.121.
Поскольку я использовал только логические элементы ИЛИ, всего их три, мне понадобилась лишь одна логическая микросхема 74НС32, которая содержит четыре двухвходовых элемента ИЛИ. (Я заземлил входы четвертого.) Два элемента ИЛИ в левой части микросхемы выполняют те же функции, что и элементы ИЛИ2 и ИЛИЗ в моей упрощенной схеме, а элемент ИЛИ внизу справа работает как элемент ИЛИ1, получая входной сигнал от вывода 3 каждого таймера 555. Если у вас есть все компоненты, то собрать все воедино и проверить схему можно достаточно быстро.
Возможно, вы обратили внимание на то, что я добавил конденсатор емкостью 0,01 мкФ между контактом 2 каждого таймера 555 (вход) и отрицательной шиной. Зачем? Когда я тестировал эту схему без конденсаторов, то иногда обнаруживал, что один или оба таймера 555 срабатывают от переключателя ведущего, без нажатия кнопок.
Рис. 4.119. Схема устройства для двух игроков на микросхеме с четырьмя двухвходовыми элементами ИЛИ
Рис. 4.120. Макет устройства
Рис. 4.121. Номиналы и расположение компонентов на макетной плате
Вначале это меня озадачило. Как таймеры могут запускаться, если никто ничего не сделал? Возможно, это реакция на дребезг в переключателе ведущего, т.е. на очень быструю вибрацию контактов при переключении рукоятки тумблера. Почти наверняка так и было, и конденсаторы небольшой емкости решили эту проблему. Правда, в результате скорость срабатывания таймеров 555 немного уменьшилась, но не настолько сильно, чтобы нарушить правильную работу устройства.
Что касается дребезга контактов кнопок, то он не влияет, потому что каждый таймер переключается при первом же импульсе и игнорирует любые последующие колебания.
В порядке эксперимента можно собрать эту схему без конденсаторов 0,01 мкФ и подвигать ручку переключателя ведущего вверх и вниз множество раз. Поскольку я рекомендовал дешевый ползунковый переключатель, то полагаю, что вы увидите много ложных срабатываний. Я подробнее расскажу о дребезге переключателя и о том, как с ним справиться, в следующем эксперименте.
Что можно улучшить
После того как схема собрана на макетной плате, приступая к изготовлению устройства, советую вам расширить возможности, чтобы в игре могли принимать участие по меньшей мере четыре игрока. Для этого потребуется элемент ИЛИ с четырьмя входами. Очевидный выбор — микросхема 74HC407S, поскольку она позволяет задействовать до восьми входов. Только не забудьте подключить неиспользуемые входы к отрицательной шине.
Рис. 4.122. Три двухвходовых элемента ИЛИ могут имитировать один четырехвходовый элемент ИЛИ
Как вариант, если у вас уже есть пара микросхем 74НС32 и вы не хотите утруждать себя заказом микросхемы 74НС4078, то можно подключить три элемента внутри одной микросхемы 74НС32 так, чтобы они работали как четырехвходовый элемент ИЛИ. Взгляните на логическую диаграмму на рис. 4.122, где показаны три элемента ИЛИ, и вспомните о том, что выход каждого элемента ИЛИ становится высоким, если хотя бы один вход высокий.
И заодно подумайте, как скомбинировать три двухвходовых элемента И, которые смогут заменить четырехвходовый элемент И?
Для игры с четырьмя участниками вам понадобятся, конечно же, два дополнительных таймера 555, два светодиода, а также еще две кнопки.
Что касается схемы для игры с четырьмя участниками — оставляю ее разработку на ваше усмотрение. Начните с наброска упрощенной версии, показывающей только логические символы. Затем преобразуйте ее в компоновку макетной платы (это будет сложнее).
Совет
На мой взгляд, карандаш, бумага и ластик могут быстрее привести к результату, чем программное обеспечение для моделирования схем или для графического дизайна.