Как откалибровать сенсорные экраны

Как откалибровать сенсорные экраны
Сенсорные экраны находят применение во множестве встроенных продуктов. Большинство сенсорных устройств требуют калибровки. Вот хороший.

Сенсорные экраны резистивного типа обычно используются в экономичных конструкциях. Их конструкция проста, их работа хорошо понятна, а аппаратное и программное обеспечение, необходимое для их поддержки, легко доступно у нескольких производителей.

Несмотря на преимущества сенсорных экранов резистивного типа, устройства, оснащенные ими, почти всегда требуют, чтобы алгоритм калибровки был первой задачей, которая запускается, когда конечный продукт выходит из коробки. Калибровка необходима, потому что трудно точно выровнять координаты сенсорного экрана с дисплеем (ЖК-дисплеем или другим) за ним. Если кнопка или другая «живая» функция на дисплее должна быть правильно активирована, координаты области, которой касаются экрана, должны быть достаточно близки к координатам функции на дисплее. В противном случае программное обеспечение может некорректно воздействовать на нажатия программных кнопок.

В этой статье предлагается эффективный и эффективный алгоритм калибровки для сенсорных экранов резистивного типа. Этот алгоритм был разработан после выявления источников ошибок сенсорного экрана и определения оптимального метода преобразования координат, предоставляемых сенсорным экраном, в соответствии с координатами дисплея. Метод калибровки требует, чтобы три цели или контрольные точки - не более, не менее - отображались и касались последовательно для определения индивидуальных калибровочных коэффициентов экрана. Эти калибровочные коэффициенты затем используются для перевода экранных координат в истинные координаты отображения.

Технология сенсорного экрана

Поперечное сечение сенсорного экрана резистивного типа показано на рисунке 1. Конструкция проста. Два листа стекла собраны вместе для образования сэндвича, внутренние стеклянные поверхности покрыты тонким слоем проводящего материала. Маленькие стеклянные шарики поддерживают номинальное расстояние между проводящими поверхностями. Когда палец или стилус давит на поверхность стекла, материал изгибается настолько, чтобы соприкасаться с нижним листом. В этой конструкции расстояние между бусинами определяет чувствительность экрана. Чем ближе шарики, тем выше давление, которое необходимо приложить, чтобы верхний стеклянный лист изогнулся достаточно, чтобы вступить в контакт.

Рисунок 1: Сечение сенсорного экрана резистивного типа
Рисунок 1: Сечение сенсорного экрана резистивного типа

Рисунок 2: Эквивалентная схема
Рисунок 2: Эквивалентная схема

Эквивалентная резистивная схема показана на рисунке 2: контроллер сенсорного экрана (дигитайзер или A / D) подает источники V на концы одного из проводящих слоев, в то время как другой проводящий слой на противоположном листе стекла играет Роль потенциометра стеклоочистителя. Значение Vtest, считываемое дигитайзером, зависит от места прикосновения к стеклу и контакта проводящих поверхностей. Затем контроллер преобразует показание напряжения в двоичную величину, представляющую, например, X-координату точки, к которой прикоснулся экран. Потенциал напряжения затем прикладывается к конечным точкам второй поверхности, и первая поверхность играет роль стеклоочистителя, давая значение, которое представляет Y-координату.

Контроллеры могут собирать 200 или более образцов в секунду. Частота дискретизации обычно зависит от фонового шума и качества контроллера. Интеллектуальный контроллер также может включать в себя полезные функции, такие как возможность прерывать процессор при обнаружении касания, а также возможность непрерывной выборки с заданной скоростью, пока к экрану прикасаются. Устройство не работает, когда к экрану не прикасаются.

Источники ошибок

Несколько источников ошибок влияют на координаты X и Y, создаваемые контроллером сенсорного экрана. Наиболее важными источниками ошибок являются электрические помехи, механические смещения и коэффициенты масштабирования. Индивидуальные особенности пользователя также могут играть роль, если, например, палец или инструмент, используемый для активации экрана, не поддерживают постоянный контакт или давление на него. Любая из этих ошибок может привести к получению непригодных данных, и все они должны быть компенсированы, если данные сенсорного экрана будут полезны.

