реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Мультиплексирование линий МК (кнопки)
DMD
сообщение Nov 10 2008, 19:15
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 10 2008, 19:38
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(DMD @ Nov 10 2008, 22:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?

Какие-то особые требования есть ? Например, нужно ли распознавать произвольные сочетания одновременных нажатий ? Если нет, то просто сделать две группы по 4 кнопки, и потребуются два дополнительных выхода для опроса. Это как самый простой вариант...
Go to the top of the page
 
+Quote Post
zhevak
сообщение Nov 10 2008, 19:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(DMD @ Nov 11 2008, 01:15) *
Мне надо на 4 входные линии повесить 8 кнопок... Как это можно сделать? Никто не поделится схемой?

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

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

Сразу скажу, я до такого изврата доходил чисто теоретически. Практически, гы-гы, -- Бог миловал!


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 10 2008, 19:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zhevak
сообщение Nov 10 2008, 19:56
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



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

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

ЗЫ: Первый подвариант лучше.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Ariel
сообщение Nov 10 2008, 20:00
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440



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

Вы должны подавать по 3-м линиям адрес в двоичном коде, а с провода 'TO CONTROLLER' считывать данные. Всего получаются 4 линии.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
DMD
сообщение Nov 10 2008, 20:24
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



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

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

А есть русские аналоги? Или хоть, пожалуйста, напишите полное название... Я поищу информацию (никогда не работал с такими).
Спасибо.


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 10 2008, 20:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(DMD @ Nov 11 2008, 01:24) *
В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга.
Конденсатором дребезг не устраняется. Конденсатор для фильтрации помех служит. Pull-up или pull-down внешний нужен, номиналом единицы килоОм. Кроме того, желательно еще и резистор (Ом триста-килоОм) последовательно со входом МК включить. Тоже для помехоустойчивости и некоторой защиты от статического электричества.
По поводу схемы. Расширять кол-во кнопок можно дешифраторами, сдвиговыми регистрами или специальными расширителями портов типа PCF8584/PCF8585 (эти на шину I2C, т.е. требуется всего два пина).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 10 2008, 20:30
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DMD @ Nov 10 2008, 23:24) *
В даташитах видел, что к каждой кнопке в параллель нужно ставить кондер в 100 нанофарад и подтягивать вход к 5В через резистор 4.7К. Ну про кондер понятно - для устранения дребезга. А вот внешняя подтяжка нужна, если я ставлю внутреннюю?

С дребезгом лучше бороться программным путем, а вот подтяжку лучше ставить внешнюю.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 10 2008, 20:32
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



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


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


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

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

Дроссель нужен для фильтрации помех. Определяется условиями эксплуатации устройства и требованиям к уровню помех на шинах питания. Собственно стабилизаторам 78xx дроссель не нужен...
Go to the top of the page
 
+Quote Post
DMD
сообщение Nov 10 2008, 21:06
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



А российский аналог 74HC4051 не подскажете? 1526КП2?
А есть с однополярным питанием?
А то у меня много отечественных схем, неохота покупать... Может так обойдусь.
Спасибо!


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 10 2008, 21:27
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(DMD @ Nov 11 2008, 00:06) *
А российский аналог 74HC4051 не подскажете? 1526КП2?

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

Для данного применения их прекрасно можно использовать в однополярном включении, заземлив линию отрицательного питания.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Nov 10 2008, 22:35
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Я на один вход ацп вешаю 8 кнопок. у каждой кнопки свой резюк.
Худо-бедно, но 4 одновременных нажатия распознаю. Правда, кнопки, которые могут одновременно жаться - заранее заданы.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
ControllerZ
сообщение Nov 11 2008, 03:23
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 6-08-05
Пользователь №: 7 409



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

Тоже в последнее время делаю на АЦП, думаю это для меня самый удобный способ, задействуется только одна лапа контроллера.
Go to the top of the page
 
+Quote Post
Wise
сообщение Nov 11 2008, 13:39
Сообщение #15


Пользователь забанен
*****

Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492



Цитата(DMD @ Nov 11 2008, 03:15) *
Мне надо на 4 входные линии повесить 8 кнопок...


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

..Наконец, если на борту есть модуль компараторов – объединяете кнопки, по две на вход.
Добавляете резисторов – чтобы каждое из 4-х возможных состояний пары кнопок соответствовало отдельному напряжению. Каждый вход тестируете компаратором, изменяя внутреннее опорное напряжение..


--------------------
It's me
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016