Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AЦП+ кнопки
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
ILYAUL
В проекте 6 кнопок + резистивный делитель на каждую и всё это подключенно на один вход АЦП.
Соответственно в взависимости от включенного делителя на входе АЦП свое напряжение.
АЦП включается каждую секунду для опроса. Делает 512 рабочих циклов + начальных 5 (атидребезг).
Происходит вычисление среднего значения всех 512 измерений - естественно , что АЦП настроен на выравнивание вправо и считывается значения только старшего регистра.
Всё бы ничего, но вот с одним вопросиком я никак определиться не могу- не хочется ставить прецензионные резисторы. Диапазон между любой из кнопок 0,5В (+-0,25) , но при применении обычных резисторов этот "коридорчик " может и плавать.
И вот здесь чего-то туплю - не могу прийти к какому-то определённому алгоритму его вычисления.
Может будут идейки? a14.gif
MrYuran
Цитата(ILYAUL @ Aug 4 2008, 12:39) *
И вот здесь чего-то туплю - не могу прийти к какому-то определённому алгоритму его вычисления.

Статейку читали?
для 6 кнопок достаточно будет и обычных 5% резисторов. Вот правда, двойные нажатия уже вряд ли распознаешь.
GDI
Может найти готовую R-2R матрицу, и места меньше займет и двойные нажатия отследить можно..
defunct
Цитата(ILYAUL @ Aug 4 2008, 11:39) *
Может будут идейки? a14.gif

используйте 2 входа по 3 кнопки на каждый.
допустимая точность резисторов при этом будет +/- 12.5%, плюс распознать можно будет одновременное нажатие любой комбинации этих 6 кнопок.
И по опыту, никакого специального атидребезга делать не надо, просто пускаете АЦП в free-running. А в пользовательской задаче например раз в 10-20 мс - смотрите результат.

Алгоритм вычисления - банальная таблица с описанием уровней комбинаций.
потом
Код
val = ADC;

for(i = 0; i < count(tab); i++)
{
   if (val > tab[i])
       // комбинация кнопок "i" найдена.
}
ILYAUL
Всем БОЛЬШОЕ СПАСИБО за идеи и статейку !!! Голова немного прояснилась . Во всех Ваших предложениях есть явно рациональные зерна и пожалуй я их объедененю пока всё собрано на макетке и можно правитьв любую сторону.
АЦП в free-running я включаю позже когда обнаруживаю клавишу MENU И здесь включается таймер , если через 50mc какая-то кнопка нажата после ее первого обнаружения , то я считаю - повтороное нажатие. и т .д.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.