INICIANDO COM SENSORES DE TOQUE (TOUCH SENSOR) – COM PIC 12F675

Em todos equipamentos modernos portáteis como celulares, note books, GPSs, etc, nota-se uma tendência de usar o ‘touch screen’, onde acionamos as mais variadas funções ao simples toque de dedo. Seria possível usar esta tecnologia também em montagens caseiras com microcontroladores? Veja mais…

Aplicações com sensores de toque parecem bem interessantes, quando desejamos acionar uma determinada aplicação. Muitos já conhecem o tipo ‘resistivo’, onde a resistência elétrica do dedo ligando dois contatos elétricos, conduz uma baixa corrente, suficiente para acionar a base de um transistor Darlington (alto ganho), em cujo coletor podemos ter um rele de carga. Mas que dizer, se queremos um sensor sensível ao toque, mas usando um dielétrico entre o dedo e o condutor? Neste caso, temos que usar um sensor do tipo ‘capacitivo’. Como o aumento da capacitância resultante do toque é de apenas alguns poucos picofarads, temos que ter um sistema bem sensível. Quais as principais tecnologias que podem ser usadas em aplicações de acionamento por toque?
Podemos identificar 2 técnicas que estão sendo muito usadas: Por medida de frequência e por medida de tensão. Veja a figura abaixo.

Trata-se de um sensor baseado na divisão da tensão entre o capacitor sensor e o capacitor ‘hold’ do conversor analógico/digital. Ele opera da seguinte forma (explicação simplista):
1) O capacitor ‘sensor’ é descarregado.
2) O capacitor ‘hold’ é carregado com vcc.
3) Os dois capacitores (sensor e hold) são ligados juntos.
4) Ocorrerá uma média de tensão entre eles.
5) Realiza-se a medição desta tensão.
6) Compara-se o valor lido com um nivel pré-estabelecido de tensão, que determina o ‘on/off’.
Para um estudo mais profundo deste método, consulte a Note Application AN 1298, da Microchip.

Agora veja a figura abaixo:

Este método é usado em alguns PICs da série 18 e 24, com hardware interno disponivel, chamado ‘CTMU’ (charge time measurement unit).
O processo se baseia em descarregar os capacitores ‘hold’ e ‘sensor’ até zero e em seguida, carrega-los com uma corrente constante por um dado período de tempo. Ao término deste período, realiza-se a medida da tensão com o conversor AD. Com o dedo tocando o sensor, teremos mais capacitância, ou seja, teremos menos tensão lida pelo conversor AD.
Para mais informações sobre isto, veja a Note Application AN1250A da Microchip.

Note a próxima figura abaixo:

Os dois métodos anteriores foram baseados em medida de tensão, mas este se baseia em medida da frequência gerada. Em resumo, usa-se um comparador interno do PIC como oscilador, para produzir um frequência entre 100 khz e 400 khz. Esta frequência será alterada quando tocamos no sensor (reduzida, pelo aumento da capacitância). Usa-se o timer0 e seu prescaller para medir esta frequência em uma janela de tempo apropriada (que não estoure o flag overflow). Cada leitura é comparada com a média das anteriores. Se a leitura atual for maior ou igual a esta média, não houve toque. Mas, se a leitura der menor que a média, em um patamar previamente determinado, então houve um toque no sensor. Este método pode ser usado em microcontroladores sem conversor AD, mas que tenham pelo menos um comparador internamente. Para mais detalhes, veja a Note Application AN1202, da Microchip.

O uso do sensor de toque capacitivo pode apresentar alguns problemas como falta de sensibilidade, instabilidade, disparos aleatórios, irradiação de interfêrencias, ser afetado por sinais nas próximidades. Existem varias maneiras de ‘driblar’ estes problemas como a correta confecção da placa de circuito impresso, escolha de caminhos paras as trilhas (evitar próximidades com trilhas que tenham sinais trafegando), blindagem com o plano terra, tamanho dos ‘pads’ (area do capacitor sensor), etc. Também, tem o recurso de filtros por sofware, para minimizar interferências e evitar instabilidades. Uma explanação completa poderá ser visto na Note Application AN1492 e também na AN1334.

Será que poderiamos fazer alguma montagem prática, em base experimental, para iniciar testes com sensor de toque?
Veja a proposta no esquema abaixo:

