РадиоКот :: Использование резистивных сенсорных панелей в любительских устройствах
Например TDA7294

РадиоКот >Статьи >

Теги статьи: Добавить тег

Использование резистивных сенсорных панелей в любительских устройствах

Автор: Сергей Безруков (aka Ser60)
Опубликовано 04.02.2018
Создано при помощи КотоРед.

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

Резистивные панели имеют, как правило, 4 или 5 выводов и изменяют сопротивление между ними в зависимости от точки касания. О работе таких панелей можно прочитать, например, в Википедии, или [1]. Панели эти прозрачные и могут быть установлены на лицевой панели прибора или на ЖКИ, не снабжённых таковыми. В первой конструкции ниже используется 4-выводная панель MIKROE-241, выпускаемая сербской фирмой Mikro Elektronika. Размеры рабочей части панели 45×58мм.

Для определения координат точки касания можно использовать микроконтроллер со встроенным АЦП и возможностью переконфигурирования его выводов для работы с АЦП и в режиме вывода логических значений. В продаже имеются и собранные контроллеры с цифровым интерфейсом. В наших конструкциях мы используем замечательную микросхему контроллера TCS2007, выпускаемую фирмой Texas Instruments. Микросхема берёт на себя всю работу с панелью, не требует никакой инициализации, и поддерживает несколько команд, посылаемых в неё внешним микроконтроллером по интерфейсу I2C. При детектировании отдельного касания микросхема формирует низкий уровень напряжения на выводе INT, который может быть использован для вывода внешнего МК из сна. Всё что остаётся сделать – это считать из микросхемы данные о координатах X/Y точки касания. Данные эти представляют собой значения напряжений, измеренные внутренним АЦП микросхемы, которые, однако, пропорциональны геометрическим координатам точки касания в рабочей зоне панели. Для тестирования панели была собрана следующая схема.

Помимо контроллера панели IC1 в схеме присутствуют микроконтроллер IC2 и драйвер ЖКИ дисплея IC3. Про работу с последним можно прочитать в моей статье [2]. Драйвер подключен к той-же шине I2C, что и контроллер, и работает на 16-сегментный дисплей HG1 фирмы Varitronix. Схема питается от двух ААА батарей. Под сенсорную панель TP1 прикреплено с помошью клейкой ленты напечатанное на бумаге изображение 3×4 клавиатуры. При нажатии на цифровую “клавишу” клавиатуры производится отображение соответствующей цифры на ЖКИ. Таким образом, ЖКИ показывает до 8 последних введённых цифр. Ввод девятой цифры вызывает стирание дисплея и отображение введённой цифры в самой левой позиции дисплея. Нажатие клавиши под семёркой (backspace) приводит к стиранию последней введённой цифры. Наконец, при нажатии клавиши под девяткой (enter) производится стирание всего дисплея. Вместо стирания можно добавить функционал отработки введённого кода.

Для реализации приведённого алгоритма МК производит инициализацию драйвера ЖКИ по подаче питания на схему и погружается в глубокий сон с ожиданием прерывания по падающему уровню на выводе INT IC1. Запрос на прерывание произойдёт при касании панели. МК при этом просыпается и посылает в IC1 команду 0xC0 для измерения X координаты точки касания. Измерение с 12-битным разрешением занимает менее 1 мс, отсчитываемой таймером в МК. По истечении этого промежутка производится чтение 2-х байт из IC1 и сразу подаётся команда 0xD0 для определения Y координаты точки касания, которая аналогично считывается МК спустя 1 мс. В программе МК полученные данные преобразуются в геометрические координаты точки касания для определения нажатой клавиши клавиатуры. В промежутках между измерениями IC1 автоматически погружается в сон. В ней по умолчанию задействован встроенный MAV фильтр, помогающий отфильтровать шумы и наводки на входах. Однако, для полного подавления дребезга панели следует принимать меры в программе МК. Длительность дребезга сильно зависит от механических свойств самой панели и температуры. В моих экспериментах при комнатной температуре оказалось достаточным ввести задержку на 50мс между измерениями. Работу схемы можно посмотреть на кратком видео.

 

