Сканирование матричной клавиатуры с помощью 74LS194

Я пытаюсь сканировать матричную клавиатуру с помощью 74LS194. Система работает таким образом, ниже приведена схема, подтверждающая объяснение:

  1. Параллельная загрузка выполняется для вставки «1» для сдвига (загрузка).
  2. Система продолжает смещать «1» до тех пор, пока не будет нажата клавиша (!KeyDetected)
  3. Когда клавиша нажата (!KeyDetected), бит удерживается, чтобы позволить системе прочитать значения строки и столбца.
  4. Как только клавиша не нажата, бит перестает удерживаться и снова смещается.

Пользователь никогда не будет нажимать более одной клавиши одновременно.

В симуляторе (протеусе) работает нормально. В схеме, которую я построил вокруг конструкции с микросхемами LS TTL и резисторами 1k, я получаю проблему.

Для некоторых нажатий система работает нормально, но после некоторых нажатий, когда клавиша не нажата, регистр выдает '0' на всех выходах.

Я уже несколько дней ищу все пины на осциллографе и ничего не ясно. По какой-то причине бит потерян.

Это показания осциллографа на выходе при нажатии клавиши. Судя по всему, он находится в пределах: Чтение осциллографа.

Я спрашиваю причину этой проблемы, чтобы я мог ее исправить

Система сканирования клавиатуры

Спасибо!

Привет, это сайт вопросов и ответов, какой у вас вопрос? Пожалуйста, отредактируйте и добавьте вопрос к вашему вопросу.
For some reason, the bit is lost.... подумайте о том, что может привести к смещению бита за Q3
@jsotola, Q3 подключен к SR, чтобы он продолжал переключаться, и это происходит для некоторых нажатий ...
это был намек ... дополнительный тактовый импульс в неподходящее время заставил бы бит исчезнуть ... Q4, пониженный в неподходящее время, может сделать это, если вы полагаетесь на рециркуляцию
Вы просто запускаете схему в симуляторе или на самом деле построили ее с чипом LS TTL и резисторами 1k?
@Justme, в симуляторе (proteus) работает нормально. В схеме, которую я построил вокруг конструкции с микросхемами LS TTL, и резисторами 1k я получаю проблему.

Ответы (1)

Согласно техническому описанию микросхемы 74LS194, рекомендуемый максимальный выходной ток источника составляет 0,4 миллиампер, что гарантирует выходное напряжение от 2,7 до 3,5 вольт.

Это означает, что ваши подтягивающие резисторы 1 кОм слишком сильно нагружают выход, и вход может больше не определять его как логическую 1. Кроме того, на схеме нет шунтирующих конденсаторов, поэтому, если в вашей схеме нет шунтирующих конденсаторов, она может работать неправильно.

Спасибо! Удаление резисторов решит проблему?
@ Джеймс221 я ОЙ "=" 400 мю А является стандартным соответствием току источника для деталей LS TTL. См. этот график . Также обратите внимание на В ОЙ и В ИХ . Там только о, худшем случае, 400 мВ разделение при загрузке вниз на 400 мю А . Не большой запас по шуму или запас в целом. Просто убедитесь, что вы тщательно прорабатываете эти детали. Это также будет включать в себя просмотр таблицы данных MCU.
Ваша текущая схема работает против сильных сторон TTL - измените свою логику так, чтобы низкий логический уровень использовался для выбора строки с подтягивающим резистором на столбцах - TTL имеет лучший сток, чем характеристики источника. Вы увидите это в старом школьном дизайне. Кроме того, вы можете добавить последовательные диоды в ряды, чтобы многократные нажатия клавиш не приводили к короткому замыканию выходов LS194.
@Kartman Или просто переключитесь на устройства с открытым коллектором, которые мы использовали в старых школьных проектах, а также это были самые первые детали, которые TI позаботилась о том, чтобы мы были доступны и тогда. Мы почти никогда не использовали выходы TTL для сканирования клавиш. (И три государства были чем-то вроде предмета роскоши, который появился спустя годы.)
@jonk - я не могу вспомнить слишком много регистров сдвига TTL с выходами с открытым коллектором. Обычно счетчик с 7445 или новее LS156. Не забывая 7406/07.
@Kartman Их нет. Скорее всего, мы бы использовали 74LS156. Он будет самосинхронизирующимся, и мы будем использовать 3-входовой логический элемент И для обнаружения STOP на ключе и использовать его в качестве сигнала для захвата строки и столбца и блокировки (через логический элемент И) часов.
И добавь 555 на всякий случай.
Я добавил к вопросу показания осциллографа, похоже, они находятся в пределах того, что считается логической «1».
@ James221 да, это доказывает, что при нажатии кнопки он подключает резистор 1 кОм между выходом и землей, поэтому он слишком сильно нагружает выход и приводит к недопустимым напряжениям. Так что не делай этого.
Да, еще более сильное понижение нагрузки приведет к еще большей неразумной нагрузке на выход и значительно ухудшит выходной сигнал.
Здравствуйте, заменил 1к пулл-даун на 180 ом пулл-даун, и это еще хуже, значение на выходе падает настолько, что при первом же нажатии бит уже теряется. Я, конечно, упускаю из виду базовые концепции аналоговой электроники первого курса. Должен ли я увеличить значение вместо этого?
@Justme, я изменил их с 1 кОм на 180 Ом, поэтому в результате я сделал тягу слабее, и стало еще хуже.
Нет, вы не сделали его слабее, вы сделали его еще сильнее, примерно в 5 раз сильнее.
2.2к мне помогло. Спасибо!
Просто имейте в виду, что нагрузка в 2,2 КБ по-прежнему превышает рекомендуемые пределы чипа.
@Justme, согласно этому сайту electronics-tutorials.ws/logic/pull-up-resistor.html , это должно быть 2k, я думал, что 2,2k будет хорошим приближением.
Конечно, 2k может быть подходящим значением в качестве значения подтягивающего резистора для входа микросхемы TTL. Но чип TTL не может управлять резистором 2k в качестве нагрузки с достаточно высоким напряжением, чтобы вход TTL определил его как высокий логический уровень.
@Justme, Хорошо, допустим, я хочу вывести 3 В, зная, что выходной ток составляет 0,4 мА, номинал резистора должен быть 7,5 кОм по закону Ом. Я прав?
Я пробовал несколько значений резистора, после нескольких нажатий рано или поздно он выходит из строя. Может быть, это также какая-то проблема на логическом уровне?