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

Подключение нескольких кнопок и потенциометра к одному выводу микроконтроллера

Конструкция и метод дают возможность считывать состояние нескольких кнопок и значение аналогового потенциометра подключенных к одному лишь выводу микроконтроллера, к одному из входных каналов АЦП. Т.е. аналоговый и цифровой сигнал подаются в микроконтроллер по одному выводу.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Схема для реализации данного метода показана на рисунке (2 кнопки, 1 птоенциометр).

Схема подключение нескольких кнопок и потенциометра к одному выводу микроконтроллера

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

Выбор номиналов резисторов – многошаговый процесс, таблица (форамат Office'2007, .xlsx) помогает в выполнении вычислений. Скажем, к примеру, Вы хотите использовать потенциометр номиналом 5 кОм (Radj) для возможности ввода значений в микроконтроллер в пределах 0 – 100%. Как правило, в этом случае значения в диапазоне 0 – 255 Вы бы привели к диапазону 0 – 100 для представления значений в процентах. Однако, выбирая значение резистора смещения Rbias, Вы центрируете значения в пределах, например, 78 – 178 (в диапазоне 0 – 255).

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

Формулы для вычисления номинала резистора смещения

Преобразовывая эти выражения и выделяя Rbias, учитывая, что значение максимального напряжения 255, значение низкого напряжения для нашего диапазона – 78, значение максимального высокого напряжения для нашего диапазона – 178, Radj – 5 кОм, мы получаем следующее выражение:

Полученное значение резистора Rbias – 3875 Ом. Используя стандартный номинал 3.3 кОм, получим диапазон для потенциометра 73 – 182. Этот диапазон приводит к большему динамическому диапазону, чем мы нуждаемся, но учитывает защищенный диапазон между значениями потенциометра и значениями при нажатии кнопок. Поскольку положение Radj воздействует на полное сопротивление схемы, микроконтроллер должен обрабатывать диапазон значений для каждой кнопки. Для определения сопротивления Rsw, для кажой кнопки S1 или S2, мы используем параллельное включение резисторов на обоих крайних положениях потенциометра.

Когда нажата S1 и Radj имеет максимальное значение, эффективное сопротивление нижнего плеча делителя напряжения – значение при параллельном включении Rsw с цепью Radj и Rbias (включенных последовательно). При минимальном значении Radj – эффективное сопротивление – значение при параллельном включении Rsw с Rbias:

Вы можете определить значение сопротивления при нажатии S1, используя делитель напряжения, который формируют Rbias и REFFMAX из выражения:

Заметьте, что когда Radj имеет максимальное значение и Вы нажимаете кнопку S1,это создает сопротивление меньше меньшего значения самого Radj – это тем самым уникально определяет, что нажата кнопка S1. Таким образом, максимальное значение эффективного сопротивления REFFMAX будет меньше чем значение низкого напряжения для нашего диапазона, как показывает нижеследующее выражение:

Замена и решение этого уравнения для сопротивления выключателя дает:

Используя таблицу, находим что сопротивление выключателя должно быть 1558 Ом, и можем использовать стандартный резистор номиналом 1.5 кОм. В итоге, применив такой резистор, мы получим значение АЦП в диапазоне: 28 – 71 при нажатии на кнопку S1 и в зависимости от положения потенциометра. Аналогично, выбрав такое же значение для S2, мы получим значение в диапазоне 184 – 227. Эти диапазоны – группы значений, которые Вы можете использовать для определения, какая кнопка была нажата, независимо от положения потенциометра. Выбирая симметричные значения резисторов, Вы можете сократить необходимые вычисления и упростить проект.

Пример программы для двух кнопок и потенциометра для определения нажатия кнопок и положения потенциометра. Пример показывает как организовать две кнопки, однако, их количество может быть разным. Входные диапазоны позволяют организовать 10 кнопок и 1 потенциометр и по прежнему, используя лишь один вывод АЦП микроконтроллера. Но здесь нужно учитывать, что вычисленные диапазоны не будут накладываться друг на друга (уникальны), но аппаратные средства микроконтроллера (АЦП) не всегда дадут возможность достоверно отличить эти группы. Выбор меньших номиналов резисторов отдаляет группы друг от друга.

Ограничения при такой реализации – пользователь не может нажать более одной кнопки одновременно. А также, микроконтроллер может считывать значение потенциометра, только если не нажата ни одна из кнопок.

edn.com

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

На английском языке: Read multiple switches and a potentiometer setting with one microcontroller input pin

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Внимательее с препечаткой. При включении любой из кнопок (или обеих) сигнал на выводе микроконтроллера НИКАК НЕ МЕНЯЕТСЯ. Точечку забыли поставить.
  • Уважаемый llllll, а можно конкретнее, я, к примеру, не совсем понял что имелось ввиду.
  • Проанализирем работу схемы: При нажатии на одну из кнопок цепь вообще не замкнётся. При нажатии одновременно на обе кнопки ток будет проходить ТОЛЬКО по цепи питания, на выводе МК никаких изменений не будет.
  • Аааа, на схеме точку забыли?... Это верно!