Емкостный тач-сенсор на AVR

touchsensor photoСхема емкостного датчика, представленная в этой статье может использоваться как сенсорная клавиатура. Емкостный сенсор реагирует на изменение емкости на электроде из-за приближения проводящего объекта, например, пальца.

Электрод выполнен в виде квадратной площадки размером 10мм на печатной плате и покрыт изолирующим слоем, например, лаокм или скотчем. В качестве детектора использован ATtiny2313 с резисторами подтяжки в 1M. Время интегрирования в нормальном состоянии определяется резистором подтяжки и входной емкостью вывода порта и електрода. Если дотронуться до электрода пальцем, время интергирования увеличивается и может определяться прикосновение. Время интегрирования увеличивается до нескольких десятков микросекунд.

touchsensor sch

 

Алгоритм работы

Для начала каждая точка калибруется (запоминается эталонное время для емкостей), затем начинается сканирование с постоянной частотой. Когда время интегрирования увеличивается и превышает порог, оно трактуется как "срабатывание". Для стабильности срабатываний введен некоторый гистерезис. Время измерения для каждой точки зависит от времени интегрирования, поэтому измерения выполняются очень быстро.

Схема измеряет время интегрирования с разрешением в один такт (100 нс) с помощью аналогового компаратора и модуля input capture. Однако, этот модуль доступен не для всех выводов контроллера. Чтобы реализовать емкостный сенсор на любов выводе, время интегрирования измеряется программно и разрешение в данном случае составляет 3 такта (375нс).

touchsensor photo

Резюмируя, можно сказать, что емкостный сенсор может быть с легкостью реализован на любом микроконтроллере. Изолирующий слой может быть до 1 мм толщиной (в зависимости от диэлектрической константы) . На ATtiny2313 может быть реализовано до 15 контактов. В программе нет алгоритма защиты от помех при работе в реальной среде, так как она написана в экспериментальных целях, при работе в реальных условиях может понадобиться шумоподавляющий алгоритм.

Скачать программу

 

Загрузка...