Одним из основных вопросов является насколько велико токопотребление такой системы при батарейном питании. Измеренное потребление самого контроллера IC1 с подключённой панелью в момент нажатия на неё показано ниже.

В промежутках между касаниями панели микросхема погружается в глубой сон с субмикроамперным потреблением. Мой тестер в режиме 200 мкА показывал 0. Я не мог поверить в это пока не подключил использованный выше Atmel Power Debugger. Однако, и он показал 0 (т.е. ниже его порога разрешения). Видимо, микросхема пробуждается от перепада напряжений на входах, вызванных касанием. Таким образом, её вполне можно использовать для включения устройства при касании панели в любой точке без потери энергии батареи на ожидание касания. Ниже показано потребление всей схемы при касании.

После чтения измерений из IC1 МК производит вычисление координат точки касания и коммуникацию с драйвером ЖКИ. Этим объясняется дополнительное потребление после двух пиков на графике. Однако в промежутках между касаниями среднее токопотребление схемы определяется лишь драйвером ЖКИ и получилось около 13 мкА, как показывает следующий график.

Использование резистивной панели в одном из законченных устройств было реализовано моим студентом Майклом ЛаВэлли. У него в доме имеется помещение, которое он оборудовал под хранение вин. Известно, что для полного наслаждения букетом восприятия вина его следует сервировать при определённой температуре, зависящей от типа вина. Для оперативного определения температуры винных бытылок была собрана следующая схема инфракрасного термометра по следам опубликованной здесь конструкции [3].

Само измерение температуры производится датчиком IC2. Однако, на этот раз вместо кнопочного интерфейса с пользователем использована резистивная сенсорная панель фирмы Newhaven Display International, установленная поверх ЖКИ HG1. Эта модель панели была выбрана потому, что она хорошо соответствует размерам экрана графического 128×64 ЖКИ той-же фирмы. Включение схемы производится касанием панели в любой точке, а выключение – автоматически после минуты неактивности.

 

Прибор измеряет температуру объекта перед сенсором или окружающую температуру воздуха. Переключение режимов производится нажатием на панель в нижней половине экрана. Температура показывается в градусах Фаренгейта или Цельсия. Для смены шкалы температур следует нажать на панель в верхней половине экрана. Прибор питается от двух батарей ААА через преобразователь напряжения IC4, который стабилизирует напряжение питания схемы при разряде бартарей. При включении устройства производится включение подсветки дисплея, помогающее измерять температуру в темном помещении хранилища. В неактивном режиме питание дисплея отключается, что приводит к потреблению лишь порядка пары микроампер от преобразователя.

Программа МК в первой конструкции разработана и отлажена в среде IAR Embedded Workbench, а для второй – в среде Keil µVision. Исходные тексты обоих программ и файл платы измерителя температуры для Eagle прилагаются. Для калибровки перевода данных TCS2007 в геометрические координаты точки касания, следует предварительно произвести калибровку панели. Для этого касаемся пальцем панели на границе около горизонтальных и вертикальных линий раздела зон нажатия (клавиш) и смотрим в отладчике возвращаемое значение АЦП из TCS2007. Касание каждой границы следует произвести 3 - 4 раза с последующим усреднением результатов. Можно воспользоваться и формулами расчёта координат из ДШ на TCS2007. Однако, для этого необходимо знать резистивные параметры панели, которые варьирутся от экземпляра к экземпляру. Микросхема содержит датчик температуры для компенсации температурного дрейфа сопротивления панели при использовании её в широком температурном диапазоне. Возможно использование микросхемы для определения степени нажатия на панель, а также с большими панелями и/или в условиях значительной подключённой или распределённой межэлектродной ёмкости. В таких случаях может быть необходимым не отключать драйверы панели между измерениями для исключения частого перезаряда этих ёмкостей. Это достигается посылкой соответствующих комманд в TCS2007, подробно описанных в её ДШ.

Литература

1. Лёгким движением руки: сенсорные панели
2. Об использовании драйвера ЖКИ CP2401
3. Пирометр для бесконтактного измерения температуры


Файлы:
Исходные тексты программ


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

29 1 3