Перейти к содержанию
    

Детектирование нажатия сенсорной кнопки

Стоит задача минимальными средствами реализовать сенсорную кнопку:

Есть портативный прибор с металлическим корпусом. Корпус соединен с минусом питания. На корпус через диэлектрик наклеена полоска металла, играющая роль сенсорной кнопки. Сверху все закрыто термоусадкой.

 

Полоса подключена к аналоговому входу контроллера:

post-40704-1482837719_thumb.png

 

При работе мультиплексор АЦП переключается на вывод с кнопкой и через встроенный в МК pull-up на кнопку подается короткий импульс. Sample&hold емкость в АЦП заряжается до какого-то уровня и этот уровень измеряется.

 

Кнопка работает:

post-40704-1482838521_thumb.png

 

Написал простой фильтр: мгновенное значение АЦП сравнивается с усредненным, если больше 20 несколько отсчетов подряд - нажатие регистрируется.

 

    ButtonVoltageRaw = ADC;

    ButtonVoltageAcc -= ButtonVoltageAcc >> 6;
    ButtonVoltageAcc += ButtonVoltageRaw;
    
    ButtonVoltage = ButtonVoltageAcc >> 6;


    if(ButtonVoltage > ButtonVoltageRaw && ButtonVoltage - ButtonVoltageRaw > 20)
    {
        if(ButtonPressed < 255)
        {
            ButtonPressed++;
            if(ButtonPressed > 2)
                ButtonVoltageAcc = ButtonVoltageRaw << 6; //Поймали нажатие
        }
    }
    else if(ButtonVoltage < ButtonVoltageRaw && ButtonVoltageRaw - ButtonVoltage > 20)
    {
        ButtonVoltageAcc = ButtonVoltageRaw << 6;
    }
    else
    {
        ButtonPressed = 0;
    }

 

Результат работы фильтра на темной линии:

post-40704-1482838745_thumb.png

 

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

 

Есть сомнения, что мой способ фильтрации является в данном случае оптимальным, если кто знает что-то более подходящее, буду признателен за статьи, ссылки, примеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в сенсорных панелях понимание "оптимального" - у каждого свое.

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте о QTouch.

Ваш путь конечно тоже может что-то дать, но...

Пример работы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

QTouch? я даже не знаю какие слова подобрать...

скорее - то что мертво, умереть не может.

через 3...4мм оргстекла поле кнопок 3х4 = 12 штук - тупит, хреново детектирует, двойные (ложные) нажатия, про одновременные нажатия нескольких кнопок сразу я вообще лучше промолчу.

 

 

ИМХО, это чисто офисное применение под тонкой пластиковой, возможно формованной плёнкой, суммарной толщиной не более 2 мм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда-то давно делал так:

post-33486-1482940100_thumb.png

Изменено пользователем domowoj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стоит задача минимальными средствами реализовать сенсорную кнопку:

А не лучше ли взять МК со специальным аппаратным модулем? Тот же STM32 с TSC.

Матан сверху все равно понадобится, но, по крайне мере, железно все будет правильно сделано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

QTouch? я даже не знаю какие слова подобрать...

скорее - то что мертво, умереть не может......

Да Вы просто не умеете их готовить ;) Смотрим видео выше.

И еще одно.

ТС нужна всего одна кнопка...

И я о технологии говорил.

pict4.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите у TI - достаточно новые: FDC2212, FDC2214, FDC2112, FDC2114, может они подойдут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...