Сенсорные интерфейсы
на базе технологии 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).
О
| £*
гіЯйЬі X/
Рис. 1. Отладочный набор CY3214-PSoCEvalUSB
• CY3212-CapSense на базе CY8C21x34, а также CY3203-CapSense на базе CY8C20x34 являются специализированными отладочными наборами для тестирования и отладки приложений CapSense (рис. 2), оба набора по внешнему виду не отличаются друг от друга.
Рис. 2. Отладочный набор CY3212-CapSense
.. t -
PSoC FirstTouch
THE ULTIMATE STARTEfl(f/Г
. 'А /ГД %-
^ <. r *
• « A
: юшвг;
JL< >'a\T
На момент выхода статьи также будет доступен новый отладочный набор 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—разница между Raw Count и 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, плата требует небольшой доработки: в схему необходимо добавить два пассивных элемента — конденсатор Cint (в некоторых документах обозначается как Cmod) и резистор Rb. Данные элементы совместно с компаратором CMP и триггером Latch образуют дельта-сигма модулятор (рис. 6). Емкость конденсатора может быть выбрана из диапазона 4,7-47 нФ исходя из требований достижения максимального отношения «сигнал/шум». В большинстве случаев оптимальные результаты достигаются при номинале емкости 5,6-10 нФ. Значение сопротивления в общем случае зависит от эквивалентной емкости сенсора и может лежать в диапазоне от 500 Ом до 10 кОм. Сопротивление подбирается так, чтобы значение Baseline составляло «50-70% от максимального числа отсчетов при отсутствии касания. Например, при выбранном разрешении 9 разрядов максимальное число отсчетов будет составлять 512. Номинал резистора должен будет в этом случае обеспечивать уровень Baseline в 360 = 512x0,70.
На отладочной плате предусмотрено посадочное место для монтажа конденсатора Cint, обозначенное как С0. Резистор Rb можно установить с помощью навесного монтажа
Рис. 4. Набор разработчика CY3215-DK
Рис. 5. Графическое представление основных параметров CapSense
Рис. 7. PSoC Designer в режиме выбора пользовательских модулей
между выводом 4 микросхемы U1 (одна из контактных площадок С0) и выводом 4 разъема J2 (разъем для подключения внутрисхемного программатора CY3212-MiniProg, входящего в состав данного набора).
Проект выполняется в интегрированной среде разработки PSoC Designer.
После стандартной операции создания проекта и выбора целевой микросхемы (в данном случае CY8C21434) попадаем в окно Device Editor (рис. 7), в котором под вкладками в левой части перечислены все библиотеки (User Module), которые могут быть реализованы на базе данной микросхемы. В центральной части окна отображается информация по выбранному блоку — необходимые ресурсы для его реализации, блок-схема, подробное описание команд и примеры его использования. В реализуемом приложении на базе отладочного набора CY3212 нам могут
понадобиться следующие библиотеки: собственно CapSense — CSD и LCD — для отображения служебной информации на 2-строчном ЖК-индикаторе (рис. 2), входящем в комплект набора. Кроме того, необходимо предусмотреть интерфейс для передачи параметров модуля CSD на компьютер по после-
ICSD 4
User Modtie Parameters Value
Frtger Threshold 90
Noise Threshold 50
B asefcieU pdateT hreshdd 200
Sensors Autoreset Enabled
Hysteresis 1=' :
Debounce 50
N egativeN oiseT hreshold 10
L owB aselmeR eset 50
Scanning Speed Normal
Resolution 9
Modulator Capacttof Pn P0(3]
Feedback Resistor Pin Pin)
Reference ASE11
Ref Value 1
ShietdElectiodeOut None
Рис. 8. Окно конфигурации пользовательского модуля CSD
довательному каналу. Эти параметры будут необходимы для тестирования работы блока CSD и настройки его параметров в случае необходимости.
Следующий этап — установка параметров выбранных библиотек: User Module Parameters (рис. 8). Основные параметры — Finger Threshold, Noise Threshold и Hysteresis — были описаны выше. Кроме них на чувствительность и помехоустойчивость приложения будут влиять следующие настройки:
Reference и Ref Value — схема формирования и значение опорного напряжения компаратора (рис. 9). Схема «а» не требует дополнительных внутренних ресурсов контроллера, но формируемое напряжение будет зависеть от стабильности источника питания. Схема «б» использует низкочастотный фильтр на базе аналогового блока ASE, обеспечивает стабильное опорное напряжение для большинства приложений с возможностью подстройки опорного напряжения, текущее значение определяется Ref Value. Схема «в» — внешний делитель напряжения. Схема «г» — НЧ-фильтр, реализованный на внешних компонентах, с возможностью подстройки значения опорного напряжения. Наилучшее сглаживание флуктуаций напряжения питания обеспечивает схема «г», наихудшее — схема «a». Возможность подстройки опорного напряжения может быть необходима,
Рис. 10. Зависимость изменения выходного сигнала от Ref Value
если сенсоры имеют заметные различия по емкости (зависят от геометрических размеров). В этом случае программно можно установить индивидуальное значение 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 и конденсатора Q^mod). Серым цветом обозначены выводы контроллера, уже назначенные в качестве сенсора. Слайдеры конфигурируются аналогичным образом.
Аппаратная конфигурация выполнена, переходим к программной части. Программа будет выполнять следующие функции — сканирование состояния кнопок, вывод в программу MultiChart параметров состояния кнопок и отображение на ЖК-дисплее информации о том, какая кнопка в данный момент нажата. Текст программы с комментариями приведен ниже.
#include <m8c.h> // описания переменных и макросов для
// используемой микросхемы #include «PSoCAPI.h» // описания API для всех пользовательских // модулей проекта // описание переменных и макросов для // используемых пользовательских модулей #include «CSD.h»
#include «LCD.h»
#include «TX8.h»
// определение маски для каждой из кнопок отладочной платы
#define BUTTON_0 0x02 #define BUTTON_l 0x04 #define BUTTON_2 0x08 #define BUTTON_3 0x20 #define BUTTON_4 0x40 #define BUTTON_5 0xl0 #define BUTTON_6 0x0l
void main()
I
M8C_EnableGInt;
// инициализация регистров и запуск пользовательских
// модулей LCD и CSD
LCD_Start();
CSD_Start();
// установка значения порога касания FingerThreshold CSD_SetDefaultFingerThresholds();
// установка значения Baseline для каждого сенсора CSD_InitializeBaselines();
// инициализация регистров и запуск пользовательского // модуля TX8 (последовательный интерфейс)
TX8_Start();
while (l) I
// сканирование сенсоров CSD_ScanAllSensors();
// обновление значения Baseline для всех сенсоров CSD_UpdateAllBaselines();
// Передача по последовательному интерфейсу параметров // RawCount, DifferenceCount и Baseline в ПК для // отображения в программе MultiChart TX8_PutCRLF();
TX8_Write((char *) (CSD_waSnsResult), CSD_TotalSensoiCount*2); TX8_Write((char *) (CSD_waSnsBaseline), CSD_TotalSensorCount*2) TX8_Write((char *) (CSD_waSnsDiff), CSD_TotalSensorCount*2);
TX8_PutChar(0);
TX8_PutChar((CHAR)0xFF);
TX8_PutChar((CHAR)0xFF);
// сравнение DifferenceCount с порогом FingerThreshold для
// каждого из сенсоров
CSD_bIsAnySensorActive();
if ((*CSD_baSnsOnMask) & BUTTON_0) // В качестве примера на экран выводится сообщение, что нажата кнопка с нулевым номером. Аналогичным образом можно сделать вывод информации от других кнопок.
I
LCD_Position(0,0);
LCD_PrCString(«0 «);
LCD_Position(1,0);
LCD_PrHexByte(CSD_waSnsResult[0]);
}else
I
LCD_Position(0,0); LCD_PrCString(« «) LCD_Position(1,0); LCD_PrCString(« «)
После завершения компиляции проекта при использовании внутрисхемного программатора MiniProg переходим в режим программирования нажатием кнопки меню Program Part (рис. 12), после чего вызывается специальная утилита для программирования PSoC — PSoC Programmer (рис. 13). Утилита проста в использовании, при вызове ее из PSoC Designer и подключенном к целевой плате программаторе остается только нажать кнопку Program.
Рис. 12. Меню PSoC Designer перехода в режим программирования или отладки
*■ D:\Program\CAPSCNSE_MONITOR\CapScnsc_CY3212\outputlcapscnsc_cy3212.hex PSoC Programmer f. ]fD|fS
Programming ytities View Help
G^Fik Lo*d Propun ?1 Check aim ?] R*«i
3ort Device Family Device
'.ll!j;pio.]l ї:УFiП4ч£ГHt!U(Ops 121x34 |CY8C21434-24LFXl
Ptogrammng Mode
jf* Rese< (• Powe* Cycle f Toggle Device Power 11 This software wl be expned in 72 days |
Actions I Resuls
Successful port connection for HINIProgl/03AFA04A0E0F at 11 51:59
Open MiniProgranmer at 11.51:58 MINI Version 1.73
Error Select and Connect a port first Can't Open Hex File D \Progr
Active HEX file set to D:\Progra»\CAPSENSE HONITOR\CapSense CY32l2\o
1 Device set to CY8C21434-24LFXI at 11:50:44 8192 FLASH bytes
Device Family set to 21x34 at 11 50 44
Device set to CY8C214 34-24LFXI at 11.50:40
Device Family set to 21x34 at 11 50 40
|Por Hdp, press FI Not Powered Id* Connected
Рис. 13. Утилита для программирования микроконтроллеров PSoC — PSoC Programmer
& □ в АЗвВ %
StoutV#h CutfcnVvw
:cmx fiurmj_______________________________________________________________________Packet no (47 pkt/s)________________________________________________________________i^ err
Рис. 14. Изменение Raw Count (красный), Baseline (синий) и результирующий сигнал (зеленый): а) нет касания сенсора; б) легкое касание края сенсора
После загрузки программного обеспечения в микроконтроллер отладочная плата должна при нажатии одной из кнопок отображать на ЖК-дисплее информацию о номере нажатой кнопки.
Заключительный этап разработки сенсорного интерфейса на базе 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в).
Дальнейшая настройка параметров во многом будет зависеть от толщины и материала покрытия, размещения сенсоров относительно друг друга (например, чтобы касание одного сенсора не вызывало положительный «отклик» в соседнем), требований к ЭМИ.
Следуя рекомендациям производителя, приведенным в документации, можно создать интерфейс, отвечающий всем современным требованиям. В частности, пример аппаратно-программной реализации сенсорного интерфейса,
Cte s?wt ІиЛ Be*
□ ВЛЧаЯ %l
Ce^iaViw. CuuinV«w
Select data to display
Packet no. (45 pkt/s)
Рис. 14. Изменение Raw Count (красный), Baseline (синий) и результирующий сигнал (зеленый): в) палец касается центра сенсора
приведенный в документе [12], может быть взят за основу для использования технологии СарБеше в уличных банкоматах, домофонах и других приложениях, іде внешняя панель при-
бора с сенсорным интерфейсом может подвергаться воздействию влаги. Вандалоустойчивость может быть обеспечена подбором внешнего покрытия — пластик, каленое стекло. ■
Литература
1. Кривченко И. В. Современные интегральные микросхемы для построения емкостных сенсоров // Компоненты и технологии. 2006. № 9.
2. PSoC CY8C20x34 Technical Reference Manual. Cypress Semiconductor www.cypress.com
3. PSoC Mixed Signal Array Technical Reference Manual. Cypress Semiconductor. www.cypress.com
4. Capacitance Sensing — CapSense Device and Method Selection Guide. Application Note. Cypress Semiconductor. www.cypress.com
5. Layout Guidelines for PSoC CapSense. Application Note. Cypress Semiconductor. www.cypress.com
6. EMC Design Considerations for PSoC CapSense Applications. Application Note. Cypress Semiconductor.
www.cypress.com
7. Power Consumption and Sleep Considerations in Capacitive Sensing Applications. Application Note. Cypress Semiconductor. www.cypress.com
8. Capacitive Switch Scan. Application Note. Cypress Semiconductor. www.cypress.com
9. Migrating from CSR to CSA. Application Note. Cypress Semiconductor. www.cypress.com
10. Migrating from CSR to CSD. Application Note. Cypress Semiconductor. www.cypress.com
11. CapSense Best Practices. Application Note. Cypress Semiconductor. www.cypress.com
12. Waterproof Capacitance Sensing. Application Note. Cypress Semiconductor. www.cypress.com