1 нога 5 кнопок

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

Здравствуйте уважаемые!
Вопрос следующий:
имею контроллер тини13, с единственной свободной ногой PB2. Задача состоит в том, чтоб прикрутить к этому контроллеру 5 кнопок.

была идея прикрутить кнопки через резисторы, образующие делитель, соответственно использовать АЦП. Но, к своему стыду, в своих поделках как-то умудрялся обходиться без АЦП, а посему пока недоумеваю.

Посему интересно, возможна ли вообще такая реализация идеи с этим контроллером?
Может есть другое, более оригинальное решение?

Собственно схема безобразия в прикрепленном файле. Там к "свободной" ноге уже прикручен упомянутый делитель. Единственная оговорка, если у кого вопрос возникнет, на PB1 в железе уже висит датчик холла.
Вложения
1.gif
Схема
(14.9 КБ) 747 скачиваний
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
Реклама
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Сообщение 12val12 »

à ó âàñ ñ ðåãèñòðà ñäâèãà 4 ñâîáîäíûõ íîãè
ìîæíî ñèëüíî èçâðàòèòüñÿ è ïîöåïèòü êíîïêè ìåæäó
PB2 è òåìè âûõîäàìè ðåãèñòðà è ïîñëåäîâàòåëüíî îïðàøèâàòü
ïîñûëàÿ íà òå íîãè ïîñëåäîâàòåëüíî 1
åñòâåâñòâåííî ïîâòîðÿÿ âåñü öèêë âûâîäà çíàêîâ íà èíäèêàòðû ..ìóòîðîøíî
íî ðåàëüíî
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

интересно,
но если я правильно понял, то 4 свободных ноги регистра - это 4 кнопки получится? а надо 5 :)
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

По вашей схеме все правильно, но ADC все же придется использовать. Если пишите в среде CodeVisionAVR, то вам можно посмотреть здесь: http://datagor.ru/microcontrollers/page ... st-3..html
Цапу крутить надо!!! Ку или не ку?
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

GRafGRay писал(а):Здравствуйте уважаемые!была идея прикрутить кнопки через резисторы, образующие делитель, соответственно использовать АЦП.
...
Посему интересно, возможна ли вообще такая реализация идеи с этим контроллером?
Может есть другое, более оригинальное решение?
Запросто и неоднократно. По приведенной схеме внимательно надо, так как там выходит нелинейный шаг по напряжению от номера нажатой кноки. Но для 4-5 кнопок это не проблема. Я так цеплял до 18 кнопок, но тогда резисторы в цепочке все были разные, увеличивающиеся по мере удаления от контроллера.
Изображение
Это висело на atmega8 на аналоговом входе 7. Так хитро нарисовано чтобы на схеме клавиатура имела то же расположение кнопок, что и на плате, ну и огрыщки других деталей я прост стёр.
По линейке резисторов там ещё три или четыре кнопки можно навесить со стандартным рядом резисторов. Если считать на худший случай, вот все резисторы кроме одного пошли, к примеру, в плюс на максимум, а один - в минус, то желатльно 1% резисторы, реально на 5% работает.

Ещё можно так - распереть делитель между землёй и питанием, а на вход подать общую точку кнопок. Прошу прощения за вывернутые подписи - в реальной схеме кнопки были вытянуты по вертикали, я просто повернул, чтобы не растягивало пост.
Изображение
Это опять шло на "отдельный" аналоговый вход мега8 (AI6 или AI7), поэтому, чтобы не плавало при ненажатых кнопках, подвязано к питанию, иначе наводка вместе с утечками могут организовать "нажатия". Если нога "универсальная", то можно включить внутренний pull-up и выключать его на время измерения.
Недостаток - делитель жрёт постоянно. Но это не всегда страшно.
Ещё одновремённое нажатие двух кнопок в первом варианте даёт одну - которая ближе к контроллеру, а тут - может отреагировать как на какую-то между нажатыми.
Достоинство - да хоть тридцать кнопок, резисторы все одинаковые.

Более оригинальное решение есть, но всё равно с АЦП :-)
http://www.edn.com/contents/images/6360317.pdf
всего восемь резисторов двух номиналов для 16 кнопок.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

GRafGRay писал(а):интересно,
но если я правильно понял, то 4 свободных ноги регистра - это 4 кнопки получится? а надо 5 :)
7-ю ножку тини13 можно вообще свободной оставить. После стробирования регистров по входам перезаписи из сдвигового в хранящий вход данных и вход сдвига могут иметь любое состояние.
С общих выводов кнопок на 2 и 3 ноги тини13 подаём сигнл через резисторы. Во время записи в регистры они не мешают, потом даём импульс перезаписи, переводим 2 и 3 ноги на входы, считываем кнопки, переводим опять на выходы. Кнопки так же динамически опрашиваются, как индикаторы засвечиваются. Повесить можно явно больше пяти :-)

