Схемы и методы реализации емкостных датчиков касаний

Добавлено 5 ноября 2016 в 21:30

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

Предыдущая статья

Измерение изменений

Если вы читали предыдущую статью, то вы знаете, что суть емкостных датчиков прикосновений заключается в изменении емкости, которое происходит, когда объект (обычно палец человека) приближается к конденсатору. Присутствие пальца увеличивает емкость, так как:

  1. вводит вещество (т.е. человеческую плоть) с относительно высокой диэлектрической проницаемостью;
  2. обеспечивает проводящую поверхность, которая создает дополнительную емкость параллельно существующему конденсатору.

Конечно, сам факт того, что емкость изменяется, не особенно полезен. Для того, чтобы на самом деле реализовать емкостной датчик касаний, нам необходима схема, которая может измерять емкость с точностью, достаточной, чтобы идентифицировать увеличение емкости, вызванное наличием пальца. Существуют различные способы сделать это, некоторые довольно просты, другие более сложные. В данной статье мы рассмотрим два основных подхода для реализации емкостного сенсорного функционала: первый основан на постоянной времени RC (резистор-конденсатор) цепи, а второй основан на сдвигах частоты.

Постоянная времени RC цепи

Возможно, вы также испытываете чувства ностальгии по университету, когда видите экспоненциальную кривую, представляющую график напряжения во время заряда или разряда конденсатора. Возможно, кто-то при взгляде на эту кривую впервые понял, что высшая математика всё-таки имеет какое-то отношение к реальному миру, да и в век роботов, работающих на виноградниках, есть что-то привлекательное в простоте разряда конденсатора. В любом случае, мы знаем, что эта экспоненциальная кривая изменяется, когда изменяется либо резистор, либо конденсатор. Скажем, у нас есть RC цепь, состоящая из резистора 1 МОм и емкостного датчика касаний с типовой емкостью (без пальца) 10 пФ.

Сенсорный датчик касаний на базе RC цепи
Сенсорный датчик касаний на базе RC цепи

Мы можем использовать вывод входа/выхода общего назначения (настроенный, как выход) для заряда конденсатора до напряжения, соответствующего высокому логическому уровню. Затем нам необходимо разрядить конденсатор через большой резистор. Важно понимать, что вы не можете просто переключить состояние выхода на низкий логический уровень. Вывод I/O, сконфигурированный на выход, будет управлять сигналом низкого логического уровня, то есть, он создаст низкоомное соединение выхода с землей. Таким образом, конденсатор быстро разрядится через это низкое сопротивление – так быстро, что микроконтроллер не сможет обнаружить едва заметные временные изменения, созданные небольшими изменениями емкости. Что нам здесь нужно, так это вывод с большим входным сопротивлением, что заставит почти весь ток разряда течь через резистор, а это может быть достигнуто настройкой вывода для работы, как вход. Итак, сначала вы установите вывод, как выход, выдающий высокий логический уровень, а затем этап разряда, вызывается изменением режима работы вывода на вход. Результирующее напряжение будет выглядеть примерно следующим образом:

График напряжения разряда емкостного датчика касаний
График напряжения разряда емкостного датчика касаний

Если кто-то прикасается к датчику и тем самым создает дополнительную емкость 3 пФ, постоянная времени будет увеличиваться следующим образом:

Изменение кривой напряжения разряда емкостного датчика касаний при прикосновении к нему
Изменение кривой напряжения разряда емкостного датчика касаний при прикосновении к нему

По человеческим меркам время разряда не сильно отличается, но современный микроконтроллер, безусловно, может обнаружить это изменение. Скажем, у нас есть таймер с тактовой частотой 25 МГц; мы запускаем таймер, когда переключаем вывод в режим входа. Мы можем использовать таймер для отслеживания времени разряда, настроив этот же вывод действовать, как триггер, который инициирует событие захвата («захват» означает хранение значения таймера в отдельном регистре). Событие захвата произойдет, когда напряжение разряда пересечет порог низкого логического уровня вывода, например, 0,6 В. Как показано на следующем графике, разница во времени разряда с порогом 0,6 В составляет ΔT = 5.2 мкс.

Измерение изменения времени разряда емкостного датчика касаний на уровне порогового напряжения
Измерение изменения времени разряда емкостного датчика касаний на уровне порогового напряжения