Электрический шум, вызванный тепловыми или электромагнитными воздействиями, а также недостатки конструкции системы вездесущ во всех видах электрических систем. В случае сенсорного экрана аналого-цифровое преобразование особенно чувствительно к электрическим помехам из-за высокого входного импеданса входной схемы аналого-цифрового преобразователя. В дополнение к тщательной компоновке печатной платы, содержащей контроллер сенсорного экрана, проблемы с шумом обычно решаются путем добавления низкочастотной фильтрации к входам A / D. На помощь приходит также программное обеспечение, обычно отбрасывающее один или два младших бита аналого-цифрового преобразования и реализующее алгоритмы для удаления из потока выборки тех точек данных, которые выходят за допустимые пределы. Те же алгоритмы программного обеспечения могут удалять ошибки, введенные пользователем. Такие ошибки обычно проявляются как точки отбора проб, которые выходят далеко за допустимые пределы при изменении приложенного давления.

Рисунок 3: Круг на дисплее и его эквивалентные координаты сенсорного экрана
Рисунок 3: Круг на дисплее и его эквивалентные координаты сенсорного экрана

Механические смещения и коэффициенты масштабирования - это ошибки, устраняемые алгоритмом калибровки, предложенным в этой статье. Рассмотрим изображения на рисунке 3. Круг представляет собой изображение, отображаемое на ЖК-дисплее под сенсорным экраном; эллипс представляет собой преувеличенный набор координат, которые сенсорный экран может выдать, если пользователь должен будет отслеживать круглое изображение, отображаемое на ЖК-дисплее. Восстановленное изображение выглядит повернутым, переведенным и масштабированным с разным коэффициентом в каждом направлении. Задача алгоритма калибровки состоит в том, чтобы преобразовать набор координат, сообщаемых сенсорным экраном, в набор координат, которые точно представляют изображение на дисплее.

Математика

Чтобы вывести общее решение проблемы, удобно описать каждую точку как математическую величину. Из рисунка 4 видно, что каждую точку на дисплее можно описать как вектор PD и соответствующий ему эквивалент, представленный сенсорным экраном, как вектор P.

Рисунок 4: Векторные представления точки
Рисунок 4: Векторные представления точки

Также разумно предположить, что P и PD связаны величиной, которая преобразует координаты дисплея в видимые координаты сенсорного экрана, например:

PD = MP (1)

где М - соответствующая матрица преобразования и объект этого упражнения. Если мы можем присвоить значения элементам матрицы преобразования M, то мы можем решить для всех точек PD данные P точек, сообщаемых сенсорным экраном.

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

Если мы выражаем точки в виде пар (X, Y) на основе длины и угла вектора, то рассматриваемые точки дисплея и сенсорного экрана могут быть представлены следующими уравнениями:

(2а) (2а)

(2b) (2b)

Если указанные точки сенсорного экрана испытали поворот из-за смещения сенсорного экрана, а qr = qD - q - угловое смещение сообщаемой точки, промежуточная точка выражается как:

(3) (3)

Каждое из измерений X и Y также масштабируется по своему собственному коэффициенту, который мы будем называть KX и KY. Учет масштабирования дает следующее уравнение, которое ближе к описанию точки отображения в терминах координат точек экрана:

(4) (4)

Наконец, давайте добавим элементы перевода XT и YT, чтобы получить уравнение точки отображения с точки зрения данных, сообщаемых сенсорным экраном:

(5) (5)

