Story Transcript
TECLADO TACTIL CAPACITIVO SIGMA ELECTRONICA
Imagen 1: Teclado Táctil Capacitivo.1
DESCRIPCION. Teclado táctil capacitivo de 16 teclas, basado en la tecnología QMatrix® de Atmel. Se comunica a través de SPI. El teclado posee un led indicador de color amarillo, el cual permite al usuario conocer cuando una tecla ha sido censada. CARACTERISTICAS. TECNOLOGÍA TACTIL CAPACITIVA. Este teclado permite al usuario la adquisición de datos (teclas) con solo un suave toque sobre cada uno de los caracteres impresos en la tarjeta (números 0-9, letras A-D, símbolos * y #). La ventaja de este teclado frente a los de membrana está en que las teclas no se “gastan” puesto que no hay acción mecánica, por esto tendrá siempre la misma sensibilidad con una vida útil bastante extensa, además que su consumo eléctrico es mínimo.
1
Sigma Electrónica Ltda.
Está diseñado para adquirir datos de hasta 5 veces por segundo, si el usuario realiza toques a mayor velocidad es posible la pérdida de uno o más datos. El led de estado (amarillo) permite al usuario conocer cuando cada toque ha sido registrado. A diferencia de un teclado “membrana” operado a través de un codificador (74C922), este teclado solo censa un dato cuando el usuario sostiene presionada una tecla. Se recomienda no sostener presionada una tecla por más de 8 segundos. En caso de sostener una tecla y tocar otra, no se efectuara cambio alguno puesto que el teclado envía el dato solo una vez en el momento que es censada la primer tecla.
Imagen 2: Terminales de conexión.2
INTERFAZ SPI. El teclado posee un conector 3x2 macho (Imagen 2). El espacio entre pines es de 2,54mm (0.1”). A través de SPI puede conectar 2 o más teclados a su aplicación. Es necesario 1 terminal de salida digital más por cada teclado adicional que quiera incluir (para la conexión de SS’). Cada uno de los pines esta marcado así:
2
MISO: “Master In – Slave Out”, terminal de salida de datos serial del teclado. Va conectado al MISO del Master. Pin #1. VCC: Conexión para el terminal positivo de la fuente DC de 3 a 5 voltios para que el teclado opere. Pin #2. SCK: Terminal de entrada de la señal de reloj generada por el Master cuando se realiza transmisión de datos. Se recomienda usarlo con un Master que trabaje entre 100 y 200 KHz. El teclado soporta hasta 400KHz. Pin #3. MOSI: “Master Out – Slave In”, terminal de entrada de datos serial del teclado. Va conectado al MOSI del Master. Pin #4. SS’: “Slave Selector”, también llamado CS’ (Chip Selector). Señal de selección de esclavo en comunicación SPI. Esta señal opera “negada”, por lo cual el Master (aplicación del usuario
Sigma Electrónica Ltda.
a donde va conectado el teclado) debe proporcionar nivel alto permanentemente, solo al momento de traficar información con este esclavo debe pasar a nivel bajo. Pin #5. GND: Conexión del terminal negativo o referencia de la fuente DC. Pin #6. AUTOCALIBRACION.
El teclado posee la función de calibrarse automáticamente cada 10 segundos aproximadamente, esto es útil en aplicaciones portables cuando el teclado es afectado por diferentes interferencias presentes en el ambiente. La calibración del teclado consiste en tomar los valores de referencia para cada tecla. Al “encender” el teclado, este se calibra inmediatamente y continua haciéndolo cada 10 segundos. El tiempo para calibración es reiniciado si se censa alguna tecla (pero no si es sostenida), por lo cual el proceso de calibración no se presentara mientras se estén censando diferentes teclas continuamente.
Imagen 3: Led de estado.3
LED DE ESTADO. Este led (Imagen 3) tiene dos funciones: indicación de re-calibración e indicación de toque de teclas. Cuando el teclado no está siendo operado, este led prende momentáneamente cada 10 segundos aproximadamente. Esto indica que el teclado realiza proceso de calibración en ese momento, además de dar a conocer que está operando normalmente. Cuando el teclado está siendo operado, la siguiente calibración será realizada 10 segundos después del último toque de tecla. Cuando el usuario realiza el toque de teclas, el led prende momentáneamente con mayor intensidad que cuando se calibra (la diferencia de intensidad se nota a simple vista, realmente el tiempo en “alto” del led es mayor que al recalibrarse). Esto indica al usuario que el teclado ha censado el toque y genera el dato a ser enviado.
3
Sigma Electrónica Ltda.
MODO DE OPERACIÓN. El teclado va conectado al puerto SPI de su microcontrolador. Debe habilitar el puerto SPI de su dispositivo y configurarlo como master (esto en caso de no estar usando el puerto SPI para comunicarse con otros dispositivos). Las líneas MOSI, MISO y SCK van conectadas a los terminales con el mismo nombre del master. El terminal SS’ del teclado debe conectarse a una salida digital del master, y es esta la que indica al teclado cuando el master va a enviar/recibir información. Programación necesaria por el usuario para operar el teclado: Habilite y configure el puerto SPI de su microcontrolador. En el ejemplo descrito a continuación se usa un ATMega16 como master. Primero definimos los pines para el puerto SPI, en este microcontrolador el SPI va en el puerto B (cuando el dispositivo es master, puede usar cualquier pin digital para manipular el SS del esclavo o esclavos): #define SPI_SCK_PIN 7 #define SPI_MOSI_PIN 5 #define SPI_MISO_PIN 6
Para el ejemplo se configura el SPI del master con los siguientes datos: // SPI clock mode #define SPI_MODE_0 0x00 /* Sample (Rising) Setup (Falling) CPOL=0, CPHA=0 */ // direccion de datos #define SPI_MSB 0 /* envía primero el bit más significativo (bit 7) */ // no usar interrupcion al recibir datos (SPIF) #define SPI_NO_INTERRUPT 0 // esclavo o master con divisor de reloj #define SPI_MSTR_CLK32 0x06 /* chip clock/32 >> 8MHz/32 = 250KHz */
Estos datos se aplican en la función “setup_spi()”, esta se llama al iniciar el programa así: setup_spi(SPI_MODE_0,SPI_MSB,SPI_NO_INTERRUPT,SPI_MSTR_CLK32);
La funcion “setup_spi()” está compuesta así: void setup_spi(uint8_t mode, int dord, int interrupt, uint8_t clock) { // especifica la direccion de pines para el SPI en el Puerto B if (clock == SPI_SLAVE) { // si es esclavo, SS y SCK son entradas DDRB &= ~(1