Usando um PIC12F675, em uma versão por medida de frequência, poderemos fazer um sensor por toque capacitivo. Ele tem internamente, um comparador, que com a devida configuração, permite usa-lo como oscilador do sistema de toque. Foi ligado um simples resistor de 1k para a malha de realimentação do comparador interno, nos pinos 5 e 6. Este entra em oscilação a uma frequência por volta de 3,5 mhz. No pino 3 foi colocado um led para sinalizar o acionamento ao toque. Para o desenvolvimento, o pino 2 pode ser usado para enviar informações da média de leituras e do valor atual do timer 0, para uma serial. Usando um terminal de serial (HyperTerminal, por exemplo), podemos acompanhar os valores e se necessário, ajustar no arquivo asm, os valores de constantes para um funcionamento mais ‘afinado’.
Veja a aparência da tela ao receber informações do timer 0, rodando o programa terminal e devidamente conectado na DB9:

Os valores iniciados com ‘A’ se referem a média das leituras anteriores e os valores iniciando com ‘B’, ao valor da leitura atual. Normalmente, sempre ‘B’ deve ser maior que ‘A’. Mas quando ocorre um toque, ‘B’ se torna menor que ‘A’. Se observar o código do arquivo asm, após a média de 16 leituras iniciais, subtraímos um valor de patamar de mudança, chamado de ‘limite’. É feita nova leitura, e se o valor lido for maior que a média, não acionará a saída do led, mas esta leitura será somada com a média e dividida por 2 (dando uma nova média). Caso a nova leitura tenha sido menor que esta média, ocorrerá o acendimento do led, e um valor de histerese será somado a média. Portanto, até que uma nova leitura seja maior que a média + histerese, não ocorrerá o desligamento do led.

Lógicamente, para deixar funcionando ‘redondo’ pode exigir muitas compilações e cargas do arquivo hex no chip. Depois, ao termino do desenvolvimento, pode-se retirar esta parte que usa a serial, por simplesmente comentar a frase: #DEFINE TESTE_COM_SERIAL , que se encontra logo no início do programa ASM. Graças aos comandos ‘ifdef e endif’, informamos ao compilador para não compilar as linhas, se a ‘definição’ for comentada.

Abaixo, um video caseiro mostra o funcionamento do sensor, montado em placa experimental.

[stream base=x:/picsource.com.br/wp-content/photos/2013/05/ flv=touch_video.flv embed=false share=false width=640 height=360 dock=true controlbar=over bandwidth=high autostart=false /]

O sensor poderá ser feito no próprio impresso, ou a parte, sendo que, quanto maior for a ‘área’, mais sensível será o sensor. Nos testes, usei uma plaquinha de circuito impresso de 1cm x 1cm, face única, e o toque pelo lado da fenolite (ou fibra de vidro).
Obs. Este material é para uso didático, baseado em Note Applications da Microchip, sendo sujeito a bugs ainda não detectados. Esta sendo fornecido o arquivo asm, que poderá ser alterado conforme as necessidades do hobista.

Segue o arquivo ASM:

touch_asm

Segue o arquivo HEX:

touch_hex

Material para leitura:
AN 1101
AN 1102
AN 1103
AN 1104
AN 1334
AN 1492A
AN 1298

Manuais:
Pic 12F675
HyperTerminal

Curiosidades:
Um número muito útil e intrigante
Doença de Lyme e os carrapatos
Antártida: a última fronteira
A ciência e a Bíblia são compatíveis?
Yellowstone: encontro de águas, rochas e fogo
A reconstrução da Biblioteca de Alexandria
Jantar Mantar — um observatório sem telescópios
Comunicação — essencial nos ecossistemas da Terra
Uma das nozes mais úteis do planeta
Robert Boyle – lições do passado
Balolo – o caviar do Pacífico
A língua da selva — segredos da comunicação entre os animais
Ultimato “em nome de Deus”
Carros – no presente e no passado
O sistema de ‘spray’ do besouro
Ouvindo sons do espaço
Porque as estrelas são cintilantes?
Uma voz silenciosa que pode se ouvida

