Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мультиплексирование линий МК (кнопки)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
DMD
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?
rx3apf
Цитата(DMD @ Nov 10 2008, 22:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?

Какие-то особые требования есть ? Например, нужно ли распознавать произвольные сочетания одновременных нажатий ? Если нет, то просто сделать две группы по 4 кнопки, и потребуются два дополнительных выхода для опроса. Это как самый простой вариант...
zhevak
Цитата(DMD @ Nov 11 2008, 01:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?

Вариант 1: незаморачиваться.
на имеющиеся ноги микроконтроллера навесить регистр 74xxx165 или 166 (параллельная загрузка-последовательный сдвиг).

Вариант 2: для любителей поизвращаться.
На все четыре ноги навешиваем резисторы, соединенные с землей, номиналом 300-500 кОм. Они будут осуществлять поддтяжку к земле. (Потом поймете для чего это надо. А пока читайте далее)
Затем разделяем наши четыре ноги на две группы (2 + 2). Одна группа сначала будет выходами, вторая группа -- входами. Входы-выходы образуют традиционную матрицу из четырех позиций (2 * 2), в каждой позиции которой установлена кнопочка с диодом (последовательно). Это как обычно. Отличие от обыной заключается в том, что параллельно этоим кнопкам с диодом устанавливаются еще четыре кнопки, но с диодом в обратную сторону. Процесс сканирования клавы происходит в две фазы. Сначала сканируем нулем как обычно, входы поддтягиваем к питанию с помощью штатной подтяжки портов (PDIR = 1, PORT = 1). Во второй фазе поддтяжка будет осуществляться указанными выше резисторами, а сканирование будет идти единицей.

Сразу скажу, я до такого изврата доходил чисто теоретически. Практически, гы-гы, -- Бог миловал!
zltigo
Четыре кнопки непосредственно, остальные четыре через четыре группы по два диода. Естественно с одновременным нажатием произвольных кнопок будут проблемы.
zhevak
Вот же, блин! Не то сморозил.
Во втором варианте там должно быть два подварианта. Первый подвариант -- без внешних резисторов, и так же две фазы -- сначала сканируем нулем в первой группе выводов, вторая является входами с поддяжкой к питанию. Вторая фаза аналогична первой, только группы меняются местами.

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

ЗЫ: Первый подвариант лучше.
Ariel
Цитата(DMD @ Nov 10 2008, 23:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?

Вы должны подавать по 3-м линиям адрес в двоичном коде, а с провода 'TO CONTROLLER' считывать данные. Всего получаются 4 линии.
DMD
07.gif С подвариантами?? - это жесть! А попроще нету ничего? a14.gif
Нет, особых требований нет, кроме того, что все кнопки могут быть нажаты одновременно (они с фиксацией). С регистром - красиво, я подумаю...
А ещё вопрос можно? В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга. А вот внешняя подтяжка нужна, если я ставлю внутреннюю? Я смотрю, что в схемах, которые лежат в сети подтяжки нет в основном.
И ещё, сразу уж задам: если я использую стабилизатор напряжения (КРЕН), то нужно ставить катушки и 2 кондера (так в даташите) на вход питания МК? Или КРЕН и так неплохо работает? Кондеры у кренки есть, все как положено.
Спасибо.

Цитата(zhevak @ Nov 10 2008, 22:47) *
Вариант 1: незаморачиваться.
на имеющиеся ноги микроконтроллера навесить регистр 74xxx165 или 166 (параллельная загрузка-последовательный сдвиг).

А есть русские аналоги? Или хоть, пожалуйста, напишите полное название... Я поищу информацию (никогда не работал с такими).
Спасибо.
rezident
Цитата(DMD @ Nov 11 2008, 01:24) *
В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга.
Конденсатором дребезг не устраняется. Конденсатор для фильтрации помех служит. Pull-up или pull-down внешний нужен, номиналом единицы килоОм. Кроме того, желательно еще и резистор (Ом триста-килоОм) последовательно со входом МК включить. Тоже для помехоустойчивости и некоторой защиты от статического электричества.
По поводу схемы. Расширять кол-во кнопок можно дешифраторами, сдвиговыми регистрами или специальными расширителями портов типа PCF8584/PCF8585 (эти на шину I2C, т.е. требуется всего два пина).
aaarrr
Цитата(DMD @ Nov 10 2008, 23:24) *
В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга. А вот внешняя подтяжка нужна, если я ставлю внутреннюю?

С дребезгом лучше бороться программным путем, а вот подтяжку лучше ставить внешнюю.
rx3apf
Цитата(DMD @ Nov 10 2008, 23:17) *
Нет, особых требований нет, кроме того, что все кнопки могут быть нажаты одновременно (они с фиксацией).


Тогда, если делать матрицей, потребуются развязывающие диоды. В этом случае с регистром получится проще. А можно поставить аналоговый мультиплексер 4051, четырех линий (три на адрес, одна на ввод) хватит.
Цитата
В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга.


100 nF - многовато, если кнопка с малым сопротивлением контактов, то, сильно подозреваю, ресурс уменьшится из-за обгорания. И вообще, бороться с дребезгом внешими "довесками" - это неправильно, если уж используется микроконтроллер. Хотя конденсатор повесить все равно полезно - хотя бы для борьбы с внешними ВЧ-наводками. Я типично ставлю 1 nF.
Цитата
А вот внешняя подтяжка нужна, если я ставлю внутреннюю?

Но надо помнить, что внутренняя довольно высокоомная. И, кстати, к микротокам многие кнопки тоже относятся не очень хорошо - нет "самоочистки" контактов (это тоже повод использовать конденсатор параллельно).
Цитата
Или КРЕН и так неплохо работает? Кондеры у кренки есть, все как положено.

Дроссель нужен для фильтрации помех. Определяется условиями эксплуатации устройства и требованиям к уровню помех на шинах питания. Собственно стабилизаторам 78xx дроссель не нужен...
DMD
А российский аналог 74HC4051 не подскажете? 1526КП2?
А есть с однополярным питанием?
А то у меня много отечественных схем, неохота покупать... Может так обойдусь.
Спасибо!
rx3apf
Цитата(DMD @ Nov 11 2008, 00:06) *
А российский аналог 74HC4051 не подскажете? 1526КП2?

561КП2, есть, наверное, и в других сериях (давно не пользовался отечественной продукцией).
Цитата
А есть с однополярным питанием?

Для данного применения их прекрасно можно использовать в однополярном включении, заземлив линию отрицательного питания.
DpInRock
Я на один вход ацп вешаю 8 кнопок. у каждой кнопки свой резюк.
Худо-бедно, но 4 одновременных нажатия распознаю. Правда, кнопки, которые могут одновременно жаться - заранее заданы.
ControllerZ
Цитата(DpInRock @ Nov 11 2008, 03:35) *
Я на один вход ацп вешаю 8 кнопок. у каждой кнопки свой резюк.
Худо-бедно, но 4 одновременных нажатия распознаю. Правда, кнопки, которые могут одновременно жаться - заранее заданы.

Тоже в последнее время делаю на АЦП, думаю это для меня самый удобный способ, задействуется только одна лапа контроллера.
Wise
Цитата(DMD @ Nov 11 2008, 03:15) *
Мне надо на 4 входные линии повесить 8 кнопок...


..В этой конкретной ситуации, как уже отмечалось, самое прямое и простое решение – мультиплексор 8 – 1. Но, это – дополнительный корпус.
..Далее, если на борту есть АЦП – тоже отмечалось, достаточно и одной «ноги».

..Наконец, если на борту есть модуль компараторов – объединяете кнопки, по две на вход.
Добавляете резисторов – чтобы каждое из 4-х возможных состояний пары кнопок соответствовало отдельному напряжению. Каждый вход тестируете компаратором, изменяя внутреннее опорное напряжение..
mempfis_
Цитата(DMD @ Nov 10 2008, 23:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?



Тут есть вариант
http://kazus.ru/articles/405.html
DMD
Я купил СD4051BE (CMOS ANALOG MULTIPLEXER/DEMUX). Только он требует питания Vee, это -5В, так? А точно можно землю ему туда сунуть? А зачем тогда требуется -5B? А как получить -5В попроще (вдруг придется)...
Спасибо.
Wise
..Выводы 7,8 и 6 соединяете с «землей», вывод 16 – «плюс» питания.
rx3apf
Цитата(DMD @ Nov 11 2008, 19:07) *
Я купил СD4051BE (CMOS ANALOG MULTIPLEXER/DEMUX). Только он требует питания Vee, это -5В, так? А точно можно землю ему туда сунуть?

Точно. Посмотри даташит (у Motorola/OnSemi вполне так неплохо было расписано).
Цитата
А зачем тогда требуется -5B? А как получить -5В попроще (вдруг придется)...
Спасибо.

Если вдруг для каких-то нужд требуется нестабилизированное отрицательное напряжение, номиналом чуть меньше питания и с нагрузкой в единицы mA, то надо найти какой-то источник прямоугольного сигнала частотой от нескольких kHz (например, выход PWM или чего-то аналогичного прямо от микроконтроллера), и добавить пару конденсаторов и пару диодов. Или использовать готовый конвертор ICL7660 с парой конденсаторов в обвязке. Для 405x при однополярных сигналах двухполярное питание типично не требуется (однако у некоторых производителей, в частности как раз моторольских 4051, я наблюдал повышенное сопротивление открытого канала при уровне на аналоговом входе вблизи "нуля" при однополярном питании, для борьбы с этим пришлось делать именно такой преобразователь питания. Но это были особые требования в конкретном изделии).
DMD
Спасибо!
sK0T
Цитата(DMD @ Nov 10 2008, 22:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?


Много трюков с микроконтроллерами, в том числе и как повесить 16-ть кнопок на ОДИН пин. ;-)

Наслаждайтесь: http://www.ptitrain.com/electronique/micro...0pour%20675.pdf

Разные варианты подключения клавиатур (диоды, резисторы):
http://ww1.microchip.com/downloads/en/AppNotes/00529e.pdf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.