Сенсорные интерфейсы на базе технологии PSoC CapSense
Ранее в статье [1] вниманию читателей журнала был предложен краткий обзор микросхем для построения сенсорных человеко-машинных интерфейсов. За прошедший год интерес к использованию таких технологий в бытовых и мобильных приложениях значительно вырос. В частности, технология PSoC CapSense, предложенная компанией Cypress, нашла применение в мобильных телефонах и различной бытовой технике некоторых ведущих мировых производителей. Стоит заметить, что перечисленные приложения не единственные, где могут быть востребованы сенсорные интерфейсы. Такие достоинства, как долговечность и вандалоустойчивость, позволяют рассматривать сенсорные клавиатуры в качестве альтернативы механическим в банкоматах, домофонах и других аналогичных приложениях.
Технология CapSense компании Cypress существует на рынке около двух лет. Она реализована на базе микроконтроллеров PSoC (Programmable System on Chip). Отличие PSoC от обычных микроконтроллеров состоит в том, что центральное процессорное ядро M8C обрамляют конфигурируемые цифровые и аналоговые блоки, а не законченные функциональные узлы. В общем виде цифровой блок в PSoC представляет собой конечный автомат, на базе которого пользователь может создать различные функциональные узлы (UART, SPI, таймер, PWM и т. д.), просто изменяя содержимое конфигурационных регистров (функциональные узлы в среде разработки носят название User’s module, далее мы будем называть их пользовательскими модулями). Сходным образом технология Cypress PSoC поддерживает аналоговые функциональные блоки, которые включают в себя операционные усилители, компараторы, массивы резисторов, а также блоки на переключаемых конденсаторах, что позволяет строить группы фильтров, АЦП и ЦАП. Каждый пользовательский модуль PSoC имеет собственное описание (DataSheet), где приводятся все необходимые параметры и рекомендации по работе с данным модулем.
Сегодня Cypress предлагает три семейства контроллеров, которые поддерживают технологию PSoC CapSense — CY8C21x34, CY8C24x94 и CY8C20x34. Выбор контроллера определяется задачами, которые он должен решать в приложении. Рассмотрим основные отличия представленных семейств.
Контроллеры серии CY8C20x34 входят в специализированное семейство, разработанное с учетом требований технологии CapSense. Данное семейство имеет наименьшее из рассматриваемых энергопотребление и наименьшую восприимчивость к наводимым помехам в диапазоне 800 МГц и 1,9 ГГц. Микросхемы семейства могут быть рекомендованы для использования в мобильных приложениях (например, в радиопередающих устройствах или сотовых телефонах). Программная поддержка технологии CapSense для этого семейства реализована в пользовательском модуле CSA.
Контроллеры семейств CY8C21x34 и CY8C24x94 являются универсальными, их аналоговые и цифровые блоки могут быть сконфигурированы для решения широкого круга задач, отличных от CapSense. Программная поддержка технологии CapSense для контроллеров этих серий реализована в пользовательских модулях CSD и CSR (последний не рекомендован для использования в новых проектах). Контроллер CY8C24x94 содержит также аппаратный блок USB с поддержкой режима full-speed. На базе аналоговых модулей могут быть реализованы блоки АЦП, ЦАП, полосовые, низкочастотные и режекторные фильтры, усилители и компараторы. На цифровых — таймеры, счетчики, коммуникационные интерфейсы, генераторы псевдослучайных последовательностей и ШИМ. Существенным отличием этих семейств от микросхем CY8C20x34 является возможность подключения экрана Shield Electrode, который обеспечивает защиту от ложных срабатываний при наличии на сенсорной панели капель или тонкой пленки влаги. Поддержка такого режима реализована в пользовательском модуле CSD. Пример использования экрана и результаты тестирования приведены в [12].
Для работы с описанными микроконтроллерами производитель предлагает следующие отладочные наборы:
- CY3214-PSoCEvalUSB на базе CY8C24x94 (универсальный отладочный набор), он может быть использован для тестирования возможностей технологии CapSense и стандартных функций, характерных для всех семейств контроллеров PSoC (рис. 1).
- CY3212-CapSense на базе CY8C21x34, а также CY3203-CapSense на базе CY8C20x34 являются специализированными отладочными наборами для тестирования и отладки приложений CapSense (рис. 2), оба набора по внешнему виду не отличаются друг от друга.