С периодом тактовой частоты таймера 1/(25 МГц) = 40 нс, это ΔT соответствует 130 тактам. Даже если изменение емкости будет уменьшено в 10 раз, у нас всё равно будет разница в 13 тактов между нетронутым датчиком и датчиком, к которому прикоснулись.

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

Переменный конденсатор, переменная частота

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

Так называемый релаксационный генератор (генератор колебаний, пассивные и активные нелинейные элементы которого не обладают резонансными свойствами) представляет собой основную схему, которая может использоваться для этой цели. Для этого в дополнение к конденсатору датчика касаний требуются несколько резисторов и компаратор. Кажется, это вызывает больше проблем по сравнению с методом заряда/разряда, который обсуждался выше, но если ваш микроконтроллер обладает встроенным модулем компаратора, это не так уж и плохо. Я не буду вдаваться в подробности схемы этого генератора, потому что, во-первых, он обсуждается во многих других местах, и, во-вторых, маловероятно, что вы захотите использовать этот метод генератора, когда есть много микроконтроллеров и отдельных микросхем, которые предлагают высокопроизводительную емкостную сенсорную функциональность. Если у вас нет другого выбора, кроме как создать свою собственную схему емкостного сенсора касаний, я думаю, что метода заряда/разряда, описанный выше более прост. В противном случае, сделайте свою жизнь немного проще, выбирая микроконтроллер со специальным аппаратным обеспечением для емкостного датчика касаний.

Примером встроенного модуля, основанного на релаксационном генераторе, является периферия емкостного датчика в микроконтроллерах EFM32 от Silicon Labs:

Сенсорный интерфейс микроконтроллеров EFM32
Сенсорный интерфейс микроконтроллеров EFM32

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

Работа в реальности

Емкостная сенсорная система будет зависеть и от высокочастотного, и от низкочастотного шума.

Влияние низкочастотного и высокочастотного шума на время разряда емкостного датчика касаний
Влияние низкочастотного и высокочастотного шума на время разряда емкостного датчика касаний

Высокочастотный шум вызывает в измерениях времени разряда или количества фронтов незначительные изменения от отсчета к отсчету. Например, схема заряда/разряда без пальца, о которой говорилось выше, может иметь время разряда 675 тактов, затем 685 тактов, затем 665 тактов, затем 670 тактов и так далее. Значимость этого шума зависит от ожидаемого изменения времени разряда при поднесении пальца. Если емкость увеличивается на 30%, то ΔT будет составлять 130 тактов. Если наши высокочастотные изменения составляют только ±10 тактов, то мы можем легко отличить сигнал от шума.

Однако, увеличение емкости на 30% находится вблизи максимального значения изменения емкости, на которое мы можем рассчитывать. Если мы получим изменение только на 3%, ΔT составит 13 тактов, что слишком близко к уровню шума. Одним из способов уменьшения влияния шума является увеличение амплитуды сигнала, и вы можете сделать это за счет уменьшения физического расстояния, разделяющего печатный конденсатор и палец. Однако, часто механическая конструкция ограничена другими факторами, и вы уже больше не можете увеличить уровень сигнала. В этом случае вам необходимо понизить уровень шума, что может быть достигнуто путем усреднения. Например, каждое новое время разряда может сравниваться не с предыдущим временем разряда, а со средним значением последних 4 или 8 или 32 результатов измерений времени разряда. Метод, основанный на сдвиге частоты и описанный выше, автоматически включает усреднение, потому что небольшие изменения около средней частоты не будут существенно влиять на количество подсчитанных циклов в течение периода измерений, который более длительный по сравнению с периодом колебаний.

Низкочастотный шум относится к долговременным изменениям емкости датчика без прикосновения пальца; эти изменения могут быть вызваны условиями окружающей среды. Этот тип помехи не может быть усреднен, потому что изменения могут сохраняться в течение очель долгого периода времени. Таким образом, единственный способ эффективно бороться с низкочастотным шумом должен быть адаптивным: порог, используемы для обнаружения присутствия пальца, не может быть фиксированным значением. Вместо этого, он должен регулярно корректироваться на основе измеренных значений, которые не показывают значительные кратковременные изменения, такие как те, что вызваны приближением пальца.

Заключение

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

Теги

RC генераторДатчикЕмкостной датчик касанияЕмкостьПаразитная емкостьПечатный конденсаторПостоянная времени RC цепи

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

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