ReRayne
Nov 20 2011, 18:16
Имеется следующая задача:
АЦП ловит сопротивление от 0 до 6кОм.
Возможная погрешность на АЦП 5%.
К АЦП подключена клавиатура из 5-ти кнопок.
Вот вопрос в следующем, никто не встречал схемы клавиатуры, которая могла бы ловить от 1 до 5-ти нажатий без фантомов и т.д.
Понятное дело, матричная в данном случае не подходит.
stells
Nov 20 2011, 18:20
Цитата(ReRayne @ Nov 20 2011, 22:16)

АЦП ловит сопротивление от 0 до 6кОм.
АЦП не для этого предназначено
ReRayne
Nov 20 2011, 18:46
Прошу прощения за неточность.
Имел в виду в данном случае можно повесить резисторы с результирующим сопротивлением до 6кОм.
Заело уже в башке, до 6кОм, до 6кОм ^_^"
rx3apf
Nov 20 2011, 19:08
Цитата(ReRayne @ Nov 20 2011, 22:16)

К АЦП подключена клавиатура из 5-ти кнопок.
Вот вопрос в следующем, никто не встречал схемы клавиатуры, которая могла бы ловить от 1 до 5-ти нажатий без фантомов и т.д.
Понятное дело, матричная в данном случае не подходит.
На каждую кнопку по резистору, с соотношением 1:2:4:8:16:32. С пятипроцентным ADC не очень это хорошо. На практике мне не доводилось встречать хорошо работающие решения, и обычно не практикуют одновременное нажатие. Видел 4 кнопки с нажатием по одной - даже там бывали сбои (правда, там "резинка" - с "резинкой про это забудьте, иначе икаться будет от пожеланий пользователей). Еще пример - Motorola CP50, тоже сделали клавиатуру на резисторах - работало хорошо только первое время, потом ошибочные срабатывания, а там опять же разрядность матрицы меньше 5 битов. Плохая идея, короче.
ReRayne
Nov 20 2011, 19:29
rx3apf, благодарю за ответ. Я сейчас размышляю над схемой из 1 цифрового входа, 1 цифрового выхода и дешифратора с инверсией выхода. Т.е. урезанная матричная клавиатура, только с одним рядом кнопок. Но не знаю опять же, на сколько это правильно.
Собственно изначально задание требует подключение клавиатуры из 5-12 кнопок при минимуме задействованных ножек.
rx3apf
Nov 20 2011, 20:12
Цитата(ReRayne @ Nov 20 2011, 23:29)

[Собственно изначально задание требует подключение клавиатуры из 5-12 кнопок при минимуме задействованных ножек.
Дополнительные микросхемы разрешаются ? Если да,то с одним цифровым выходом уже вполне можно загружать сдвиговый регистр бегущим "0" или "1" (тактировка непосредственно, данные через интегрирующую цепочку-дискриминатор, т.е. в зависимости от длительности импульса загружаем "0" или "1"), ну а дальше - традиционно, кнопки и развязывающие диоды, а состояние можно прочитать хоть через цифровой вход, хоть через ADC. А перевод цифрового кода (кнопки) в аналоговый и оцифровка - это сильно на любителя. При четырех кнопках - я бы еще подумал (но только не с резинками, боже упаси !), но 5, а то и 12 - не, зачем искать проблемы...
Вариант - отдельный микроконтроллер на клавиатуру. Основная проблема - лишняя операция программирования при производстве.
hd44780
Nov 22 2011, 07:08
До 6 кнопок матрица неэффективна. Выше - эффективна. Это в плане используемых ножек.
Про алгоритмы опроса этой матрицы я не говорю.
6 кОм, очевидно, ограничение входным сопротивлением АЦП.
Вовсе не обязательно корячиться с двоичным делителем, проще поставить R-2R, где 2R могут быть последовательно два R, т.е. достаточно вообще одного номинала. Только вряд ли 18 резисторов по площади и цене будут меньше, чем какое-либо нормальное цифровое решение. Для 12 кнопок нужно никак не меньше, чем два входа 10-разрядного АЦП и два делителя на 6 входов на резисторах 0,1%.
Разрядность АЦП нигде не указана, но она никак не может быть меньше 8 бит, а под 5%, очевидно, имеется ввиду допуск опорника, и ничто другое — ну так он на эту задачу абсолютно не влияет.
Цитата(rx3apf @ Nov 20 2011, 23:08)

На каждую кнопку по резистору, с соотношением 1:2:4:8:16:32.
... Плохая идея, короче.
А потенциометр - хорошая идея?
Все резисторы одинаковые (4 штуки), включены последовательно. 1-я позиция - 0, вторая 25 % питания... последняя -100%.
Цитата(Tanya @ Nov 22 2011, 12:40)

Все резисторы одинаковые (4 штуки), включены последовательно. 1-я позиция - 0, вторая 25 % питания... последняя -100%.
У ТС было пожелание
Цитата
... могла бы ловить от 1 до 5-ти нажатий без фантомов и т.д.
Я понял его как необходимость распознавания одновременно нажатых кнопок.
Если ТС сможет найти АЦП с погрешностью ниже 1% (как ему повезло найти АЦП с 5%?), то задача с запасом решаема на 5-тиразрядной R-2R 1% лестнице - проще взять готовую 8-разрядную.
В автомобильных магнитолах встречал на передней панели и в полупрофессиональных SVHC магнитафонах Панасоник так были сделаны дистанционные проводные пульты управления. Соединялись с магнитафоном через разъём как у наушников. А вообще в Сети статьи наши встречались с описанием всего этого. Пошукайте немного - найдёте.
Насколько помню одновременное нажатие обрабатывалось ограниченно. Там аналоговый коммутатор процессора использовался.
alexvu
Nov 22 2011, 12:24
Цитата(ReRayne @ Nov 20 2011, 21:16)

ловить от 1 до 5-ти нажатий без фантомов и т.д.
Как я понимаю, автор хочет различать комбинации вплоть до 5-ти нажатых кнопок одновременно, да ещё и через (один?) аналоговый вход.
Это, как я понимаю, 32 варианта напряжений. Тогда матрица R-2R подходит, но точность 12 шт. резисторов должна быть не хуже 1%.
(2 на делитель питания (учтите, что это лишнее потребление. Или отключать - но тогда нужен ещё выход проца).
Проще всего было подключить кнопки к 5 входам процессора, если есть свободные входы.
Цитата(ReRayne @ Nov 20 2011, 21:16)

Понятное дело, матричная в данном случае не подходит.
наверное, имелось в виду, что своб. входов нет?
alexvu
Nov 23 2011, 09:23
Viko, там кнопки можно нажимать только по одной, а не "до 5-ти нажатий" как хотел "заказчик".
ReRayne
Nov 24 2011, 15:36
rx3apf, благодарю вас, вы очень помогли =)
hd44780, от матрицы, в результате отказались, спасибо)
Plain, спасибо!) Да, под 5% имеется ввиду именно падение опорного напряжения, ибо стабилизатора нет. АЦП 12-ти битный, собственно собирается все это на Cortex M3.
Tanya, спасибо большое, очень занятная идея, но на мультинажатие не подходит(
xemul, увы, просто, нет стабилизатора напряжения, и не будет, ибо больно дорого на каждый вход вешать стаб.
DAV, спасибо =)
alexvu, к сожалению с 5-ю входами не вариант вообще. Надо именно аналог с резисторами, чтобы отличать кто в цепи замкнулся -> что сделать. Но, увы, с такой погрешностью я в 32 комбинации при всем желанию не влезу, а точность поднять никак не удастся.
ViKo, спасибо =)
Цитата(ReRayne @ Nov 24 2011, 19:36)

под 5% имеется ввиду именно падение опорного напряжения, ибо стабилизатора нет. АЦП 12-ти битный, собственно собирается все это на Cortex M3.
Отношение номиналов сопротивлений в делителе не зависит от приложенного к делителю напряжения. Если напряжение на делителе использовать в качестве опоры АЦП, то на выходе АЦП будет код, пропорциональный этому отношению.
Цитата
нет стабилизатора напряжения, и не будет, ибо больно дорого на каждый вход вешать стаб.
Мысль широка, но столько я не выкурю...
Цитата
с такой погрешностью я в 32 комбинации при всем желанию не влезу, а точность поднять никак не удастся.
Погрешность будет определяться погрешностями резисторов в делителе и погрешностями АЦП, но не опоры.
Возьмите бамажку, порисуйте формУлы - глядишь, да и получится.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.