Interfaz con pantalla táctil usando arduino

3

Básicamente estoy tratando de estimular una pantalla táctil con un tablero arduino. Sé que esto se me ha preguntado varias veces y he pasado mucho tiempo buscando soluciones, es decir, algún tipo de papel de aluminio pegado a una pantalla táctil que se conecta a la toma de tierra de los teléfonos, el protector USB, la tierra arduino, una fruta o su cuerpo, etc. He intentado todo esto y más, utilizando un transistor, un MOSFET, un optoacoplador e incluso un relé. Mientras sostengo el teléfono, o sobre la mesa o sobre una hoja de aluminio o una hoja de aluminio conectada a tierra, etc ... He tenido varios éxitos con todos ellos, pero nada confiable y repetible a largo plazo.

El relé ha sido el más exitoso, conectando la lámina a través del interruptor de armadura a la tierra del teléfono. Si configuro el arduino para que cierre el relé por 100 ms cada 2000 ms en este caso, es interesante que encuentre un resultado consistente: cuando coloco la lámina, se produce un toque y no se suelta, la lámina y el cable son suficientes para hacerlo. Después de entre 30 segundos y un minuto, el toque se libera y los eventos de toque comienzan a emitir pulsos con la entrada de arduinos a través del relé, y después de 30 segundos a un minuto o más, la pantalla deja de responder todos juntos, incluso con los dedos tocados en la parte posterior de la lámina: donde esto produjo un evento táctil de antemano.

Así que imagino que la pantalla se está adaptando al entorno. Tal como lo necesitarías si estuvieras usando tu teléfono parado en un asta de bandera frente a apoyado contra la pared de acero de un camión. Por alguna razón, decide que la lámina es ruido ambiental y le "adormece" el área de la pantalla.

Entonces, mi pregunta es, ¿hay una manera de restablecer la imagen del campo capacitivo entre cada toque, o hay un método diferente para lograr eventos táctiles usando el arduino?

EDITAR Se adjunta un esquema básico del circuito. El pin 2 cambia de LOW a HIGH por 100ms, luego a LOW, por 2 segundos, y el relé se cierra en consecuencia. El cable etiquetado 'Cable A' se ha probado de varias maneras. Para iPhone Gnd como es, para Arduino Gnd, para mis dedos, para un pedazo de papel de aluminio debajo del iPhone. Además, he probado todas estas combinaciones con una resistencia de 1000k en serie y condensadores que varían de 100pf a 100nf, por separado y junto con la resistencia.

El problema subyacente es la pieza de papel de aluminio pegada a la pantalla. El sensor del iPhone parece ser capaz de determinar que su proximidad no está cambiando, incluso si sus características eléctricas lo son.

    
pregunta JoshNZ

2 respuestas

0

En realidad, he progresado un poco con este método. Encontré que el problema es la capacidad parásita o estática de lo que sea que me quede en la pantalla. Es suficiente para que la referencia de nivel base en ese sensor sea demasiado alta para considerar cualquier otra cosa como un toque.

Si pego la lámina con un cable de 5 pulgadas de ancho de pelo, y aprieto el extremo del cable, funcionará durante unos 30 segundos y luego dejará de funcionar. Si lo dejo por 10 minutos, aún no funcionará, ni tocará la lámina. Si engancho el hilo de alambre a aproximadamente 3 pulgadas y pincho el extremo, comenzará a funcionar después de 30 segundos. Dejándolo nuevamente por 10 minutos, todavía funciona.

Entonces, realmente la pregunta es si tengo un pedazo de papel de aluminio en la pantalla con un cable de 2 pulgadas, ¿cómo conecto eléctricamente algo a eso por un momento, sin agregarle ninguna capacidad parásita mientras tanto? . Un transistor por sí solo estaba bien, pellizcar el cable aún recibiría un toque, pero tan pronto como sueldo algo al emisor del transistor, la lámina dejaría de funcionar después de 30 segundos. Un relé también tiene demasiado metal dentro del terminal, causando el mismo problema después de 30 segundos. Estoy bastante seguro de que tengo el problema resuelto, al igual que en ambas situaciones, si me corto lo que he soldado, después de 30 segundos, la lámina comienza a funcionar de nuevo si aprieto la pequeña hebra.

EDITAR Así que el problema era un protector de pantalla de vidrio templado grueso que tenía en el teléfono. Retiré eso y la cantidad de material que se puede conectar a la lámina aumentó sustancialmente. Funciona perfectamente con un relé durante horas. Probé con un transistor. Funciona por un tiempo, pero eventualmente se vuelve "insensible", así que supongo que la corriente minúscula a través del transistor "off" es suficiente para hacer que la capacidad de las láminas aumente.

Gracias por los comentarios

    
respondido por el JoshNZ
0

Vale la pena saber que medir la capacitancia de un "píxel" a tierra, y detectar cuándo aumenta esta capacitancia, no es el único método para detectar si un dedo está allí. La alternativa es medir la "capacitancia mutua" - la capacitancia de un píxel a otro. Si su teléfono usa este esquema, sería bastante difícil falsificar el sensor.

Quizás los teléfonos más antiguos miden la capacitancia de píxel a tierra, pero me sorprendería si los nuevos todavía lo hacen. Es mucho más sensible a la interferencia. Además, la detección de capacitancia mutua permite un enfoque de sensor de exploración fila-columna, donde una capa conductora se divide en filas y otra capa en columnas, y la capacitancia mutua de todas las columnas \ $ N \ $ se mide mientras se recorre las filas \ $ 1. .M \ $. De esta manera, hace que llenar \ $ M \ veces N \ $ matriz de capacitancia mutua \ $ \ mathbf {C_M} \ $ bastante fácil.

En caso de que se esté preguntando cómo podría hacerse esto, considere tener todas las filas \ $ M \ $ y las columnas \ $ N \ $ descargadas a \ $ 0 \ rm {V} \ $. Tome la fila \ $ i \ $ y cárguela de \ $ 0 \ rm {V} \ $ a \ $ 5 \ rm {V} \ $. Todas las columnas \ $ N \ $ verán un aumento en el voltaje debido a la pequeña capacitancia que las une a la fila \ $ i \ $. Sin embargo, algunas columnas verán un voltaje mayor que otras, porque tienen una mayor capacidad mutua para remar \ $ i \ $ debido a un dedo cercano. Este proceso se repite en todas las filas \ $ M \ $ para completar \ $ \ mathbf {C_M} \ $, resolviendo así la posición del dedo en dos dimensiones. He pasado por alto algunos detalles, pero esa es la esencia básica.

    
respondido por el Zulu

Lea otras preguntas en las etiquetas