Outros assuntos:
Como fazer seu segundo casamento dar certo
Quando seu filho tem uma deficiência
O que fazer se você tem um problema de saude – Parte 1
Como parar de discutir
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como acabar com a tática do silêncio
Como resolver problemas em seu casamento?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

Clique aqui para comentários/sugestões fora deste tópico

10 comments on “INICIANDO COM SENSORES DE TOQUE (TOUCH SENSOR) – COM PIC 12F675

  1. claudio gostaria de saber c vc tem augun projeto com pic para motor trifasico jerar 3 phase no microcontrolador grato wesley 💡

    1. Olá Wesley!
      Eu ainda não tenho montagens com motores trifásicos, dado que necessita de pelo menos um para testes e não disponho de nenhum. Também é uma área complicada que ainda não quis me aventurar.
      Cláudio

  2. Boa noite claudio, tudo bem?este projeto tem como modificar liga desliga com retenção? E tem como compilar pro PIC12f629? Valeu!

    1. Olá Geraldo!
      Este projeto originalmente foi feito para fins didáticos. Ele é muito suscetível a mudanças no comprimento dos fios, na distância de componentes, no tipo de sensor usado, sendo difícil de ser ajustado. Por isto foi usado o recurso da visualização no HyperTerminal. No momento, não saberia como fazer esta mudança que me pede. Talvez eu retome este tema no futuro.
      Cláudio

  3. Ei Claudio Bom dia.
    Como sempre de sua parte outro material muito bom, Obrigado pela sua disposicao em mostrar seu conhecimento, que e muito valioso para quem esta vendo. ( Eu estou neste meio vendo Rs Rs RS).
    Que Deus ti abencoes muito, em saude e sabedoria.

    Renato Adami

    1. Olá Renato!
      Obrigado por seu comentário e incentivo. Os méritos não cabem a mim, pois somente repasso o que aprendo. Mas cabe sim, ‘Aquele que nos abençoa’, cujo sabedoria copiamos diariamente de sua maravilhosa ‘criação’.
      Claudio

  4. ok amigo mas os passo a passo no MPLAB , de como fazer pois editar até consigo mas com alterar um arquivo pronto e compilar ele para gerar o hex não estou conseguindo . sobre o uso do moc ja conheço ele sim mas como o circuito ficaria isolado na caixa de plastico sem contato nem no sensor ja que é capacitivo , eu montei um projeto que usa um pic direto no triac e ja até vi exemplos na microchip até mesmo da fonte , mas uma parte concordo com vc uma instalação segura é preciso boa isolação , mas o que vc ja fez ja é o bastante só ficaria otimo se vc em modo retenção , mas este ja serve ok

  5. ola amigo vou testar o projeto , nem sei como te agradecer , só uma duvida o led pisca em forma de status tipo modo pulso ou fica tipo moto retenção , pensei na hipotese de usar um triac em sua saida e outra coisa não consigo mudar um arquivo asm exemplo mudar do pic para 12f675 um projeto feito em 12f629 , poderia postar no site como fazer isso seria muito ultil ja que vc é o unico que conheço que desenvolve um projeto e da esta opção de mudança ok amigo

    1. Olá Liliano!
      O circuito sensor de toque apresentado esta no modo ‘pulso’. A utilização de um triac, segundo o esquema que você enviou, com alimentação sem transformador esbarra em alguns problemas. 1)Os triac’s consomem muita corrente para iniciar seu disparo. O microcontrolador não poderia suportar a corrente diretamente e a fonte de alimentação ‘arreia’. 2) O disparo tem que ser no momento certo da senoide AC. O microcontrolador teria que usar mais pinos para monitorar a senoide e disparar por poucos microsegundos, tanto na fase positiva como na negativa. A segurança também fica comprometida, pois tudo esta ‘vivo’. Assim, o uso de ligação direta do PIC para o triac, sem uma isolação, na minha opinião, não é uma boa opção. Tente usar um foto acoplador do tipo MOC3021. Quanto a modificar projetos de 12f629 para 12f675, geralmente, só temos que modificar o cabeçalhos ‘list’ e ‘include’ para 12f675 e na inicialização, apagar o registrador ‘ANSEL no bank1, para liberar as portas do conversor AD. Veja abaixo:

      bank1
      clrf ansel
      bank0

      Tente modificar um e me retorne.
      Claudio

Comments are closed.

Back To Top