А PB2 пусть остаётся. Ещё пригодится.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 584
Зарегистрирован: Чт янв 07, 2010 16:58:11

Сообщение b612 »

во во на регистр можно хоть 8 хоть ещё 32 кнопки повешать. а на ту несчастную ножку лучше звук вывести
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

Спасибо всем за отклики!

<b>to Igor_67</b>
Идею собственно от туда и содрал :) вот только с "Ссями" я в контрах, мне бы в асме это победить.

<b>avreal</b> !!!! спасибо! у меня как буд-то глаза раскрылись.
Из 3х предложенных вариантов, мне более глянулись 2ой (с делителем) и 3ий (а-ля матрица).

Насчёт делителя, что жрет он постоянно .... ну жрать то он будет мизер, а устройство будет работать время-от-времени, постоянно не будет включено :) по-сему меня это очень устраивает, да и резюки подбирать не так геморно :)

насчёт матричной клавы - где-то я кажется видел похожую реализацию, но из головы как обычно вылетело. В моем случае я так понимаю это 3 резистора 6 кнопок и одна нога контроллера - вроде то, что доктор прописал.

Теперь за АЦП, начну из далека :)))
в Тин13 нога AREF отсутствует, соответственно прийдётся ещё городить какой-то "суммирующий усилитель, который будет вырабатывать некоторые напряжения и поочередно сравнивать их с напряжением на аналоговом входе"?
но даже если так, все-равно 1ой ноги не хватает.

Насчёт кнопок на 2ую и 3ю ногу МК и чтоб 7ая ещё осталась - это использование матричной клавы, без использования АЦП?
Т.е., если я правильно понимаю, то на 4 неиспользованные ноги регистра прикручиваем строки матрицы, а столбцы прикручиваем к ногам 2 и 3 контроллера, подтянув их резисторами к питанию.
В таком разе, теоретически можно строки матрицы вешать и на занятые ноги регистров?
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Пчитай эту тему:
http://radiokot.ru/forum/viewtopic.php? ... t=attiny13
там куча кнопок на одном входе.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

GRafGRay писал(а):в Тин13 нога AREF отсутствует, соответственно прийдётся ещё городить какой-то "суммирующий усилитель, который будет вырабатывать некоторые напряжения и поочередно сравнивать их с напряжением на аналоговом входе"?
Ничего не надо, включить опору от собственного питания и всё будет работать, кнопки выдают напряжение, являющееся некоторой долей питания и АЦП меряет долю питания. Это называется "ратиометрический метод", зависимость от питания исключается самим подходом.
GRafGRay писал(а):Насчёт кнопок на 2ую и 3ю ногу МК и чтоб 7ая ещё осталась - это использование матричной клавы, без использования АЦП?
...
В таком разе, теоретически можно строки матрицы вешать и на занятые ноги регистров?
Да, матричная клава. Можно и на занятые, но на тот регистр, который кормит сегменты - просто немного неудобно. На регистре общих бегущая "1"-ка или "0"-ик в зависимости от "полярности" выбранного индикатора и опрос органично вписывается в динамическую индикацию. А если задействовать оба регистра, то надо в конце цикла индикации сделать пробежку по всем 16 выходам отдельным циклом.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Потрогал лапой паяльник
Сообщения: 392
Зарегистрирован: Сб дек 12, 2009 02:15:45

Сообщение neon-f »

http://radiokot.ru/forum/viewtopic.php? ... sc&start=0

вот тут практически ваша схема
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

GP1 писал(а):Пчитай эту тему:
http://radiokot.ru/forum/viewtopic.php? ... t=attiny13
там куча кнопок на одном входе.
Спасибо, нашел Вашу там работу - очень впечатляет и главное к моему вопросу с АЦП ответы имеюцца, буду вникать.

<b>to avreal</b>
Спасибо за помощь :)
Осталось мне ещё раз хорошенько покумекать и решить на каком варианте остановиться.

<b>UPD:</b>
Ну вроде определился, повешу наверное 8 кнопок через регистр, схему прилагаю. Думаю лишних 3 не помешает, мож со временем добавлю какие-нить действия к ним.
Прошу покритиковать :).
Насчёт резисторов правда есть сомнения ... хотя ...
Вложения
1.gif
(14.47 КБ) 624 скачивания
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

Да простят меня модераторы за повторный пост, (он на самом деле уже 3ий), но если не повторять - то вверх он не поднимется :)

вообщем так, клавиатуру я победил, схему прилагаю (разница в подключении резисторов).

есть такая противная вещь как дребезг кнопок и сопельки на индикаторах. Сопельки или тянучки - побеждать я научился - в динамике перед включением очередного сегмента - тушу все буквально на 4 такта - этого хватает чтоб цифры друг за дружкой тускло не тянулись на другие индикаторы.

