Pull to refresh
2539.59
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Тайны китайских светофоров

Level of difficultyMedium
Reading time8 min
Views14K


Привет, Хабр! Сегодня вашему вниманию предлагается очень интересный радиоконструктор на 12 логических микросхемах, реализующий функции контроллера светофора.

Ранее мы уже собирали простой контроллер светофора на трёх прецизионных интегральных таймерах КР1006ВИ1 (NE555) и одном счетверённом логическом элементе 2И-НЕ К561ЛА7 (CD4011).



Такой вариант схемы гораздо проще сегодняшнего, однако обладает множеством недостатков, являющихся платой за простоту.

Здесь два ждущих мультивибратора на таймерах U1 и U2 просто перезапускают друг друга через транзисторы Q1 и Q3.



При логической единице на выходе Q таймера U1 открывается транзистор Q2, и автомобилям на горизонтальной улице светит зелёный, а на вертикальной — красный. При высоком уровне на выходе U2 всё наоборот — открывается Q4, горит зелёный на вертикальной улице и красный на горизонтальной.

Когда один из таймеров находится в состоянии высокого уровня, то второй всегда сброшен благодаря открытому транзистору. Иными словами, ситуация, когда на обеих перпендикулярных улицах автомобилям светит зелёный сигнал светофора, исключена.

Лампы (светодиоды) жёлтого света всех четырёх светофоров соединены параллельно. Чтобы включился и замигал жёлтый свет, необходима логическая единица на входе сброса таймера U4.

Для этого нужен низкий уровень напряжения хотя бы на одном из входов логического элемента 2И-НЕ U3C.

В состоянии сброса времязадающий конденсатор (С1 или С3) шунтирован открытым разрядным транзистором своего таймера, находящимся в состоянии насыщения.

Когда сигнал сброса снимается, времязадающий конденсатор таймера начинает заряжаться через последовательно соединённые резисторы — подстроечный R5 (R6) и ограничительный R18 (R14). Таймер переходит в состояние логической единицы на выходе.

Всё время, пока продолжается это состояние, транзистор Q2 (Q4) открыт, а конденсатор С2 (С4) остаётся заряженным до напряжения источника питания минус падение на верхнем плече выходного буфера U1 (U2) и диоде D2 (D8).

Поэтому на верхнем по схеме входе логического элемента U3A (U3B) будет низкий уровень напряжения, а на нижнем — высокий. Соответственно на выходе высокий уровень.

Как только времязадающий конденсатор С1 (С3) зарядится до двух третей напряжения питания, сработает встроенный компаратор таймера, и произойдёт его сброс в состояние низкого уровня напряжения на выходе.

Получаются логические единицы на обоих входах элемента U3A (U3B) и, соответственно, логический ноль на его выходе до тех пор, пока конденсатор С2 (С4) не разрядится через резисторы R15 и R3 (R17 и R4). После чего на выходе U3A (U3B) будет высокий уровень напряжения.

Итак, жёлтый свет включится и будет мигать после каждого переключения с красного на зелёный в течение промежутка времени, определяемого положением бегунка подстроечного резистора R3 или R4.

Гашения или мигания красного или зелёного сигнала на время включения жёлтого эта схема не предусматривает. Получился весьма примитивный светофор.

▍ Улучшенный алгоритм


Более приближёнными к Правилам дорожного движения (в их китайской редакции, так как мы собираем учебный радиоконструктор, разработанный и выпущенный в Китае) являются следующие тезисы.

  1. Проезд по главным и второстепенным дорогам (или ответвлениям главных дорог) разрешён попеременно. Каждый раз по главным дорогам разрешено движение в течение 30 секунд, а по второстепенным дорогам — в течение 20 секунд.
  2. Зелёный свет указывает на то, что проезд разрешён, а красный свет указывает на то, что движение запрещено.
  3. Каждый раз, когда зелёный свет светофора меняется на красный, сначала на 5 секунд загорается жёлтый свет. В это время красный свет на перпендикулярной дороге продолжает светить, но не непрерывно, а мигает с частотой 1 Гц.
  4. На перекрёстке должно быть цифровое табло, отображающее оставшееся время зелёного света или время ожидания разрешения проезда. Требуется, чтобы время проезда перекрёстка в направлении главных и второстепенных дорог и время включения жёлтого света отсчитывались в секундах.

