Touch Screen

De Wiki LOGre
Aller à : navigation, rechercher


Le but de ce projet est d arriver a exploiter un Ecran Sharp dont la dalle est recouverte d un film tactile permettant de déterminer la position de contact avec l écran. Ces films ne permettent la détection que d un seul point de contact a la fois

Principe

Le film tactile dispose de 4 électrodes, 1 sur chacun des cotes, qui permettent d effectuer des mesures de tension. la tension mesurée sur les électrodes varie en fonction de la position du point de contact avec la dalle de l écran.

Electrodes de la dalle tactile en rouge

Les électrodes sont utilisées de deux façons différentes:

  • Pour générer le champ qui va être lu sur un axe : application de 0 ou 5V
  • Pour lire la valeur du champ sur l autre axe : valeur analogique

On ne peut donc pas effectuer la mesure sur les axes X et Y en une seule fois.

Pour la lire la valeur de l axe X, il faut:

  • Appliquer du 0V sur l électrode de gauche
  • Appliquer du 5V sur l électrode de droite
  • Lire la tension sur l électrode supérieure ou inférieure
Lecture de la valeur sur l axe X

Pour la lire la valeur de l axe Y, il faut:

  • Appliquer du 0V sur l électrode supérieure
  • Appliquer du 5V sur l électrode inférieure
  • Lire la tension sur l électrode gauche ou droite
Lecture de la valeur sur l axe Y

Implémentation

Pour exploiter l écran il faut donc un matériel capable de :

  • Piloter l affichage de l écran
  • Piloter les électrodes
  • Lire les valeurs analogiques issues des électrodes

Le pilotage de l écran est déjà effectué par le FPGA de la Papilio One ou de la Papilio Duo. La lecture des valeurs analogiques issues des électrodes sera effectuée par l AVR de la Papilio_Duo qui transmettra les valeurs lues au FPGA grâce aux 17 broches partagées entre les deux circuits.

Pilotage de l affichage de l’écran

Se reporter au projet Sharp Driver, rien ne change

Pilotage des électrodes

Il est fait via les broches de l AVR/Arduino de la Papilio Duo :

  • Broche 2 <-> Électrode Supérieure
  • Broche 3 <-> Électrode Droite
  • Broche 4 <-> Électrode Inférieure
  • Broche 5 <-> Électrode Gauche

Comme certaines électrodes vont aussi être lues par les ADC de l AVR il faudra ne pas oublier de passer les sorties numériques correspondantes a 0 avant de les configurer en INPUT Mode

Lecture des valeurs analogiques

Elle est faite via les entrées analogiques l AVR/Arduino de la Papilio Duo :

  • Analogic input 0 : Électrode supérieure
  • Analogic input 1 : Électrode droite

L ADC produit un résultat en 0 et 1023 que l AVR va ensuite convertir en valeurs des ranges [0-639] et [0-479] avant de les transmettre au FPGA

Communication AVR <-> FPGA

Elle se fait via un petit bus parallèle utilisant les broches restantes:

  • Broche 0 : signal AVR -> FPGA pour indiquer quand la donnée est disponible en lecture pour le FPGA
  • Broche 1 : signal FPGA -> AVR pour indiquer quand la donnée a été lue par le FPGA
  • Broches 6 a 15 : signal Data avec le MSB sur la broche 6 et le LSB sur la broche 15

Par construction le design FPGA s attend a recevoir X puis Y. les valeurs de X et Y sont stockées après chaque envoie par l AVR. Elles ne sont lues par le Générateur d image qu une fois avant le début de chaque image

Protocole de test

Acquisition des données des électrodes

Le sketch charge sur l AVR ne pilote pas le bus de données AVR <-> FPGA mais envoie des infos telles que les valeurs analogiques et les coordonnées écran au PC via le port série et le Serial Monitor de Design Lab. Cela permet de s assurer de la valide des données qui seront transmises au FPGA

Communication AVR/FPGA

Le sketch chargé sur l AVR ne lit pas les valeurs des électrodes. Il se content d envoyer des valeurs prédéterminées sur le bus AVR <-> FPGA. Cela permet de valider la communication et de s assurer que le FPGA interprète bien les valeurs reçues

Expérimentations

  • 5 Février 2015 :
    • Test d un sketch sur l AVR qui est censé lire la position du doigt sur un ecran Sharp équipé d une dalle tactile. La lecture en X semble fonctionner mais pas pour le Y. Peut être la faute au montage fil volant sur plaque a trou qui a été fait plutôt a l arrache
    • Test d un design sur le FPGA de la Papilio Duo qui affiche une barre horizontale et une verticale sur l écran la ou est sensé se trouver le doigt sur la dalle tactile. Lorsque l AVR envoie une valeur en dure l affichage des lignes est stable donc cela valide au moins sur le principe la communication AVR/FPGA. Par contre ce n est pas le cas quand l AVR envoie les valeurs lues depuis la dalle tactile surement a cause de l instabilité du sketch. Peut être faut-il jouer sur les timings de prise de mesure et la qualité du câblage ?