Малопотребляющий двухпроводный интерфейс клавиатуры 4х4

Если в микроконтроллере есть АЦП, с его помощью можно создать двухпроводный интерфейс клавиатуры (не считая общего провода). Например, для определения нажатой клавиши можно использовать резистивный делитель напряжения [1]. Входное сопротивление интегрированного в микроконтроллер АЦП как правило имеет порядок сотен килоом, поэтому для обеспечения достаточной точности делитель должен состоять из резисторов с относительно низкими сопротивлениями в десятки кОм. Однако в системах с батарейным питанием такой делитель может потреблять несколько сотен микроампер, что вынуждает разработчиков выбирать альтернативный классический цифровой матричный коммутатор и несколько линий ввода-вывода. Кроме того, конструкции портативного оборудования обычно накладывают ограничения на количество компонентов.

Вебинар «Источники питания MEAN WELL для промавтоматики и серверного оборудования в новых условиях» (02.06.2022)

Двухпроводный интерфейс резистивного делителя напряжения кодирует положение нажатой клавиши клавиатуры 4 × 4.
Рисунок 1. Двухпроводный интерфейс резистивного делителя напряжения
кодирует положение нажатой клавиши клавиатуры 4 × 4.

Для выполнения обоих требований в схеме на (Рисунке 1) используются матричная клавиатура и резисторная цепь, разделенная на две секции строк и столбцов. Для кодирования любой нажатой клавиши клавиатуры 4 × 4 достаточно семи резисторов, при этом схема потребляет энергию только во время нажатия клавиши. И наоборот, при отсутствии нажатых клавиш ток в режиме ожидания приближается к нулю. Используя резисторы только двух номиналов, пусть RA = RB = RC = R1 и RD = RE = RF = RG = R2. Присвоив адресам x и y клавиш значения от нуля до трех, для любой замкнутой клавиши можно рассчитать напряжение на резисторе RG с помощью следующей формулы:

Питание резисторных цепочек опорным напряжением АЦП VREF позволяет выполнять логометрическое преобразование, исключающее ошибки декодирования клавиш, обусловленные флуктуациями VREF. Следующая формула описывает коэффициент деления напряжения r(x,y) для любого нажатия клавиши:

Отношение p = R1/R2 представляет собой соотношение сопротивлений резисторов групп строк и столбцов. Для p = 4 нужно в диапазоне [1/16, 1] рассчитать 16 значений r(x,y) как функцию позиции нажатой клавиши. Как правило, минимальная разница между коэффициентами деления r имеет место для ключей с близкими индексами x,y, таких как (3,2) и (3,3). Для N-разрядного АЦП и отношения p = 4 АЦП должен иметь разрешение, удовлетворяющее следующему неравенству:

Обратите внимание, что величина, обратная 240 (0.0041…), превышает обратную величину 28, поэтому для схемы требуется АЦП с разрешением не менее 8 бит (N ≥ 8 бит). 

К сожалению, компоненты со стандартными допусками номиналов T не могут обеспечить идеального выполнения этого неравенства. Вместо этого вычисляется разность коэффициентов деления d = r(3,2) – r(3,3) для наихудшего случая. Наименьшее значение d имеет место при минимальном значении RG и RD и максимальном значении RA, RB, RC, RE и RF. Можно учесть сопротивления всех резисторов и определить общее отношение p для номинальных значений R1 и R2:

Одно и то же значение T применяется ко всем резисторам. Если n = 8 и p = 4, предыдущее неравенство дает решение T < 0.018, что указывает на возможность правильной кодировки 16 клавиш с помощью резисторов, имеющих допуск ±1%. Более того, если теперь принять выбранный фиксированный допуск T, можно решить неравенство, чтобы получить требуемый предел отношения p сопротивлений R1 и R2. Если T = 0.01, решением неравенства становится p < 4.074.

В схеме на Рисунке 2 используется микропроцессор Nitron MC68HC908QT4 компании NXP, который служит испытательным стендом для клавиатуры, основанной на вычисленных выше номиналах резисторов, а в качестве опорного напряжения резисторной матрицы VREF использует напряжение питания VCC. Чтобы выполнить требование для p (4.074 > p > 4), следует использовать резисторы со стандартными сопротивлениями из ряда E48 и допусками ±1%: R1 = 10 кОм и R2 = 40.2 кОм.

Использование аналогового выхода опорного напряжения микроконтроллера и логометрического аналого-цифрового преобразования обеспечивает правильное кодирование клавиатуры.
Рисунок 2. Использование аналогового выхода опорного напряжения микроконтроллера
и логометрического аналого-цифрового преобразования обеспечивает
правильное кодирование клавиатуры.

В Таблице 1 перечислены выходные коды, соответствующие 16 индивидуально нажатым клавишам, а в Таблице 2 приведены данные, полученные при одновременном нажатии двух клавиш, показывающие, что комбинации двух клавиш могут использоваться для вызова специальных функций.

Таблица 1. Выходные коды при нажатии одной клавиши
Нажатая клавиша/сопротивление (Ом)
X
Y   3 2 1 0
3 1/15…16 2/21 3/32 A/63…64
2 4/17 5/23 6/36 B/85
1 7/18 8/25 9/42 C/127
0 */19 8/28 #/51 D/255
Пимечание. Символы перед косой чертой соответствуют
обозначениям клавиш клавиатуры.

Если приложению требуется микроконтроллер, в котором отсутствует внутреннее прерывание, генерируемое АЦП, к выходу VOUT схемы на Рисунке 1 можно подключить внешний компаратор. Порог срабатывания компаратора надо установить ниже наименьшего возможного выходного напряжения, в данном примере – напряжения VREF, деленного на 16, и выход компаратора будет служить источником прерывания клавиатуры для микроконтроллера.

Таблица 2. Выходные коды при нажатии двух клавиш
Нажатые клавиши Сопротивление (Ом)
C+# 141…142
C+0 134…135
C+* 132
B+# 109
B+0 98
B+9 91
B+8 88
A+8 76
A+7 70…71
A+6 68

Обратите внимание, что микроконтроллеры с 10-разрядными АЦП, такие как NXP MC68HC908QB или Texas Instruments MSP430F11, могут обслуживать матрицу клавиатуры из пяти строк и шесть столбцов с 10 кодирующими резисторами. Повторный анализ показывает, что правильно кодировать ключи позволяют отношение p сопротивлений строк и столбцов от 5 до 5.51 и допуск номиналов резисторов менее 4.3%. Можно использовать однопроцентные резисторы из ряда E48 с номиналами 10 кОм для R1 и 51.1 кОм или 53.6 кОм для R2.

  1. Datasheet Texas Instruments MSP430F112
  2. Datasheet NXP MC68HC908QY1

ООО «Мегател», ИНН 3666086782, ОГРН 1033600037020

Добавить свое объявление

* заполните обязательные данные

Статистика eFaster:

посетило сегодня 730
сейчас смотрят 24
представлено поставщиков 1573
загружено
позиций
25 067 862