На момент выхода статьи также будет доступен новый отладочный набор CY3270 PSoC FirstTouch Starter Kit (рис. 3). Набор включает в себя два модуля — USB-модуль на базе контроллера CY8C24x94 и модуль расширения на базе контроллера CY8C21x34. По умолчанию USB-модуль используется в качестве программатора для модуля расширения, по желанию можно применять его в качестве самостоятельной отладочной платы. На плате модуля расширения реализована 7-сегментная сенсорная полоса прокрутки (слайдер), установлены датчики температуры, освещенности, элементы светодиодной и звуковой индикации, предусмотрен доступ к 4 аналогово-цифровым линиям ввода/вывода микроконтроллера для подключения дополнительных периферийных устройств или организации коммуникационного интерфейса, например I2C.

Рассмотрим базовые этапы разработки приложения CapSense на примере контроллеров семейства CY8C21x34 и отладочной платы CY3212-CapSense. Для этого понадобится собственно набор CY3212, среда разработки PSoC Designer (в бесплатной версии доступен только ассемблер, лицензия на компилятор Си может быть приобретена отдельно или в составе набора разработчика CY3215-DK (рис. 4), который включает также внутрисхемный эмулятор), программа MultiChart и внутрисхемный программатор CY3210-MiniProg (входит в состав отладочного набора). Вместо PSoC Designer можно воспользоваться визуальной средой разработки PSoC Express. Данная среда не требует знания языков программирования, приложение «собирается» из готовых блоков. В последних версиях разработчику дана возможность создавать и включать в PSoC Express собственные блоки. Этот пакет может быть рекомендован для начального тестирования и оценки возможностей сенсорных интерфейсов, реализованных на базе CapSense.

Перед созданием проекта кратко рассмотрим основные параметры библиотек CapSense, общие для всех существующих версий CSR, CSD и CSA (рис. 5).
- Raw Count — величина изменения емкости сенсора, выраженная в относительных единицах — отсчетах (count).
- Baseline — оценка среднего значения выходного сигнала системы в неактивном состоянии сенсора. Эта оценка является опорным значением, относительно которого принимается решение о состоянии сенсора. Данный параметр автоматически подстраивается в процессе работы, в частности — с целью компенсации изменения температуры окружающей среды.
- Difference Count — разница между RawCount и Baseline, использующаяся для принятия решения о событии (касание сенсора).
- Noise Threshold — шумовой порог, использующийся для обновления значения Baseline. Если текущее значение меньше данного порога, происходит обновление текущей оценки.
- ON Threshold (Finger Threshold + «гистерезис») — если значение Difference Count превышает данную величину, состояние сенсора меняет свое значение — из состояния OFF переходит в состояние ON.
- OFF Threshold (Finger Threshold — «гистерезис») — если значение Difference Count падает ниже данной величины, состояние сенсора меняет свое значение — из состояния ON переходит в состояние OFF.

Для обеспечения минимального соотношения «сигнал/шум» по рекомендации производителя пороги должны быть установлены следующим образом: Noise Threshold должен составлять 40% от уровня полезного сигнала, OFF Threshold — 60% и ON Threshold — 90%. Такие установки должны обеспечить отношение «сигнал/шум», равное 5/1 для наихудших условий работы [11].
Набор CY3212 может быть использован для работы с пользовательскими модулями CSR и CSD. Производитель рекомендует использовать для новых разработок модуль CSD (рис. 6), в котором были учтены и исправлены аппаратно-программные недостатки модуля CSR.

Для того чтобы можно было использовать модуль CSD, плата требует небольшой доработки: в схему необходимо добавить два пассивных элемента — конденсатор Сint (в некоторых документах обозначается как Cmod) и резистор Rb. Данные элементы совместно с компаратором CMP и триггером Latch образуют дельта-сигма модулятор (рис. 6). Емкость конденсатора может быть выбрана из диапазона 4,7–47 нФ исходя из требований достижения максимального отношения «сигнал/шум». В большинстве случаев оптимальные результаты достигаются при номинале емкости 5,6–10 нФ. Значение сопротивления в общем случае зависит от эквивалентной емкости сенсора и может лежать в диапазоне от 500 Ом до 10 кОм. Сопротивление подбирается так, чтобы значение Baseline составляло ≈50–70% от максимального числа отсчетов при отсутствии касания. Например, при выбранном разрешении 9 разрядов максимальное число отсчетов будет составлять 512. Номинал резистора должен будет в этом случае обеспечивать уровень Baseline в 360 = 512×0,70.
На отладочной плате предусмотрено посадочное место для монтажа конденсатора Сint, обозначенное как С0. Резистор Rb можно установить с помощью навесного монтажа между выводом 4 микросхемы U1 (одна из контактных площадок С0) и выводом 4 разъема J2 (разъем для подключения внутрисхемного программатора CY3212-MiniProg, входящего в состав данного набора).
Проект выполняется в интегрированной среде разработки PSoC Designer.
После стандартной операции создания проекта и выбора целевой микросхемы (в данном случае CY8C21434) попадаем в окно Device Editor (рис. 7), в котором под вкладками в левой части перечислены все библиотеки (User Module), которые могут быть реализованы на базе данной микросхемы. В центральной части окна отображается информация по выбранному блоку — необходимые ресурсы для его реализации, блок-схема, подробное описание команд и примеры его использования. В реализуемом приложении на базе отладочного набора CY3212 нам могут понадобиться следующие библиотеки: собственно CapSense — CSD и LCD — для отображения служебной информации на 2-строчном ЖК-индикаторе (рис. 2), входящем в комплект набора. Кроме того, необходимо предусмотреть интерфейс для передачи параметров модуля CSD на компьютер по последовательному каналу. Эти параметры будут необходимы для тестирования работы блока CSD и настройки его параметров в случае необходимости.

