Последовательные резисторы в матричных клавиатурах: для чего?

Я видел в некоторых схемах матричных клавиатур использование последовательных резисторов. Я понимаю, что это для ограничения тока, но зачем?

Вот пример, где вы можете видеть, что используются последовательные резисторы на 470 Ом:

Пример схемы

Чем ты!

Ответ может зависеть от того, куда подключены контакты (какой MCU) и какой код управляет контактами. Не могли бы вы добавить эту информацию к вопросу?

Ответы (4)

Клавиатура, которую вы показываете, обычно подключается как:

  • RC.[7:4] на логические входы
  • RC.[3:0] на логические выходы, все линии LOW, кроме одной HIGH, для выбора ROW

Если нажаты клавиши нескольких столбцов, то контакты RC.[3:0] могут быть закорочены вместе, что приведет к перегрузке логических выходов. Резисторы 470R ограничат этот ток. Возможно, это может привести к недопустимому логическому напряжению для входов RC[7:4], но логические драйверы часто не сбалансированы, МАЛАЯ мощность возбуждения отличается от ВЫСОКОЙ мощности возбуждения, поэтому они вполне могут быть не сбалансированы.

Другие решения, которым не нужны резисторы:

  • Привод RC.[3:0] со всеми линиями в трех состояниях, кроме одной HIGH для выбора ROW
  • Используйте диоды вместо резисторов 470R (A=RC.x, K=переключатель)

Оба эти решения управляют несканируемыми строками с высоким импедансом вместо НИЗКОГО.

В вашем вопросе отсутствует много информации, так что это только предположение. . .

RC4 - RC7, вероятно, являются входами (?), поэтому они имеют подтягивающие резисторы. Это означает, что RC0 - RC3 являются выходами (?). Если две или более кнопок в одном столбце нажаты одновременно, высокий выход может быть подключен к низкому выходу - не очень хорошо.

Этот. Я действительно видел реальное устройство, у которого был сломан вывод GPIO строки, вероятно, именно по этой причине. Другой способ избежать этого — использовать выходы с открытым стоком и подтягивающие резисторы на входах, тогда последовательные резисторы не нужны.

Теоретически 470 Ом можно исключить, но коммутируемая емкость может создавать пиковые токи, а ток в установившемся режиме ограничен 10 кОм. Так что, должно быть, была веская причина, чтобы избежать вмешательства.

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

Сканирование массива Classic Matrix 4x4 с 8-битным портом.

  • НЕТ, нормально открытый = 0 Потяните вниз большой R.
  • Закрыто = 1 от верхнего ряда ведущего с меньшим R.

Просканируйте 4 строки и прочитайте 4 столбца.

введите описание изображения здесь

В этом ответе нет ничего неверного, это просто основная информация о сканировании матрицы, и она не пытается ответить на вопрос.
@BenVoigt Я согласен, если вам сложно читать временные диаграммы, в противном случае не согласен, поскольку соотношения резисторов допускают изменения напряжения. Должен ли я объяснить, как делитель напряжения работает с переключателем? На самом деле коммутационная емкость 470 Ом ограничивает ток.
Ваша временная диаграмма была бы одинаково действительна, если бы эти последовательные резисторы были удалены (для короткого замыкания, а не для размыкания цепи). Ограничение тока в емкости, по крайней мере, имеет отношение к наличию последовательного сопротивления.
согласен, спасибо за ваш отзыв @BenVoigt, поэтому я подробно остановился на вашем предложении

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

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

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

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