▍ Блок-схема устройства


Для реализации поставленной задачи нам потребуются следующие функциональные блоки.



Задающий генератор тактовых импульсов стабильной частоты гарантирует синхронную работу всех подсистем управления светофором.

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

У нашей модели светофора таких возможных состояний четыре, и их последовательность следующая:
  1. Зелёный свет на главной дороге и красный на второстепенной — двоичный код 00, продолжительность 30 секунд.
  2. Жёлтый свет на главной дороге и мигающий красный на второстепенной — код 01, продолжительность 5 секунд.
  3. Красный свет на главной дороге и зелёный на второстепенной — код 10, продолжительность 20 секунд.
  4. Мигающий красный свет на главной дороге и жёлтый на второстепенной — код 11, продолжительность 5 секунд.

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

Декодер состояния расшифровывает двухразрядный двоичный код с выхода главного контроллера и зажигает соответствующие сигналы светофоров, а также управляет субмодулем мигания красного света.

Теперь нам предстоит воплотить эту структурную схему в работающее электронное устройство.

▍ Продвинутая схема светофора


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


▍ Генератор секундных импульсов


Практически любое цифровое устройство начинается с тактового генератора, и наш сегодняшний контроллер светофора — не исключение.

Как и во многих случаях, где нужно медленное тактирование с низкой частотой, здесь применён самый стандартный вариант — генератор незатухающих колебаний прямоугольной формы, то есть, мультивибратор на всё том же прецизионном интегральном таймере NE555.

Частоту следования тактовых импульсов можно регулировать при помощи подстроечного резистора RP. В реальном светофоре должен быть один импульс в секунду, а для демонстрационного видео можно ускорить работу модели.



Такая же схема тактового генератора применена в:



▍ Центральный командоаппарат


Главный контроллер нашей модели светофора — это просто двухразрядный двоичный счётчик, для реализации которого использована микросхема CD4510.

Эта микросхема представляет собой двоично-десятичный счётчик с возможностью инкрементного и декрементного счёта, а также непосредственного ввода данных. Таблица истинности для данного счётчика представлена на нижеприведённом рисунке.



В схеме модели светофора функция непосредственного ввода данных использована для самосброса счётчика при достижении числа 4 = 110b. Входы данных P0..P3 соединены с общим проводом, а вход разрешения ввода данных PE — с выходом третьего двоичного разряда Q2.



С таким же успехом можно было бы соединить PE с землёй, а RST — с Q2.

Вход выбора режима U/¬D подключён к плюсу питания, чтобы перевести микросхему в режим инкрементного счёта. А тактируется микросхема U9 сигналом смены состояния со счётчика секундных импульсов.

Выход каждого из двух двоичных разрядов главного контроллера представлен как в прямом, так и в инвертированном виде, для чего использованы логические элементы НЕ U5C и U5D. Зачем это нужно, мы сейчас увидим.

▍ Декодер состояния


Если оформить правила работы светофора из технического задания в виде таблицы истинности, то она будет иметь следующий вид.



Прописными латинскими буквами обозначены состояния ламп светофора главной дороги, а строчными — второстепенной. Логическая единица соответствует зажжённой лампочке (светодиоду), а логический ноль — погашенной.

Запишем уравнения булевой алгебры для состояний светодиодов модели.

R = (Q1&¬Q0) | (Q1&Q0) = Q1.
Y = ¬Q1&Q0.
G = ¬Q1&¬Q0.
r = (¬Q1&¬Q0) | (¬Q1&Q0) = ¬Q1.
y = Q1&Q0.
g = Q1&¬Q0.