Следующий этап — установка параметров выбранных библиотек: User Module Parameters (рис. 8). Основные параметры — Finger Threshold, Noise Threshold и Hysteresis — были описаны выше. Кроме них на чувствительность и помехоустойчивость приложения будут влиять следующие настройки:

Reference и Ref Value — схема формирования и значение опорного напряжения компаратора (рис. 9). Схема «а» не требует дополнительных внутренних ресурсов контроллера, но формируемое напряжение будет зависеть от стабильности источника питания. Схема «б» использует низкочастотный фильтр на базе аналогового блока ASE, обеспечивает стабильное опорное напряжение для большинства приложений с возможностью подстройки опорного напряжения, текущее значение определяется Ref Value. Схема «в» — внешний делитель напряжения. Схема «г» — НЧ-фильтр, реализованный на внешних компонентах, с возможностью подстройки значения опорного напряжения. Наилучшее сглаживание флуктуаций напряжения питания обеспечивает схема «г», наихудшее — схема «a». Возможность подстройки опорного напряжения может быть необходима, если сенсоры имеют заметные различия по емкости (зависят от геометрических размеров). В этом случае программно можно установить индивидуальное значение Ref Value для каждого сенсора: чем больше собственная емкость данного сенсора, тем большее значение Ref Value рекомендуется устанавливать для него. Зависимость выходного сигнала от значения опорного напряжения приведена на рис. 10.


Scanning Speed определяет скорость опроса сенсоров — Ultra Fast, Fast, Normal, Slow. Уменьшение скорости приводит к увеличению отношения «сигнал/шум», уменьшению влияния флуктуаций температуры и напряжения питания. C аппаратной точки зрения изменяется коэффициент деления VC1 (рис. 6).
Resolution определяет временной интервал накопления отсчетов Raw Count. Увеличение данного параметра увеличивает чувствительность и отношение «сигнал/шум». Максимальное разрешение рекомендуется использовать для датчиков приближения. C аппаратной точки зрения изменяются коэффициенты деления VC2, VC3 и ADCPWM (рис. 6).
При минимальных значениях Scanning Speed и Resolution время сканирования составляет 75 мкс, при максимальных — 23 мс (при тактовой частоте 24 МГц). На этапе отладки их необходимо будет скорректировать для достижения требуемой чувствительности и оптимального соотношения «сигнал/шум». Кроме этого, параметры можно устанавливать индивидуально для каждого сенсора в программе. Такая возможность, в частности, позволяет скорректировать чувствительность каждого из сенсоров (например, если они имеют отличную друг от друга форму и размеры).
С помощью специального мастера (CSD Wizard — рис. 11) зададим количество кнопок и их привязку к портам микроконтроллера. Процесс достаточно прост — голубой квадрат с номером выбранного порта МК из правого поля перетаскивается мышкой в левое на нужный номер. Зеленым цветом отмечены выводы контроллера, занятые другими ресурсами приложения. В нашем случае порт 2 назначен для работы с LCD-дисплеем, P0(1,5) — для подключения резистора Rb и конденсатора Сint(mod). Серым цветом обозначены выводы контроллера, уже назначенные в качестве сенсора. Слайдеры конфигурируются аналогичным образом.

Аппаратная конфигурация выполнена, переходим к программной части. Программа будет выполнять следующие функции — сканирование состояния кнопок, вывод в программу MultiChart параметров состояния кнопок и отображение на ЖК-дисплее информации о том, какая кнопка в данный момент нажата. Текст программы с комментариями приведен ниже.


