Обсуждаем цифровые устройства...
Ответить

Пн фев 19, 2007 13:40:05

Yak писал(а):У микрочипа есть апноут. На 1 ножке МК до 99 кажись кнопок. Смысл в том, что на каждую кнопку вешается резистор с возрастающим номиналом, к примеру 100 ом, 120 ом, 140 и т.д. Все эти хрени (кнопка и резюк) соединяются параллельно, точка соединения резисторов - на порт АЦП (c подтяжкой на землю) точка соединения кнопок - на VCC. И опрашиваем ацп, получившийся результат +-2 будет код нужной кнопки. можно нажимать вместе...

Замечательная идея! Если ещё ссылкой на сабж поделитесь, коты будут благодарны! :)
А то самому сопротивления подбирать так, чтоб нажатие нескольких клавишь не вызвало пересечений с другими комбинациями сложновато....

Пн фев 19, 2007 13:41:04

Yak писал(а):
16 клавиш, матрица 4х4. Если нажата одна клавиша, всё понятно. А как читать клавиатуру, чтоб опредилить все нажатые клавиши в данный момент?


У микрочипа есть апноут. На 1 ножке МК до 99 кажись кнопок. Смысл в том, что на каждую кнопку вешается резистор с возрастающим номиналом, к примеру 100 ом, 120 ом, 140 и т.д.


Вы просто так пишите или на вопрос человека отвечаете ?

Если отвечаете то прочитайте всеже ВОПРОС ! что ему нужно.

Пн фев 19, 2007 14:39:14

coder писал(а):
Yak писал(а):У микрочипа есть апноут. На 1 ножке МК до 99 кажись кнопок..


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


ПАФФФТАРЯЮ !

нельзя так определить нажатие произвольного числа кнопок.

Пн фев 19, 2007 14:56:37

Abakt писал(а):нельзя так определить нажатие произвольного числа кнопок.

Можно :)
Например, не так как у Yak, но смысл тот же.
если нажаты все клавиши сопротивление 0,
если S2, S3, S4, то 1Ом
если S1, S3, S4, то 2Oм
... и т.д.
если ни одной, то 15Ом.
всё это дело подключаем к АЦП!
Вложения
keybd.GIF
Клавиатура.
(2.23 KiB) Скачиваний: 507

Вт фев 20, 2007 10:57:15

Согласен, обычно делается так:
Код:
_+5В      1К
+------[[[[]]]]---/ ------+
|          2К             |
+------[[[[]]]]---/ ------+
|          4К             |
+------[[[[]]]]---/ ------+----------> к АЦП
                          |        Rx
                          +----[[[[]]]]-------+
                                              |
                                             GND


Rx рассчитывается в зависимости от входного диапазона АЦП.
Схема работает следующим образом - при нажатии какой либо кнопки
подключается сопротивление изменяя ток протекающий через Rx(и соотв. напряжение на выходе меняется). Rx= 1К(это минимальное сопротивление на кнопке)*(Диапазон АЦП)/5В(питание кнопок)+ДОП. При этом старший бит отсчетов АЦП будет соответствовать состоянию верхней кнопки, следующие биты - соотв. каждой следующей кнопки.
Кнопки можно добавлять и максимальное количество равно разрядности АЦП. Каждое последующее сопротивление должно быть в 2 раза больше предыдущего по номиналу. ДОП надо подбирать - зависит от АЦП

coder писал(а):
Abakt писал(а):нельзя так определить нажатие произвольного числа кнопок.

Можно :)
Например, не так как у Yak, но смысл тот же.
если нажаты все клавиши сопротивление 0,
если S2, S3, S4, то 1Ом
если S1, S3, S4, то 2Oм
... и т.д.
если ни одной, то 15Ом.
всё это дело подключаем к АЦП!
Последний раз редактировалось Neekeetos Вт фев 20, 2007 11:16:40, всего редактировалось 1 раз.

Вт фев 20, 2007 11:11:50

Можно
Например, не так как у Yak, но смысл тот же.
Те же яйца только в профиль.

