sexta-feira, 26 de agosto de 2016

Explicação - Teclados


Sempre que for necessário coletar informações em campo, no chão de fábrica, ou mesmo passar “orientações” a um pequeno robô, podemos utilizar um teclado.  Para enviar informações, ou instruções, utilizamos uma tecla ou um conjunto delas.



Quando temos uma ou poucas teclas a ideia inicial é termos uma I/O para cada tecla. Essa solução esbarra em 2 problemas
  • Hardware: exige muitas I/Os
  • Software: exige um consumo excessivo de software para leitura de teclas. Esse problema pode ser contornado pelo acionamento da leitura das teclas a uma interrupção externa.


   

Teclados matriciais.



Uma forma interessante foi associar as teclas em forma de matriz. 
Essa solução diminui sensivelmente o número de I/Os utilizadas a medida que cresce o número de teclas. As mais populares utilizam grupos de 12 ou 16 teclas:
   
 


No diagrama abaixo temos um exemplo de implementação de um teclado matricial de 12 teclas.

Em termos de hardware temos uma redução de I/Os, sendo maior quanto o número de teclas (matriz maior). Para 12 teclas em forma de matriz temos 7 I/Os, sendo 4 linhas e 3 colunas.
Essa redução provoca um crescimento de software, pois a rotina de leitura.
O acionamento rotina de leitura pode ser associada a interrupção externa que exige uma I/O adicional (interrupção externa).
A rotina de leitura consiste em ativar uma das colunas (1) e deixar as outras desativadas (0). Desta forma inicia-se a varredura das linhas e identificar qual linha está ativada (1), desta maneira, pode-se identificar qual tecla foi pressionada. Na sequência deve-se repetir o processo para cada coluna. Ao final do processo é possível identificar a tecla pressionada.
Essa rotina torna-se extensa, mesmo que o número de teclas seja reduzido e acaba tornando o software extenso. Para o caso de teclas pressionadas simultaneamente a rotina trona-se ainda mais complexa.



   

Conversor A/D

Utilizando um conversor A/D o número de I/Os diminui a uma única entrada analógica, se o periférico existir no microcontrolador.
Um exemplo de solução é apresentada no livro “Micontroladores PIC18 – Aprenda e Programe em Linguagem C” de Alberto Noboru Miyadaira, página 281.



Dessa forma cada tecla pressionada produz uma tensão diferente na saída do circuito. A identificação passa apenas pela identificação da faixa de valores convertidos. Essa faixa deve ser criada pela tolerância dos componentes envolvidos. A escala de valores absolutos pode ser obtida a partir de uma simples simulação do circuito.
A questão de duas ou mais teclas pressionadas simultaneamente produz novos valores de tensão e por consequência novos valores obtidos no A/D, ou seja, basta adicionar novas faixas de pesquisa de acordo com as combinações desejadas.
A questão de isolação da rotina de leitura também é resolvida por uma interrupção externa.




   

Nenhum comentário:

Postar um comentário