После завершения компиляции проекта при использовании внутрисхемного программатора MiniProg переходим в режим программирования нажатием кнопки меню Program Part (рис. 12), после чего вызывается специальная утилита для программирования PSoC — PSoC Programmer (рис. 13). Утилита проста в использовании, при вызове ее из PSoC Designer и подключенном к целевой плате программаторе остается только нажать кнопку Program.


После загрузки программного обеспечения в микроконтроллер отладочная плата должна при нажатии одной из кнопок отображать на ЖК-дисплее информацию о номере нажатой кнопки.
Заключительный этап разработки сенсорного интерфейса на базе PSoC CapSense — настройка требуемой чувствительности сенсоров и соотношения «сигнал/шум». Настройка необходима для того, чтобы учесть влияние толщины и типа покрытия, а также воздействие электромагнитных помех. Оценку параметров Raw Count, Difference Count и Baseline удобнее всего производить с помощью программы MultiChart, которая выводит исследуемые параметры в графическом или текстовом виде (рис. 10, 14). Для этого отладочная плата подключается к COM-порту ПК через микросхему, согласующую уровни микроконтроллера (в рассматриваемом проекте — 5 В) и RS-232 (12 В). Если ПК не имеет COM-порта, а оборудован портом USB, то можно использовать переходной кабель TTL-232R производства FTDI на базе микросхемы FT232R, либо отладочную плату на базе микроконтроллера CY8C24x94 из набора CY3240 — I2USB. В случае использования кабеля TTL-232R для подключения используются только сигналы RxD и GND, которые подключаются к 5 выводу разъема J2 и контрольной точке Gnd отладочной платы CY3212 соответственно. Отладочная плата CY3240 снабжена ответным разъемом и подключается напрямую к разъему J2.


Для вычисления отношения «сигнал/шум» понадобится информация об изменениях параметра — Raw Count (рис. 3), на рис. 14 данный параметр отображен красным цветом. Имитировать такие условия можно, например, касаясь пальцем края кнопки, или прикладывая к поверхности сенсора монету. Результаты измерений для рассматриваемого примера представлены на рис. 14:
- нет касания сенсора пальцем, отображается шум, размах которого составляет 266–253 = 13. Полученное значение является амплитудой шума (рис. 14а);
- легкое касание края сенсора, размах полезного сигнала составляет 310–260 = 50. Отношение «сигнал/шум» равно 50/13 = 3,85 (рис. 14б);
- палец находится в центре сенсора, размах полезного сигнала составляет 510–260 = 250. Отношение «сигнал/шум» равно 250/13 = 19,2 (рис. 14в).
Дальнейшая настройка параметров во многом будет зависеть от толщины и материала покрытия, размещения сенсоров относительно друг друга (например, чтобы касание одного сенсора не вызывало положительный «отклик» в соседнем), требований к ЭМИ.
Следуя рекомендациям производителя, приведенным в документации, можно создать интерфейс, отвечающий всем современным требованиям. В частности, пример аппаратно-программной реализации сенсорного интерфейса, приведенный в документе [12], может быть взят за основу для использования технологии CapSense в уличных банкоматах, домофонах и других приложениях, где внешняя панель прибора с сенсорным интерфейсом может подвергаться воздействию влаги. Вандалоустойчивость может быть обеспечена подбором внешнего покрытия — пластик, каленое стекло.
Литература
- Кривченко И. В. Современные интегральные микросхемы для построения емкостных сенсоров // Компоненты и технологии. 2006. № 9.
- PSoC CY8C20x34 Technical Reference Manual. Cypress Semiconductor www.cypress.com
- PSoC Mixed Signal Array Technical Reference Manual. Cypress Semiconductor. www.cypress.com
- Capacitance Sensing — CapSense Device and Method Selection Guide. Application Note. Cypress Semiconductor. www.cypress.com
- Layout Guidelines for PSoC CapSense. Application Note. Cypress Semiconductor. www.cypress.com
- EMC Design Considerations for PSoC CapSense Applications. Application Note. Cypress Semiconductor. www.cypress.com
- Power Consumption and Sleep Considerations in Capacitive Sensing Applications. Application Note. Cypress Semiconductor. www.cypress.com
- Capacitive Switch Scan. Application Note. Cypress Semiconductor. www.cypress.com
- Migrating from CSR to CSA. Application Note. Cypress Semiconductor. www.cypress.com
- Migrating from CSR to CSD. Application Note. Cypress Semiconductor. www.cypress.com
- CapSense Best Practices. Application Note. Cypress Semiconductor. www.cypress.com
- Waterproof Capacitance Sensing. Application Note. Cypress Semiconductor. www.cypress.com