O funcionamento destas telas é muito simples. Elas são compostas de duas camadas de material resistivo sobrepostas e isoladas uma da outra por minúsculos pontos.
Eletricamente, o equivalente é o seguinte.
Quando a tela é tocada a resistência entre o ponto do toque e os eletrodos é proporcional à distância entre o ponto e o eletrodo.
Uma das maneiras de se medir o ponto de toque é alimentando-se um dos eixos com uma tensão conhecida e medir a tensão resultante em um dos eletrodos do outro eixo.
Se a resistência interna do medidor (RM) for muito grande em relação à resistência dos eixos podemos considerar que a posição do ponto de toque no eixo X é proporcional à tensão medida no eletrodo Y+.
Para medir o outro eixo, no exemplo o eixo Y, aplica-se a tensão sobre os eletrodos Y+ e Y- e mede-se a tensão resultante no eletrodo X+.
Para se medir uma tela touchscreen com um microcontrolador, é necessário que o mesmo possua portas de entrada e saída e conversores A/D.
Para se medir o eixo Y, Ativam-se como saídas os pinos conectados aos eletrodos Y+ (nível alto) e Y-(nível baixo) e configura-se o pino conectado ao pino X+ como entrada do ADC.
Considerando-se a resolução do ADC como o valor de ESCALA e a tensão de alimentação VCC como referência do ADC, basta-se fazer a leitura do ADC para se ter o valor de posição. Simples assim!!!
POSICAO=ADC_READ( );
Bom... nem tanto!!! Na prática é preciso levar outras coisas em consideração:
A resistência típica de uma eixo de tela de toque costuma estar entre 100 Ohms e 900 Ohms. Isso significa que, se alimentado com 5Volts, a corrente que atravessa a tela pode chegar a 50mA, o que é bem maior do que a maioria dos microcontroladores consegue fornecer, que é algo em torno dos 25mA. Mesmo que a corrente fique abaixo desse valor, é preciso considerar-se as quedas de tensão nos elementos de chaveamento do microcontrolador, que aparecem em nosso circuito como as resistências R-HI e R-LO.
Para resolver o problema da queda de tensão nos elementos de chaveamento alguns chips dedicados à leitura de telas resistivas, como o AD7843 da Analog Devices, possuem um modo de leitura diferencial, onde as referências para o ADC são retiradas diretamente dos terminais de saída
Como não dispomos deste recurso na maioria dos microcontroladores, cuja referência para o conversor A/D é a própria tensão de alimentação a solução é inovar.
Vamos nos aproveitar de uma característica intrínseca de alguns microcontroladores, e entre eles o PIC16F688. Usaremos como exemplo os pinos RC0/RC1.
Como pode ser visto no circuito acima, o ADC fica conectado o tempo todo ao pino de I/O. Isso significa que é possível medir a tensão no pino sob carga! Ou seja, é possível medir a diferença de tensão entre os pinos (+) e (-) e compensar nos cálculos as quedas de tensão nos elementos de chaveamento:
Desta forma, para o eixo X:
Observações Finais:
- A medição de tensão diretamente nos pinos resolve o problema da compensação, mas o resultado final tem menos bits do que a resolução intrínseca do ADC.
- A tela 'touch' é um sensor ruidoso, portanto é necessário verificar se a tensão no ponto de toque está entre V_HI e V_LO.
- A fim de economizar energia, principalmente se a tela for utilizada numa aplicação com baterias, mantenha em alta impedância todos os pinos conectados aos eletrodos, e faça medições somente
- Para se detectar se a tela está sendo pressionada ou não, utilize a configuração abaixo e meça como entrada digital o pino conectado ao eletrodo Y+. Caso a tela esteja sendo tocada, o valor lido vai ser "0".
Um comentário:
Cara, parabens pela aula! Aprendi mais aqui que em um tempao pesquisando sobre o assunto!
Postar um comentário