Теперь мы можем сделать ключевое, прагматическое предположение, чтобы представить уравнение 5 в форме, которая позволит нам найти его неизвестные величины. Хотя сенсорный экран можно поворачивать относительно дисплея, угол поворота qr должен быть достаточно мал, чтобы можно было предположить, что sinqr Теперь мы можем сделать ключевое, прагматическое предположение, чтобы представить уравнение 5 в форме, которая позволит нам найти его неизвестные величины qr и cosqr 1,0. Это предположение дает еще один полезный набор приближений:

(6а) (6а)

(6b) (6b)

и тогда уравнение 5 может быть повторно выражено следующей комбинацией терминов:

(7) (7)

Преимущество уравнения 7 состоит в том, что мы выражаем фактические координаты дисплея в виде координат сенсорного экрана. Повторяя приведенное выше уравнение, получаем:

(8) (8)

За исключением X и Y, все члены в правой части вышеприведенного уравнения являются постоянными, учитывая наше предыдущее предположение, что в практическом случае эффекты масштабирования, вращения и перемещения могут быть учтены с постоянными величинами.

Выражая координаты XD и YD в более удобных терминах, мы приходим к уравнениям, которые переводят точки сенсорного экрана в точки отображения:

(9а) (9а)

(9b) (9b)

Предыдущие уравнения кажутся почти интуитивными. Помните, однако, что они действительны только тогда, когда угловое смещение между дисплеем и сенсорным экраном невелико.

Калибровочная матрица

Обычные алгоритмы калибровки используют данные от двух до пяти точек выборки для сбора калибровочной информации. Упражнение выше предполагает, что координаты точек отображения могут быть рассчитаны по координатам сенсорного экрана, и что, делая простые предположения, мы можем получить данные калибровки, используя три точки выборки - не больше, не меньше. Необходимы три точки выборки, потому что уравнения 9a и 9b содержат по три неизвестных. С тремя точками выборки мы можем получить достаточную информацию, чтобы установить и решить уравнения одновременности.

Рисунок 5: Образцы точек калибровки
Рисунок 5: Образцы точек калибровки

Точки отбора проб также следует выбирать исходя из практических соображений. Они должны давать не избыточные одновременные уравнения, они не должны быть слишком близко к краю сенсорного экрана (где вероятнее всего возникнет нелинейность), и они должны быть широко разнесены, чтобы минимизировать ошибки масштабирования. Набор точек, показанных на рисунке 5, помеченных P0, P1 и P2, соответствуют предложенным требованиям. Эти точки находятся примерно на 10% от края экрана, насколько позволяет геометрия дисплея, и дают следующие не избыточные уравнения:

(10a) (10a)

(10b) (10b)

(10c) (10c)

(11а) (11а)

(11b) (11b)

(11c) (11c)

Нам нужно определить A, B, C, D, E и F. Как только эти параметры станут известны, получить координаты дисплея так же просто, как вставить необработанные данные сенсорного экрана обратно в уравнение 9.

Решение для неизвестных в предыдущем наборе одновременных уравнений хорошо известно и здесь не будет получено; мы пропустим промежуточные шаги и представим окончательное решение. Неизвестные решаются следующим образом, используя значение K в качестве общего знаменателя для всех решений:

(12) (12)

(13) (13)

(14) (14)

(15) (15)

(16) (16)

(17) (17)

(18) (18)

Программная реализация

Самая трудная часть этой проблемы (решение для системы одновременных уравнений 10 и 11) теперь позади; фактическая реализация в программном обеспечении является простым упражнением. Пример программы представлен на 06vidales.zip включает в себя три файла: calibrate.c, calibrate.h и sample.c. Тяжелая работа сделана в первом. Он содержит две функции: setCalibrationMatrix () и getDisplayPoint () . Первый реализует уравнения с 13 по 18; последний реализует уравнение 9.

Заголовочный файл содержит разные объявления, а другой исходный файл реализует консольное приложение, которое выполняет функции калибровки, пытаясь показать, как вы будете использовать эти функции в устройстве.

Код в sample.c предполагает, что ваше устройство реализует процедуру сбора данных калибровки, прежде чем пытаться использовать эти функции. Схема предлагаемого процесса калибровки показана в листинге 1. После выполнения этих шагов процедура калибровки завершена, и ваши приложения могут начать получать точную информацию о местоположении от системы сенсорного экрана. Функция getDisplay-Point () предназначена для вызова в подпрограмме прерывания контроллера сенсорного экрана после того, как подпрограмма отфильтровывает и обрабатывает данные, поступающие из цифрового преобразователя . В типичной реализации вызов getDisplayPoint () будет последним шагом, необходимым для того, чтобы данные сенсорного экрана могли быть помещены в очередь ввода пользователя.

Перечисление 1 Шаги в процессе калибровки

1. Вызвать setCalibrationMatrix () с идеальным набором значений (см. Sample.c), чтобы настроить драйвер сенсорного экрана для предоставления необработанных (нетранслируемых) данных. Таким образом, вам не нужно создавать специальные функции для доступа к данным. Вместо этого вы просто получаете координаты из того же механизма, что и ваша программа.

2. Нарисуйте первую цель в координатах (XD0, YD0).

3. Соберите данные, возвращенные драйвером сенсорного экрана, и сохраните их как (X0, Y0).

4. Нарисуйте вторую цель в координатах (XD1, YD1).

5. Соберите данные, возвращенные драйвером сенсорного экрана, и сохраните их как (X1, Y1).

6. Нарисуйте третью цель в координатах (XD2, YD2).

7. Соберите данные, возвращенные драйвером сенсорного экрана, и сохраните их как (X2, Y2).

8. Вызовите setCalibrationMatrix (), указав в качестве аргументов данные эталонного дисплея и полученные данные сенсорного экрана.

Особые соображения

Функции выборки были реализованы для обеспечения точных результатов каждый раз. Таким образом, промежуточные значения не были масштабированы.

Требуется целочисленная 32-разрядная математика, поскольку необработанные числа, предоставляемые большинством цифровых преобразователей, представляют собой 10-разрядные величины, а уравнения 15 и 18 могут давать 31-разрядные значения со знаком. Уравнения в том виде, в котором они реализованы, будут работать с разрешениями цифрового преобразователя с сенсорным экраном до 1024 пикселей, что может подходить для разрешений экрана до 512 пикселей (высота или ширина).

Если вы хотите использовать эти формулы для больших разрешений сенсорного экрана, необходимо будет использовать 64-разрядные целочисленные значения или разумно масштабировать входные значения или промежуточные результаты, чтобы избежать переполнения регистра при вычислении калибровочных коэффициентов.

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

Код доступен для скачивания на http://www.embedded.com/design/embedded/source-code/4209764/06vidales-zip предлагается в качестве бесплатной справочной реализации, которая может быть адаптирована для различных приложений. Не было сделано никаких попыток оптимизировать код.

Последний штрих

Описанный здесь алгоритм калибровки сенсорного экрана прост, гибок и способен исправлять типичные механические ошибки. Эти ошибки перевода, масштабирования и поворота являются результатом несовпадений между дисплеем и сенсорным экраном, расположенным над ним. Их можно компенсировать с помощью механических средств, но предлагаемое программное решение уменьшает сложные проблемы электромеханического производства и качества.

Карлос Э. Видалес - менеджер по разработке программного обеспечения в Tekelec в Северной Каролине. Он работал над различными встраиваемыми проектами, от электромеханических систем до продуктов передачи голоса / данных. Он имеет степень бакалавра в области механики и электротехники, а также степень магистра делового администрирования. Его электронная почта [email protected] ,

Вернуться к июню 2002 года. Содержание

Похожие

