Кольцевая матрица

( чарлиплексинг кнопок )

Razor AHRS 5DOF      Opentrack      Джойстик      Donate


Чарлиплексинг светодиодов давно известен и широко используется. Чарлиплексинг кнопок мало известен и практически не используется.

Давайте разберёмся, можно ли применить чарлиплексинг кнопок в джойстике.

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

При прямом подключении кнопок к N контактам Ардуино можно подключить N кнопок, а количество проводов к N кнопкам равно N+1 (+1 - это GND). Все контакты Ардуино находятся в режиме ввода с внутренней подтяжкой к 1 (PULLUP):

В прямоугольной матрице кнопок одна часть контактов матрицы (ряды) являются передающими, а другая часть (колонки) являются приёмными: 

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

В прямоугольной матрице кнопок к N контактам Ардуино можно подключить до N*N/4 кнопок.

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

Кольцевая матрица

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

При считывании кнопок по очереди один из контактов кольцевой матрицы работает на вывод - "говорит ", а все остальные работают на ввод - "слушают".

Из этой схемы ещё не видно никакого кольца, но зато понятно, почему я раньше называл кольцевую матрицу "двойной треугольной матрицей".

Обозначим пару кнопок и пару диодов в виде кружка с двумя точками - кнопками:

Тогда кольцевую матрицу c 2, 3, 4 или 5 контактами можно изобразить в виде:

Теперь видим, что все контакты матрицы равноправны и расположены по кольцу.

Кольцевая матрица считывается так:

В кольцевой матрице кнопок к N контактам Ардуино можно подключить до N*(N-1) кнопок.

О защите от ложного срабатывания кнопок

В кольцевой матрице кнопок обязательно использование внешних PULLUP подтягивающих резисторов на каждом пине матрицы, внутренних PULLUP резисторов 10kOm в Ардуино недостаточно. Внешние PULLUP резисторы вместе с диодами матрицы обеспечивают защиту от ложного срабатывания кнопок при одновременном нажатии двух и более кнопок.

Защита основана на том, что прямое падение напряжения на одном кремниевом диоде меньше порогового напряжения входов Ардуино 1,43 ... 1,57V, а прямое падение напряжения на двух и более последовательно включенных кремниевых диодах больше этого порога, при условии правильного выбора номинала PULLUP резисторов.

Я определил, что для Ардуино с питанием 5V (USB) сопротивление PULLUP резисторов должно быть в диапазоне 0,82 ... 3,75 kOm. Я выбрал средний стандартный номинал из этого диапазона - 2 kOm.

Диоды могут быть только кремниевые, любого типа. Я использовал диоды LL4148. Это SMD аналог диодов 1N4148 (КД522).

Не годятся диоды германиевые и Шоттки, у них слишком малое прямое падение напряжения.

О максимальном количестве подключенных кнопок

Как я уже говорил выше, с помощью N контактов (проводов) можно подключить:

Насколько велика разница, показывает следующая таблица и график.

Синяя кривая (К/П) показывает отношение количества подключенных кнопок при кольцевой матрице к количеству подключенных кнопок при прямоугольной матрице. Видим, что с увеличением количества пинов это отношение стремится к 4.

Впечатляющий результат!

Об особенностях разводки кольцевой матрицы

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

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

Чтобы упростить разводку и монтаж, нужно вспомнить о том, что последовательно соединённые элементы можно менять местами. Работа схемы от этого не изменится. Новички об этом часто забывают.

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

Кольцевая матрица состоит из пар кнопок с диодами. Для таких пар следующие четыре схемы эквивалентны:

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

Вот, для примера, односторонняя PCB кольцевой матрицы на 5 пинов, 20 кнопок:

RingMatrix20_smd.lay6

В этой матрице тоже некоторые диоды (LL4148) с кнопками поменялись местами, для удобства разводки.

Видео 

Кольцевая матрица (чарлиплексинг кнопок) позволяет увеличить количество кнопок в несколько раз, по сравнению с прямоугольной матрицей.

Кольцевая матрица позволяет создать джойстик с большим количеством кнопок без дополнительных микросхем.

Для проверки кольцевой матрицы разработан скетч RingButtonBox, о котором вы узнаете здесь:

Скетч RingButtonBox

Настройки скетча для кольцевой матрицы 

Обсудить: Кольцевая матрица (чарлиплексинг кнопок) 


Удачи!

Joystick

#joystick #ringmatrix #charlieplexing #ringbuttonbox #diy #чарлиплексинг #матрица