Итак, для реализации декодера состояний при наличии прямых и инвертированных выходов разрядов главного контроллера нам понадобится шесть двухвходовых логических элементов И.

Почему шесть, а не четыре? Ведь красный свет для главной дороги, согласно таблице истинности, зажигается просто логической единицей Q1, а красный для второстепенной дороги — логическим нулём Q1.

Дело в том, что красный должен мигать, когда на перпендикулярной дороге горит жёлтый. Поэтому условием зажигания каждого из двух красных светодиодов является не только соответствующее состояние старшего разряда командоаппарата, но и уровень сигнала с контроллера мигания, который может быть как постоянной логической единицей, так и секундными импульсами.



Так как декодер состояния реализован на логических элементах 2И-НЕ вместо 2И, светодиоды подключены анодами к плюсу питания через резисторы по 470 Ом, а катодами к выходам четвертинок микросхем U6, U7 и U8 типа CD4011 (К561ЛА7).

▍ Контроллер мигания


Согласно таблице истинности нашей модели светофора, жёлтый свет на главной дороге горит в состоянии с двоичным кодом 01, а на второстепенной — в состоянии с кодом 11.



При этом в состоянии 01 красный должен мигать на светофоре второстепенной дороги, а 11 — на главной. Таким образом, условием мигания красного является логическая единица на линии Q0.

Итак, для реализации контроллера мигания достаточно одного логического элемента 2И-НЕ U8B. При логическом нуле на Q0 на выходе U8B всегда высокий уровень напряжения, а в противном случае — инвертированные секундные импульсы с тактового генератора.



Сигналы ¬G и ¬g выводятся из декодера состояния в целях определения длительности следующего этапа алгоритма.

▍ Счётчик тактов


Модуль отсчёта секунд в нашей модели светофора построен практически идентично схеме новогоднего цифрового таймера.



Отличие состоит в том, что сегодня в качестве микросхем реверсивного двоично-десятичного счётчика мы используем не CD40192, а такие же CD4510, как применённая в главном командоаппарате.

В отличие от последнего, здесь мы осуществляем обратный, то есть, декрементный отсчёт секунд, начиная с числа, задаваемого кодом состояния светофора.

▍ Задатчик длительности этапа


Для этого авторы радиоконструктора применили три восьмиразрядных двунаправленных драйвера параллельной шины 74LS245.

Работа таких микросхем очень простая: уровень сигнала на входе DIR задаёт направление передачи данных, а логическая единица на запрещающем входе переводит все выходы в третье состояние с высоким сопротивлением.



Итак, что нужно сделать для программирования нашего таймера обратного отсчёта? Во-первых, следует присоединить вход выбора направления к плюсу питания, чтобы задать передачу данных от А к В.

Во-вторых, нужно подтянуть соответствующие выводы группы А каждой микросхемы к плюсу питания или земле так, чтобы получились двоично-десятичные числа 30 = 00110000b, 20 = 00100000b и 05 = 00000101b.

В-третьих, соответствующие выводы группы В всех микросхем соединяем параллельно, образуя восьмиразрядную шину, подключенную к входам данных реверсивных двоично-десятичных счётчиков.

И наконец, в-четвёртых, сигнал ¬Q0 подаём на запрещающий вход драйвера шины, кодирующего число 05, ¬G — соответственно, на число 30, и ¬g — на число 20.


В момент, когда оба двоично-десятичных счётчика досчитают до нуля, формируется сигнал для загрузки длительности следующего этапа алгоритма и инкремента состояния главного командоаппарата.

▍ Поехали!


Как и цифровой частотомер из предыдущей статьи, данный радиоконструктор не содержал ошибок принципиальной схемы и печатной платы. Модель светофора заработала сразу при первом включении, что можно наблюдать на видео.

Напишите в комментариях, зачем нужен триггер на паре логических элементов U6B и U6C в средней части принципиальной схемы.

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
Tags:
Hubs:
+37
Comments15

Articles

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds