Introducción
En este articulo vamos a hablar sobre como funciona una pantalla táctil de tecnología resistiva, veremos que estas tienen la pega de tener ciertas desviaciones entre el punto que detectan con la presión y la ubicación de estos puntos en la pantalla. Visto este problema, explicaremos un algoritmo eficiente para calibrar las pantallas táctiles basado en tan solo tres puntos.
Tecnologías de las pantallas táctiles
En el momento en que escribo estas lineas conozco tres tipos de tecnología para implementar pantallas táctiles.
- Resistivas
- Capacitivas
- Acústicas
De estas tres tecnologías la más habitual, por precio, sencillez y disponibilidad de fabricantes es la resistiva. A pesar de estas ventajas, los dispositivos que utilizan esta tecnología casi siempre requieren un proceso de calibración debido a que es difícil alinear perfectamente las coordenadas que nos devuelve la pantalla táctil con las coordenadas de la pantalla propiamente dicha (LCD u otra). Vamos a centrarnos en esta tecnología y a explicar un poco más a fondo su funcionamiento.
Funcionamiento de pantallas resistivas
Podemos ver en la siguiente imagen un corte transversal de una pantalla táctil (recordad que esta pantalla táctil se superpone a la pantalla real LCD, CRT, etc.)

sección transversal de una pantalla táctil
Su estructura consiste en dos piezas de cristal cuya superficie interior esta “barnizada” con una sustancia conductiva. Separando estas dos capas tenemos unas gotas de cristal que mantienen una separación entre las superficies conductivas. Cuando un dedo o un pequeño instrumento como un lapiz toca el cristal este se acerca a la otra capa también barnizada con material conductivo. Cuantos más separadores haya, mayor resolución tendremos pero a cambio deberemos ejercer mayor presión para poder detectar un “toque” en la pantalla. El funcionamiento es el siguiente, un controlador aplicará una diferencia de potencial en los dos extremos de una de las capas mientras que la otra capa actuará como si se tratase de una resistencia variable, así, en función de la presión que se ejerza y de donde se efectúe esta el potencial detectado por el controlador variará proporcionando un valor binario que representa, por ejemplo, la coordenada X. A continuación se hace lo mismo pero con la otra capa, es decir se aplica potencial a la otra capa y la que queda actúa de resistencia, obtenemos así la coordenada Y. Este proceso se repite a gran velocidad y es posible tomar del orden de 200 o más muestras por segundo.
Breve comparativa de tecnologías
Simplemente, como comentario, veamos las ventajas e inconvenientes de cada tecnología.
Capacitivas
En los sistemas capacitivos una capa que almacena carga eléctrica se sitúa en el panel de cristal del monitor. Cuando un usuario toca el monitor con el dedo parte de la carga se transmite al usuario, así la carga de la capa capacitiva disminuye. Esta disminución la miden unos circuitos situados en las esquinas del monitor. Esta circuitería calcula exactamente donde se ha tocado. Una de las ventajas es que esta capa con carga eléctrica deja pasar el 90% de la luz del monitor mientras que la tecnología resistiva solo deja pasar aproximadamente un 75%. Esto hace que las imágenes se vean más claras en este tipo de pantallas que en las resistivas. Como inconveniente tenemos que no se puede usar para pulsar algo que no conduzca, por ejemplo un lápiz.
Acústicas
Esta tecnología se basa en montar un sistema de ondas acústicas, dos transductores (un receptor y un emisor) se colocan a lo largo de los ejes X e Y de la pantalla táctil. Los transductores receptores son capaces de determinar si la onda acústica ha sido perturbada por un toque de un usuario y de localizar esta perturbación en la pantalla. Dado que no se utilizan capas metálicas en la pantalla se permite el paso del 100% de la luz a través de la pantalla táctil y esto se traduce en una claridad de imagen perfecta. Es por ello que esta tecnología es la preferida cuando se trata de mostrar gráficos detallados. Otra ventaja es que podemos detectar el toque de un dedo o de cualquier objeto aunque este no conduzca como por ejemplo un lápiz. Esta tecnología es la más cara de las tres.
La calibración en las pantallas resistivas
Debido a múltiples motivos como el ruido eléctrico, desajustes mecánicos, factores de escalado, el grosor del dedo, etc. Al final debemos calibrar la pantalla para que las coordenadas que nos devuelve la pantalla táctil coincidan exactamente ( o lo más aproximadamente posible ) con las coordenadas de la pantalla que hay detras (LCD,CRT,etc.).
Presentación del problema
Vemos en el siguiente dibujo que cada posible punto en el display lo podemos representar como Pd y lo que nos dice la pantalla táctil es el punto P.

Desviación de los puntos
Vamos a asumir que los puntos P y Pd estan relacionados por una cantidad “M” que transforma las coordenadas de la pantalla táctil en coordenadas de la pantalla:
Pd = M * P
Esta “M” será un matriz de transformación y es lo que intentaremos calcular en este artículo. Si tenemos esta matriz podremos transformar cualquier punto reportado por la pantalla táctil en un punto para el display.
Si expresamos los puntos como pares X e Y basados en la longitud y ángulo del vector ambos puntos (táctil y display) se pueden representar así:
(Llamamos R y Rd a cada una de las hipotenusas formada por los vectores)
Pd = [ Xd, Yd ]
Pd = [ Rd cos(Sd), Rd sen(Sd) ]
P = [ X, Y ]
P = [ R cos(S), R sen(S) ]
Ahora bien, sabemos que el punto reportado por la pantalla táctil ha experimentado, una rotación, un escalado y una traslación, vamos a ver como representar ese punto rotado, escalado y trasladado. Es decir, vamos a bucar Pd como una transformación de P. Pero antes hay que establecer una notación:
- Vamos a denominar “Pr” al punto rotado, “Pre” al Punto rotado y escalado y “Pd” al punto rotado, escalado y trasladado (este es el punto del display que buscamos).
- El escalado sera un factor al que llamaremos Kx y Ky, uno por cada eje.
- La traslación será Xt e Yt.
- La diferencia de angulos entre el display y lo reportado por la pantalla táctil será “Sr”.
Pr = [ R cos(S+Sr), R sen(S+Sr) ]
Pre = [ Kx R cos(S+Sr), Ky R sen(S+Sr) ]
Pd= [ (Kx R cos(S+Sr)) + Xt, (Ky R sen(S+Sr)) + Yt ]
En este punto vamos a hacer un simplificación pragmática que nos permite “aligerar” las fórmulas, esto redundará en un menor tiempo de cálculo y una programación más sencilla. La simplificación consiste en que, vamos a asumir que la rotación que experimenta el punto dado por la pantalla táctil con respecto a la coordenada en el display es de un ángulo muy pequeño y por lo tanto podemos asumir que:
sen(Sr) = Sr
cos(Sr) = 1
De esta forma, podemos simplifcar ciertos términos de las ecuaciones anteriores asumiendo que:
cos(S+Sr) = cos(S) - (Sr sen(S))
sen(S+Sr) = sen(S) + (Sr cos(S))
Ahora las ecuaciones anteriores quedan:
Pd = [ (Kx R (cos(S) - (Sr sen(S)))) + Xt, (Ky R (sen(S) + (Sr cos(S))) ) + Yt ]
Pd = [ Kx R cos(S) - Sr Kx R sen(S) + Xt, Ky R sen(S) + Sr Ky R cos(S) + Yt ]
Ahora ya tenemos expresadas las coordenadas del display en función de las coordenadas que proporciona el touch screen.
Reformulamos la ecuación anterior y obtenemos:
Pd = [ Kx X - Sr Kx Y + Xt, Sr Ky X + Ky Y + Yt ]
Excepto X e Y, y dadas nuestras simplificaciones, todos los términos de la ecuación son constantes, por este motivo podemos expresar la anterior fórmula de un modo más conveniente:
Xd = AX + BY + C
Yd = DX + EY + F
Solución del problema
Ahora solo queda resolver las 6 incongitas, para ello necesitaremos, 6 ecuaciones, que se corresponderan con los tres puntos que vamos a usar para la calibración. Una vez tengamos las 6 incógnitas A,B,C,D,E y F podemos calcular para cada X e Y del touch screen la X e Y que le corresponde en el display.
Estos puntos deben seleccionarse con un mínimo de cuidado para que no nos den ecuaciones redundantes, asimismo debemos evitar que sean los puntos de los extremos de la pantalla puesto que es más probable que en estas ubicaciones se den diferencias no lineales entre lo que reporta la tactil y las coordenadas del display. También debemos separarlos lo suficiente para minimizar los errores de escalado.
Una buena heurística para seleccionar los puntos es que esten separados de las esquinas un 10%.
Una vez determinados los puntos que vamos a usar el modo de operar es el siguiente:
- Mostrar uno de los tres puntos en el display real
- Recoger los datos X e Y que devuelve el touch screen
- Volver al paso 1 hasta recoger los datos de los tres puntos
- Con los 6 datos y teniendo en cuenta que sabemos el valor X e Y del display podemos plantear un sistema de ecuaciones para calcular las constantes A,B,C,D,E y F
Xd0 = AX0 + BY0 + C
Xd1 = AX1 + BY1 + C
Xd2 = AX2 + BY1 + C
Yd0 = DX0 + EY0 + F
Yd1 = DX1 + EY1 + F
Yd2 = DY2 + EY2 + F
4. De aquí conocemos, Xd0,Xd1,Xd2,Yd0,Yd1,Yd2,X0,Y0,X1,Y1,X2,Y2 y nos falta por averiguar A,B,C,D,E y F.
Esto lo podemos resolver mediante matrices a través de cualquiera de los sistemas como por ejemplo Gauss-Jordan, Choletsky, matriz inversa, etc.
Ahora, una vez tenemos las incognitas resueltas, para cada punto que lea el touch screen obtendremos el real en pantalla aplicando las formulas anteriores:
Xd = AX + BY + C
Yd = DX + EY + F

