Привет, Хабр! Сегодня вашему вниманию предлагается очень интересный радиоконструктор на 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 ?

Комментарии (14)


  1. shiru8bit
    13.06.2024 09:52
    +4

    Вообще, когда работает светофор, главных и второстепенных дорог на перекрёстке нет. Они есть только когда светофора нет (выключен) и дороги не равнозначные.


    1. IvanPetrof
      13.06.2024 09:52

      Есть небольшой нюанс со стрелкой

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


      1. SergeyMax
        13.06.2024 09:52
        +2

        Уступить много кому нужно, например пешикам, или при повороте налево, но тем не менее


  1. nikhotmsk
    13.06.2024 09:52
    +3

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


    1. shiru8bit
      13.06.2024 09:52
      +2

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


      1. nikhotmsk
        13.06.2024 09:52

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

        Вообще светофор вещь не очень хорошая. Это может быть не очевидно, но от него больше аварий (по сравнению с нерегулируемым). Статистика вещь упрямая, можно долго спорить на эту тему.


        1. DGN
          13.06.2024 09:52
          +5

          Приведите аргумент?

          По мне, очевидно, что меньше. И печально, что везде понавтыкали кругов.


        1. GospodinKolhoznik
          13.06.2024 09:52
          +11

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

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


  1. Timick
    13.06.2024 09:52
    +1

    Билл Гейтс тоже со светофоров начинал. На опасную дорожку вы встали.


  1. voldemar_d
    13.06.2024 09:52
    +1

    На фото с тремя конструкторами (светящийся волчок я тоже паял, было дело) есть некий с матрицей из 81 светодиода - это что за девайс?


    1. Lunathecat Автор
      13.06.2024 09:52
      +1

      1. voldemar_d
        13.06.2024 09:52
        +1

        Забавно, маленькие конструкторы, где светодиоды по кругу и в одной маленькой строке, я тоже собирал :-)


  1. ulovka22
    13.06.2024 09:52
    +1

    А в чем практический смысл использования схемы из дискретных элементов вместо универсального контроллера, кроме как для развлечения? На фоне стоимости светофорного объекта разница в цене электроники практически незаметна


    1. Lunathecat Автор
      13.06.2024 09:52

      Для обучения и для развлечения.