Blog

December 8, 2017

Tutoriales PIC32MM0064GPL028 – Teclado Touch –

Este proyecto muestra la aplicación del módulo ADC para detectar el contacto de una placa de cobre con un dedo, teniendo así la sensación de pulsación sobre un teclado touch. Muchos microcontroladores en el mercado poseen un módulo dedicado a este propósito (módulo CAPSENSE). En los micros de la empresa microchip este módulo se conoce como CTMU (Change Time Measurement Unit). Este módulo permite reconocer pulsaciones, desplazamiento y demás opciones presente en un panel táctil. Lastimosamente el microcontrolador PIC32MM0064GPL028 no cuenta con este módulo, así que ha decidido implementarse este módulo a partir de la nota de aplicación Capacitive Touch Using Only an ADC (“CDV”) proporcionada por la empresa microchip.  El funcionamiento básico de esta nota de aplicación consiste en el cambio de tensión producido al tener contacto el dedo con el canal ADC sensado, pasando a un menor nivel de tensión.  Si se lee con el módulo ADC este nivel de tensión puede detectarse “fácilmente” estas pulsaciones.

Para capturar mejor este fenómeno, Microchip aconseja seguir los siguientes pasos, a partir de la utilización de un segundo canal ADC auxiliar (ver en la nota de aplicación):

  1. Utilizar el canal auxiliar para cargar el condensador interior del módulo ADC. Para esto configurar este canal como salida digital.
  2. Escoger el canal del módulo ADC como este puerto auxiliar y muestrear esta señal, para así cargar este condensador a Vcc.
  3. Configurar el puerto de sensado como entrada analógica.
  4. Cambiar el canal de módulo ADC al puerto de sensado. Empezar la conversión y obtener la lectura del canal.

El nivel de referencia de comparación varia según el microcontrolador y las conexiones que se tengan. Para este caso se encontró que con una comparación de 2000 mV era suficiente para detectar las pulsaciones (un nivel de tensión por debajo de este valor indica que fue oprimido un botón).

En el proyecto se implementó un teclado touch de 8 botones, cada botón se multiplexa con un LED para lograr con solo 8 puertos manejar el teclado y la visualización. Para lograr esto se utilizó adicionalmente un noveno puerto que permite deshabilitar o habilitar la visualización (los LEDs) para no tener errores de lectura (dado que el ideal es que el puerto se encuentre en estado de alta impedancia, y no conectado y/o aterrizado a tierra o a Vdd). La conexión de un puerto se muestra a continuación:

El código esta seccionado en configuración de los módulos, métodos de lectura de botones y visualización y el método principal.

Configuración módulos

Los principales módulos utilizados en este proyecto fueron el TIMER1 y el ADC. A continuación se muestra su configuración:

 

En principio, el módulo ADC se configuró con el primer canal de sensado (primer boton) y el TIMER1 fue configurado a 20 mS, periodo en el cual se realiza la lectura del teclado. Para otra configuración consultar la documentación de la familia PIC32MM0064GPL036 sobre el módulo TIMERS y ADC

Método de lectura del teclado – Multiplexación de entradas táctiles con salidas digitales –

Para lograr la lectura del teclado touch se crearon los siguientes métodos:

Métodos de lectura ADC

Estos métodos permiten el muestreo de la señal y el inicio de la conversión de la lectura del modulo ADC en un canal. La referencia de estos métodos fue tomada de la hoja de datos de los microcontroladores de la familia PIC32MM sobre el módulo ADC.

 

Se agrego a la lectura del módulo ADC un filtrado, escogiendo el menor valor, para asegurarse de una lectura correcta. Con ello se realizan cuatro lecturas por cada canal.

Elección del canal

Se realizó los pasos mencionados por la nota de aplicación para cada canal, desde el muestreo de la señal auxiliar para cargar el condensador interno del módulo, hasta la lectura de la señal sensada. Fueron adicionados algunos retardos para lograr cambiar correctamente la configuración de los puertos. Además, en este método se adicional la comparación de la lectura con un valor de referencia, para conocer el estado del botón sensado, determinando así si fue o no oprimido.

Lectura teclado Touch

Por último, se realiza la lectura de todo el teclado. Para esto se realiza el procedimiento mencionado anteriormente para cada canal, y al final se muestra el estado de cada boton en su correspondiente salida.

Método Principal

Este método se encarga de la configuración de los módulos y puertos, y por último testea el estado de la interrupción por TIMER1, para así leer y visualizar el estado de los botones.

Proyecto

Para aprender a hacer un proyecto en MPLABX visita nuestro tutorial Hola mundo PIC32MM. Además, el proyecto puede ser descargado aquí. Este proyecto puede modificarse a un teclado realizado con grafito en una hoja de papel!! Se puede llevar a la práctica como muestran algunas aplicaciones con arduino sobre teclados táctiles

Aplicación

Para ilustrar mejor la aplicación, se desarrollo un juego parecido al juego batak , utilizando el teclado touch de esta aplicación. Se implementaron dos modalidades de juego. Una consisten en lograr la mayor cantidad de puntos en un tiempo determinado, y la otra en alcanzar 30 puntos en el menor tiempo posible.

Aprende, Tutoriales Básicos
About Johan

Leave a Reply

Your email address will not be published. Required fields are marked *