Реле Tianbo - ресурс 10 млн переключений

Простая схема заменяет программный опрос матричной клавиатуры

STMicroelectronics STM32F100

Журнал РАДИОЛОЦМАН, октябрь 2014

Rick Malley, Independent Designs LLC

Electronic Design

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

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

В схеме использованы восемь цифровых транзисторов – четыре NPN и четыре PNP. При нажатии на выбранную кнопку два транзистора включатся токами, протекающими через их внутренние резисторы. Сгенерированный в результате код, который будет уникальным для каждого ключа, можно считать с помощью простой команды ввода байта. Если разрешить прерывания по изменению состояния всех восьми входов, программа декодирования клавиатуры будет полностью управляться прерываниями.

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

В простейшем варианте все выводы 8-битного порта конфигурируются как входы, а внутренние резисторы подтягиваются к питанию в разрядах 0-3, и к «земле» в разрядах 4-7 (Рисунок 1). Следует сразу оговориться, что такие гибкие настройки поддерживают далеко не все микроконтроллеры. Одним из подобных приборов является STM32F100 компании STMicroelectronics, на котором и был собран прототип схемы, показавший отличные результаты.

Простая схема заменяет программный опрос матричной клавиатуры
Рисунок 1. Для упрощения декодирования матрицы кнопок 4×4 выводы 8-битного
порта сконфигурированы входами, которые подтягиваются к
питанию и к «земле» с помощью внутренних резисторов.

В схеме на Рисунке 2 используются внешние резисторы. Лучше всего взять пару широко распространенных четырехэлементных резисторных матриц – они компактны, недороги, и добавляют к перечню элементов всего два компонента. В большинстве случаев подойдут матрицы с сопротивлением 10 кОм.

Простая схема заменяет программный опрос матричной клавиатуры
Рисунок 2. Альтернативная схема, в которой используются
внешние матрицы резисторов.

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

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Basic Circuit Eliminates Numeric Keypad Polling

46 предложений от 23 поставщиков
Плата разработки проектов и приложений STM32VLDISCOVERY для линейки STM32F100. Основной микроконтроллер STM32F100RB Cortex-M3 24МГц с 128кб флеш и 8кб оперативной памяти....
AliExpress
Весь мир
STM32F072CBT6 STM32F072C8T6 STM32F072C8T7 STM32F091CBT6 STM32F091CCT6 STM32F100C4T6A STM32F100C4T6B STM32F100C6T6B IC
76 ₽
STM32F100RCT6
STMicroelectronics
125 ₽
ChipWorker
Весь мир
STM32F100CBT6
STMicroelectronics
379 ₽
STM32F100VCT6
STMicroelectronics
от 1 454 ₽
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Ну, это перебор. Написать код опроса клавиатуры - неужто так сложно? Если сложно, тогда зачем вообще микроконтроллеры? Чтоб навешивать вот такую кучу внешних деталей вместо того, чтобы обойтись без этого?
  • Не совсем так. Вы, наверное, не обратили внимание на "изюминку" транзисторов [URL="http://www.nxp.com/products/bipolar_transistors/resistor_equipped_transistors_rets/ret_100_ma_50_v/ret_100_ma_50_v_single_npn/series/PDTC124E_SERIES.html"]PDTC124[/URL], [URL="http://www.nxp.com/products/bipolar_transistors/resistor_equipped_transistors_rets/ret_100_ma_50_v/ret_100_ma_50_v_single_pnp/series/PDTA124E_SERIES.html"]PDTA124[/URL], у которых на кристалле есть пара резисторов 20-40кОм. А значит, внешних элементов в схеме для матрицы 4*4 всего 8. Ровно столько, сколько потребовалось бы резисторов и диодов (по 4 штуки) для организации "классической схемы". Правда, эти резисторы и диоды рекомендуют устанавливать только на период отладки, но большинство разработчиков оставляют их на платах на всякий случай. Поскольку абсолютный минимализм - строки и столбцы прямо на выводах МК - может привести к неприятным последствиям при ошибке программиста, даже при сканировании через Z-состояние c изменением направления входов/выходов [code]void columns_to0_rows_to1(void); void columns_to1_rows_to0(void); void columns_rows_toZ(void); uint8_t get_row_number(void); uint8_t get_column_number(void); uint8_t get_button_number(void);[/code] Когда не требуется отслеживать сложные "аккорды" на клавиатуре (скажем, двойное/тройное нажатие/удержание), опрос на прерываниях оправдан в плане своей асинхронности, поскольку иногда МК загружен так, что выделить каждые 10-20мс даже 30-40 тактов при непрерывном опросе по таймеру - нет возможности. А вообще, тема эта благодатная, ведь существует масса гибридных программно/аппаратных вариантов опроса кнопок, продиктованных инженерным гением :-) В любой ситуации можно найти равновесное количество "за" и "против".
  • Давно известная, рабочая схема. Помню, еще лет 20 назад применялась в простых зарубежных кнопочных телефонах. Я удивлялся - матрица есть, а опроса нет. Потом догадался, как устроено. Предложенный вариант схемы не совсем оптимальный. Можно сократить число транзисторов в 2 раза и достаточно порта с подтяжкой только в одну сторону.