Как купить на eBay
eBay - это популярный торговый сайт, где частные лица и предприятия могут покупать и продавать новые и подержанные товары. Существует два основных способа покупки на eBay: либо через аукцион, на котором вы делаете ставки, и выигрывает участник, предложивший наибольшую цену, либо с помощью функции «купить сейчас», где установлена ​​цена, и вы покупаете так же, как в любом интернет-магазине. , В этом руководстве мы покажем вам, как что-то купить на eBay, предлагая цену на
Черное Зеркало Bandersnatch: Как смотреть все концовки
... как вы перемещаетесь по сюжету, ваши решения формируют то, как он реагирует на семейную травму, собственную психическую болезнь, потенциальные заговоры и процесс разработки игр. это быстро сходит с рельсов. Стефан будет делать кислоту? Он убьет своего отца с пепельницей? Будет ли он слушать музыку « Вот, что я называю»? борник, или он выберет кассету Томпсона Близнецов? Тебе решать! Как часть этого интерактивного опыта, тем не менее,
Общие мошенничества на eBay и как их избежать
... как их можно избежать. Покупка и продажа на eBay могут быть отличными, но это также может быть сопряжено с риском. Вот некоторые из наиболее распространенных мошенничества на eBay и как их можно избежать. Мошенничество на eBay 1: покупка дорогой фотографии Как это устроено: Возможно, самая разочаровывающая - и невероятная - мошенничество на eBay, это сделало заголовки в Великобритании дважды за последний год. Продавцы перечисляют товары с
Как не стать жертвой аферистов в интернете: советы Франковского эксперта
версии пообщались
IHS Markit: В Индии содержание местного видео-сервиса так же важно, как и цена
В Индии локализованный контент так же важен, как и цены,
Исправление Windows Meltdown-Spectre: как проверить, не блокирует ли ваш AV патч Microsoft
Антивирусные компании постепенно добавляют поддержку патча Microsoft для Windows для методов атаки Meltdown и Spectre, которые затрагивают большинство современных процессоров. Как Microsoft предупредил на этой неделе он не будет поставлять свои обновления безопасности Windows 3 января клиентам, если они используют сторонний антивирус, если не подтверждено, что AV
Как установить Android на свой iPhone
... как бы маловероятно это ни было.) Может быть, вы хотите освободить свой iPhone от лап Apple. Может быть, вы просто хотите повозиться с чем-то новым. В любом случае, вы видели Android работает на iPhone и вы хотите попробовать это сами. Все еще в стадии разработки
Выйти из своего пути Шотландия
... каких писем, и мы не будем передавать вашу информацию без вашего согласия. При желании вы можете использовать службу анонимно. Как выйти из вашего пути Шотландия может помочь Quit Your Way Scotland находится в ведении NHS 24 и состоит из обученных консультантов, которые смогут дать вам совет специалиста. Сервис может помочь: говорить через все доступные вам варианты направляя вас на бесплатные местные услуги NHS высылаю вам
Смартфоны: как продлить время автономной работы вашего сотового телефона
Если вы хотите продлить срок службы батареи, иметь больше места и сохранить данные или мегабайты, следуйте этим советам
Надежный Таро
Добро пожаловать в Trusted Tarot от Trusted Tarot (Trusted Tarot Spanish), лучшее место для бесплатного чтения Таро ! Сказать, что у вас лучшие чтения Таро в Интернете, - довольно смелое утверждение. Однако, если вы посмотрите направо, вы увидите пример чтения Таро, и я надеюсь, что вы покажете, что они достаточно подробны. Это одна из причин, по которой Trusted Tarot является лучшим местом для чтения: мои чтения основаны на многолетнем опыте, и я ничего не храню.
Как исправить отступы и пробелы в электронных письмах HTML
Этот пост был обновлен 9 мая 2018 года. Первоначально он был опубликован в декабре 2010 года. Вы когда-нибудь замечали небольшой интервал под изображениями в Outlook.com а также Gmail ? Каждый браузер отображает этот интервал,
Стефан будет делать кислоту?
Он убьет своего отца с пепельницей?
Будет ли он слушать музыку « Вот, что я называю»?
?борник, или он выберет кассету Томпсона Близнецов?
Com а также Gmail ?