Сдвиговой регистр
С помощью микросхемы, которая называется «сдвиговой регистр» можно сделать такую штуку:
https://youtu.be/-55Nv4NOuzM
У меня подключен сдвиговой регистр 74HC595N:
https://www.chipdip.ru/product/74hc595n
На каждом тике (при мигании синего светодиода) в регистр записывается только один бит – единица. Регистр сдвиговой, потому вся ранее записанная информация (при записи этого бита) сдвигается:
https://robotclass.ru/tutorials/arduino-shift-register/2/
Это и приводит к тому, что на каждом тике горящих зелёных светодиодов становится на 1 больше.
В этой схеме у меня подключено два таймера NE555. Если бы не было второго (с красным светодиодом) то всё интересное закончилось бы после 8-го тика. Все 8 регистров заполнились бы единицами, все светодиоды бы включились и горели бы до выключения питания (ведь в них постоянно записываются единицы).
У микросхемы есть «кнопка RESET», при нажатии на которую сбрасывается вся информация. Её я и «нажимаю» вторым таймером. Зелёные светодиоды гаснут, когда выключается красный светодиод. Это и есть момент сброса – кратковременного отсутствия сигнала на пине №10 (MR).
Сигналы на пинах у меня выглядят так:
Данные (по DS) заливаются синхронно с тиком (SH_CP), потому для загрузки этой информации достаточно сигнала, поступающего с таймера. Но после этой загрузки надо ещё «актуализировать» информацию, тикнув каналом ST_CP:
https://robotclass.ru/tutorials/arduino-shift-register/3/
Это – первая проблема. У меня нет сигнала, идущего с той же частотой, но с «вершиной» чуть позже по времени. Решается это просто, с помощью микросхемы К561ЛА7 (2И-НЕ), которая использовалась тут:
https://akostina76.ucoz.ru/blog/2019-07-31-5959
«НЕ» на выходе любого НЕ возвращает нужную мне единицу, когда на выходе таймера уже 0.
А вот для сброса регистра через каждые 8 тиков мне пришлось подключить второй таймер и синхронизировать его с первым.
Отсюда:
https://static.chipdip.ru/lib/222/DOC000222900.pdf
Схема:
расчётные формулы:
Вся схема подключения такая:
… и самое интересное в ней – соединение нижнего таймера с MR (сбросом) сдвигового регистра.
Необходимые сопротивления резисторов нижнего таймера (43 кОм и 15 кОм) были вычислены по значениям верхнего и формулам:
Верхний таймер настроен так, что вспышка (импульс, HIGH) и выключено (LOW) примерно одинаковы по времени и равны 0.23 секунды. Один цикл – сумма этих периодов. Сбрасывать сдвиговой регистр, вроде бы, надо через 8 циклов. Но оказалось, что не хватает времени, 8-й светодиод не зажигается. Потому время до сброса выбрано как 9 умноженное на один тик верхнего таймера. Конденсатор на нижнем таймере не 10 а 100 мкФ, что и позволило взять не слишком большие резисторы.
|