060-Драйвер сенсорной клавиатуры «Touch Me» на ATtiny2313.

Автор: | 16.11.2010

ТитлС этой статьи я начинаю новую серию устройств под условным названием «Touch Me» (Коснись Меня). Серия «Touch Me» будет включать в себя различные сенсорные устройства ввода: кейпады, клавиши, датчики прикосновения … ну и еще, чего позже придумаю.
В качестве основы для сенсорных устройств данной серии я буду применять принцип замера паразитной емкости контактных площадок «сенсоров». Впервые такой способ контроля прикосновения я подсмотрел в проекте на сайте ЭЛМ Чана. Не знаю, Чан ли это придумал, но идея мне понравилась своей простотой. Не стану вдаваться в подробности, все можно посмотреть в первоисточнике, но, если кратко, то суть в замере времени заряда паразитной емкости цепей ножки микроконтроллера от нуля до уровня логической единицы. Паразитная емкость заметно возрастает, если поднести палец к электрическим цепям (контактной площадке) ножки, что служит сигналом прикосновения. На картинке это будет понятней:

Принцип работы сенсорной клавиши

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

Подключение сенсорной панели

Программно, алгоритм работы следующий (x — буква порта, n — номер бита порта):
1. Порт ножки переводится на вывод (1 -> DDRxn) и сбрасывается в ноль (0 -> PORTxn);
2. Порт ножки переводится на ввод, в высокоимпедансное Z-состояние (0 -> DDRxn). Так как до этого на ножке был ноль, а элементы электрической цепи ножки имеют определенную емкость, то начинается процесс заряда этой емкости через внешний резистор подтяжки;
3. С момента переключения ножки на ввод начинается отсчет времени с контролем состояния ножки (PINxn), как только на ножке появилась единица (PINxn = 1) — останавливается счетчик;
4. Полученное значение счетчика и есть емкость ножки в относительных единицах. По величине этого значения и можно судить о том есть ли прикосновение к сенсору или нет.

С теорией разобрались —
Перейдем к физической реализации данного принципа – плате «Touch Me»-драйвера.
Как и в варианте преобразователя USB to UART на ATtiny2313, плата которого разрабатывалась как универсальное устройство работы с USB (преобразователь, программатор …), плата «Touch Me»-драйвера должна в будущем послужить драйвером для других сенсорных устройств.

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


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

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

Плата устройства изначально разрабатывалась для SMD-компонентов, но из-за того, что у меня под рукой не оказалось ни одного ATtiny2313 в SOIC-корпусе (смотри предыдущий пост), чтобы не останавливать проект сделал плату и в TH-варианте. По такой оказии теперь есть два варианта платы драйвера

060-SMD-T2313-Touch-Me.lay - Плата "Touch Me"-драйвера на ATtiny2313 в SMD
060-TH-T2313-Touch-Me.lay - Плата "Touch Me" драйвера на ATtiny2313 в TH

В прошлой статье я попробовал ЛУТом нанести монтажный рисунок на плату. Вышло хорошо! Теперь буду стараться включать слой монтажного рисунка в свои сплановские рисунки печатных плат.

Монтажный рисунок и готовая, запаянная плата выглядят вот так:

Монтажный рискнок на плате Пайка платы готовая плата драйвера

На плате есть два разъема. Один разъем (12 каналов) предназначен для подключения контактных площадок-«сенсоров». Второй разъем служит для подключения программатора, входа-выхода UART, питания схемы. Еще есть места для подключения светодиодов индикации и выхода сигнала нажатия клавиш. Тут как Вам удобней, или разъем не ставить – светодиоды паять прямо на плату, или вынести светодиоды куда удобней и подключать их через разъем.

Распайка платы

Вы заметили, что на плате драйвера появились два новых пина со стороны подключения сенсорных каналов? Это линии GND и Vcc (для питания схемы подключенной к драйверу). Я ввел их для удобства. Файлы рисунков плат я подправил. Если Вы сделали плату без этого разъема, добавить его очень просто – просверлить два отверстия, вставить 2 пина разъема и навесным монтажом, проводами, припаять их параллельно боковому разъему питания. Этот разъем можно и не ставить, а питание взять с бокового разъема управления – смотрите сами.

Плата собрана — готова для прошивки!
Прошивки будут выкладываться для каждого конкретного устройства, поэтому ищите их в статье выбранного Вами устройства.  

Файлы к статье:
060-SMD-T2313-Touch-Me.lay - Плата "Touch Me"-драйвера на ATtiny2313 в SMD
060-TH-T2313-Touch-Me.lay - Плата "Touch Me" драйвера на ATtiny2313 в TH

Ссылки к статье: 
Проект ЭЛМ Чана сенсорных клавиш.

Что можно сделать с этим драйвером:
1 Простой сенсорный кейпад
2 063-12-ти канальный генератор эффектов на ATtiny2313.


(Visited 3 692 times, 9 visits today)

There are 90 comments

Комментарии подгрузятся после небольшой паузы.