блин хотел выложить апноут целиком, так ругается форум на большой размер((((((

выложил здесь _http://kuznechkovo-city.narod.ru/52603.zip
Вложения
11111111.gif
схема
(16.41 KiB) Скачиваний: 457

Вт фев 20, 2007 12:34:12

На 1 ножке МК до 99 кажись кнопок.... кнопки можно нажимать вместе.

Небольшая проблема с этим методом. Раз АЦП у нас 10 битный, то и кнопок максимум 10 на одном АЦП... Это если не учитывать погрешности, а так ещё меньше. :(

Вт фев 20, 2007 12:38:02

При 10-ти битном разрешении, теоретическая распозноваемость 1023 кнопки, на практике реально меньше.

Вт фев 20, 2007 12:48:13

Оne писал(а):При 10-ти битном разрешении, теоретическая распозноваемость 1023 кнопки, на практике реально меньше.

Это если каждую кнопку в отдельности... а у меня задача, распознать все нажатые кнопки одновременно! :idea:

Вт фев 20, 2007 12:57:31

Это в комповых клавиатурах организовано, если нажата какая либо клавиша, то клавиатура выдаёт команду - нажата клавиша, если отпущенна, значит - отпущенна такая-то клавиша. Поэтому теоретически можно зажимать хоть все клавиши. С аналогом действительно по количеству бит, будет выписывать количесво клавиш. :(

Вт фев 20, 2007 16:08:48

coder писал(а):Можно на какой-нить логике контроллер клавы собрать (16 входов, 2 выхода) последовательный!

Подскажите, плиз, на чём такое можно собрать (на 8, 16, 32... входов)?

Вт фев 20, 2007 16:16:39

есть микруха на 22 кнопки у freescell.com есть расширители IO на i2c у филипс (nxp.com) маркировка на PFC наверно можно регистры использовать "параллельные данные в последовательный" - выбор на Ti.com - "шифт регистр"

Ср фев 21, 2007 11:43:27

Порылся в интернете. Вот что у меня получилось на микросхеме К555ИР10(74LS166)
Вложения
shift.gif
(2.86 KiB) Скачиваний: 516

Ср фев 21, 2007 11:48:56

Гут.

Ср фев 21, 2007 13:01:49

Ребята, ну что вы как маленькие?!
Какое там еще 99 или тем более 1024 кнопок на аналоговый вход АЦП?! Да больше десяти реально работать не будут! Ну, могу ошибиться в 2 раза :)... Вы ж подумайте сами, что будет с вашей клавой, если резисторы поплывут от температуры? а сопротивление контактов со временм изменится? а пыль-грязь на плату между дорожками сядет? а питание вдруг понизится-повысится? а наладка? Оно вам надо?!
Ну есть же правильное решение, 100 лет как применяемое: матрица кнопок. Опрашиваем поочередно, а потом выдаем состояние всех кнопок сразу - чем не нравится?! Определили одну кнопочку - установили битик, определили вторую - второй битик и т.д., а затем байты результата выдаем - получаем СРАЗУ СОСТОЯНИЕ ВСЕХ КНОПОК, чего вы так желаете.
Если уж совсем плохо дело - возьмите сдвиговый регистр (или хоть 100 последовательно соединенных) типа 74HC597: это позводит вам одновременно защелкнуть состояние 8-и кнопок на регистр (у всех регистров сразу, если их не один), а потом последовательно ввести эти числа в МК - и анализируйте сколько влезент...

Ср фев 21, 2007 13:47:37

ARV писал(а):Ну есть же правильное решение, 100 лет как применяемое: матрица кнопок. Опрашиваем поочередно, а потом выдаем состояние всех кнопок сразу - чем не нравится?! Определили одну кнопочку - установили битик, определили вторую - второй битик и т.д., а затем байты результата выдаем - получаем СРАЗУ СОСТОЯНИЕ ВСЕХ КНОПОК

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

Ср фев 21, 2007 16:08:04

есть микра советская К155ИД3. вот на двух оных микрах, на 9 МК пинов можно повесить 32 полностью автономные кнопки. а если применить I2C расширитель портов, то вообще три пина заюзаются. меньше уже некуда)))))

и что самое главное в этой схеме - возможность заставить каждую кнопку вызывать прерывание, если на соотв пин МК ее повесить.

К155ИД3 даташит ))))
_http://www.chipinfo.ru/dsheets/ic/155/id3.html

Пн мар 12, 2007 18:22:42

Господа, а что плохого в том, что на каждую кнопку надо ставить диод? Этоне проблема. Это давно обкатаная технология.
от, на Меге16 есть вариант USB контроллера джойстика. 8 осей по 1024 отсчета и аж 102(!) кнопки. И замечательно все пашет.
(Если заинтересовало - искать MJoy16)

Пн мар 12, 2007 22:51:18

Ну вы и флудеры! Сколько раз про одно и тоже? Здесь: http://www.radiokot.ru/forum/viewtopic.php?t=2929 было, ещё где-то тоже есть... :evil:
Ответить