Дребезг вроде как тоже победил, но .... от многократного выполнения одного и того же действия избавился, а вот от соплей при дребезге - не могу. Дело в том, что по нажатию на кнопку прога просто вычисляет её код и выполняется дальше, соответственно (в моем случае) если момент нажатия на кнопку совпадает с моментом вывода на индикаторы, получается что на регистры с двух сторон идет инфа, напрямую с контроллера и через резюки с клавиатуры. Отсюда видимо и мусор на индикаторах.

Вот и получается что дребезг кнопок не влияет на ход выполнения программы никоим образом, а вот глаза мазолит тусклым мусором на индикаторах.

Кто с талкивался с подобным, какие могут быть варианты решения?
Вложения
1.gif
(14.44 КБ) 614 скачиваний
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

R3, R4 увеличить до килоом так 4,7..10.

R5, R6 убрать

Между общими "колонками" кнопок и линиями от микроконтроллера до SH_CP и DS и далее до R3, R4 - врезать по килоому.

В "мягких" условиях можно R3, R4 убрать совсем, обойдясь внутренними pull-up микроконтроллера, не забывая их включать при переводе на входы. Резисторы от клавиатуры на выводы микроконтроллера при этом можно увеличить до 3..4,7к.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

R3, R4 в реале стоит по 1,5кОм

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

R5, R6 убрал давно, вторая схема больше приближена к идеалу, разница только в номиналах деталей
Между общими "колонками" кнопок и линиями от микроконтроллера до SH_CP и DS и далее до R3, R4 - врезать по килоому.
а вот это я что-то не совсем вкурил .... на второй схеме R7 и R8 - Вы о них говорите?
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

GRafGRay писал(а):R5, R6 убрал давно, вторая схема больше приближена к идеалу, разница только в номиналах деталей
Надо ж было хоть по разному назвать картинки, хотя бы 1.gif и 2.gif.
Я только первую и посмотрел.
GRafGRay писал(а):
Между общими "колонками" кнопок и линиями от микроконтроллера до SH_CP и DS и далее до R3, R4 - врезать по килоому.
а вот это я что-то не совсем вкурил .... на второй схеме R7 и R8 - Вы о них говорите?
Ну я их предлагал немного в другое место поставить, "вертикально" от кнопок к этим линиям, в разрыве которых они сейчас стоят. Но это несущественно.

500 Ом маловато, конечно, такие токи там не нужны, я бы килоом поставил или больше даже. Но работать должно бы, 10мА тини при выводе на индикатор потянет легко, да и hc595 ещё и не выдаст их.

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

p.s. Ваши схемы в формате png занимают в три раза меньше места, чем в gif. Я конечно понимаю, что интернет нонче быстрый и диски большие, но... потом сами ругаем всех других, что компы всё быстреют, а работает всё как и раньше медлено ;-)
Вложения
kbd.png
(3.05 КБ) 608 скачиваний
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

что то увеличение сопротивления резисторов не помогает ... собрано на макетке, посему втыкать-подбирать резюки не проблема, вот тьолько все без толку.
R7 и R8 увеличил до 4,7кОм, при этом сохраняется работоспособность, выше уже ложные срабатывания. А результат тотже, на индикторах во время нажатия все сегменты дорисовываются до нуля, а если на сегменте отображается какая-то цифра - то и "тянучка" этой цифры по всем сегментам (например на одном из сегментов была тройка, дык тянучка идёт нулем и тройкой сразу - т.е восьмерка.)

еще не совсем ясно, точки в индикаторах не используются, но к регистру подключены. Почему в таком разе они в тянучках не участвуют?
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

на время опроса кнопок и загрузки данных в регистры надо отключать индикацию, для этого используй OE

зы: а способ с АЦП так и не хочешь попробовать?
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 223
Зарегистрирован: Вт окт 02, 2007 14:43:23
Откуда: Ростов-на-Дону

Сообщение GRafGRay »

GP1 писал(а):на время опроса кнопок и загрузки данных в регистры надо отключать индикацию, для этого используй OE

зы: а способ с АЦП так и не хочешь попробовать?
вы имеете ввиду повесить OE на свободную ногу контролеера?

Способ с АЦП обязательно попробую, бо надо научиться, но видимо уже не в этом проекте.

<b>UPD</b> отключал индикацию как рекомендовали, пока не помогает.
Дело в том, что отключением OE второго регистра, я ведь и клаву отключаю, соответственно сканировать отключенную клаву как-то не камильфо. Посему щелкаю ОЕ только на первом регистре - который код в сегменты пересылает. Тож не помогло.
При наличии отсутствия пропитанных шпал - это будет не трамвай а одно горе!
Контактная информация:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

GRafGRay писал(а): вы имеете ввиду повесить OE на свободную ногу контролеера?
ну да пока грузишь регистры отключаешь выходы, загрузил подключил, и ни каких тянучек, и с клавой то же самое.
Последний раз редактировалось GP1 Ср фев 03, 2010 11:20:53, всего редактировалось 1 раз.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»