По профессии я разработчик консольных игр и не имею формального образования в области электроники/электротехники. На игровом жаргоне «нуб», если хотите. И все же у меня появилась новая страсть возиться с этим замечательным ремеслом.
На данный момент я пытаюсь учиться и развлекаться, делая игрушку «светодиод с прокруткой» для своей дочери. Моя идея для этого довольно проста, у меня есть регистр сдвига (SN74HC595) и 8 светодиодов, получающих от него входные данные. Будет две кнопки. Когда кнопка A нажата, она «вставляет» в регистр 1, а когда нажимается B, в регистр вставляется 0. При этом вы можете «запрограммировать свой светодиодный шаблон». А затем, щелкнув другим переключателем, регистр сдвига будет тактирован (используя простой нестабильный мультивибратор RC) (замыкание QH' в QA). Делаем узор для прокрутки. Достаточно просто.
Но моя проблема связана с той частью, которая выполняет «вставку» данных в реестр. Скажем, чтобы вставить 1 в регистр, когда кнопка A нажата и отпущена, я сначала должен перевести линию «SER» (данные) регистра в высокий уровень, а затем после короткого периода времени (время установки, 25 нс для таблицу данных регистра) подтяните SRCLK (часы регистра сдвига) к высокому уровню. Вот и все. Однако..
Мои кнопки переключения не дребезжат. Я узнал о дебаунсинге из этой замечательной статьи: Дебаунсинг . У меня не было никаких частей, которые могли бы помочь мне с истеризисом, поэтому мне пришлось просто игнорировать это. Но с помощью указанных там методов я смог рассчитать точные значения резисторов и цоколя, чтобы поддерживать напряжение в нужном диапазоне, пока мой переключатель лязгает и стучит сам с собой. Переключатель дергается в течение 10 мс (приобрел себе дешевый оптический прицел, китайский. Но работает), поэтому я держу его неподвижно около 20 мс. Мои расчеты и результаты моделирования с помощью Multisim.com совпали. Итак, моя кнопка устранения дребезга работает, как и ожидалось.
За исключением случаев, когда я пытаюсь использовать этот «сигнал». Я должен сделать две вещи с этим сигналом. Сначала направьте его в строку SER реестра. А затем после небольшой задержки (25 нс - несколько мс?) направьте его на линию SRCLK, чтобы синхронизировать его. Другими словами, сначала поднимите SER до высокого уровня, затем поднимите SRCLK до высокого уровня. И для введения этой "задержки" я обратился к единственному известному мне механизму задержки - сети RC. Поэтому, как только я получаю выходной сигнал с подавленным дребезгом, я заряжаю конденсатор через резистор, и этот заряженный выходной сигнал я использую для управления SRCLK.
В тот момент, когда этот новый конденсатор и резистор добавляются в мою «схему подавления дребезга», мои расчеты стоимости деталей больше не верны, потому что новый конденсатор «задержки» и резистор теперь подключены параллельно или последовательно (я даже не знаю больше) с моим хорошим и ранее хорошо работающим конденсатором для устранения дребезга.
Все это затруднительное положение заставляет меня задаться вопросом, правильно ли вообще использовать таймер задержки RC. Как мне подключить вход от коммутатора с отключенным дребезгом к узлу, в котором уже есть конденсатор, не испортив все мои расчеты, или, перефразируя это, как бы вы все реализовали простую задержку сигнала без использования всех причудливых микроконтроллеров и т. д. .?
Вот схема осуждения и задержки. Обратите внимание, что это касается только одной кнопки (а не A и B одновременно). SW2 на первом изображении предназначен только для отладки.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Есть только одна проблема, используемый вами метод устранения дребезга будет делать крайне медленно нарастающие и спадающие фронты сигнала, из-за чего 74HC595 может работать некорректно. В техническом описании чипа говорится, что при напряжении питания 5 В фронты сигнала должны изменяться быстрее, чем 500 нс/В, поэтому для изменения 5 В необходимо использовать не более 2,5 мкс во время перехода (или, может быть, 1,5 мкс в диапазоне от 1,5 В до 3,5 В). )
В статье Ганссле используются резисторы и конденсаторы для фильтрации коротких всплесков в медленно меняющееся напряжение, но в ней также упоминается, что многим микросхемам не нравится, когда они запускаются с медленными фронтами, и это сводится к одному быстрому фронту с помощью логики триггера Шмитта. ворота.
Помимо этого, вы можете использовать триггер Шмитта для возведения в квадрат сигнала для ввода данных, а затем просто использовать быстрый RC-фильтр для задержки сигнала на несколько наносекунд и еще один триггер Шмитта для возведения в квадрат тактового импульса.
Измените схему подавления дребезга в 10 раз, т. е. уменьшите резисторы в 10 раз и увеличьте емкость конденсатора до 1 мкФ. Теперь схема «подавление дребезга» имеет (своего рода) выходной «импеданс» в диапазоне 5–10 кОм, что означает, что следующая за ней схема на 100 кОм будет иметь гораздо меньшее влияние на схему устранения дребезга. (Он будет иметь некоторые, но более управляемые). Если вам нужна еще большая задержка, вы можете следовать схеме 100k с резистором 1M и конденсатором 0,01 мкФ, потому что вы управляете входами HC CMOS, которые имеют чрезвычайно высокое входное сопротивление.
Я не буду комментировать вашу схему устранения дребезга, поскольку, судя по вашим комментариям, она у вас работает. Однако я просто скажу (и могу ошибаться), что диод в вашем дебаунсе мне кажется неправильным (наоборот). Я думаю, что «переключатель будет быстро замыкаться на землю много раз подряд», и первое «короткое замыкание на землю» разрядит конденсатор через диод (если вы перевернете его), но из-за R это требует времени чтобы конденсатор вернулся к V +, следовательно, последующие скачки очень мало делают, поскольку напряжение на крышке все еще близко к нулю. ПОМОЩЬ.
Энди ака
Джитин Вап
Майкл
Джитин Вап