Debounce de botão (anti-repique)

Você quer executar uma função cada vez que um botão for pressionado? Na hora de testar você aperta o botão uma vez e a função executa 2, 3 ou 10 vezes… Como assim? Precisamos implementar o debounce de botão.

Neste post falaremos sobre debounce de botão (anti-repique).

Circuito de debounce de botão (anti-repique)
Circuito de debounce de botão (anti-repique)

Inscreva-se em nossa lista de emails para ser avisado sobre novos posts em resumos semanais.

Debounce de botão (anti-repique)

Quando um botão é pressionado, idealmente ele fecha o contato e fim da história. Na vida real não existem botões ideais! Durante o tempo de vôo dos contatos do botão podem ocorrer várias aberturas e fechamentos dos contatos, que pode causar diversas leituras de botão pressionado.

Para evitar precisamos utilizar técnicas de debounce, seja por software ou por hardware. Na figura acima vemos uma forma de realizar o debounce de uma chave por hardware, utilizando dois resistores e um capacitor.

Quando a chave está aberta o capacitor é carregado pelos resistores R1 e R2, fornecendo para o microcontrolador uma tensão que varia lentamente.

Quando a chave fecha o capacitor é descarregado pelo resistor R2, ainda fornecendo para o microcontrolador uma tensão que varia lentamente.

Dessa forma os repiques que acontecem durante a troca de estados da chave são filtrados pelo circuito, evitando que sejam detectados como abertura e fechamento do botão.

Note que neste circuito o tempo de carga e descarga do capacitor são diferentes! Geralmente isso não é importante. Caso for importante é possível reduzir a diferença fazendo R1=R2 e colocando um diodo em série com R2, no sentido onde o diodo carrega o capacitor quando a o botão está aberto.

Compartilhe!

Gostou do post? Foi útil? Clique abaixo e compartilhe com seus amigos!

Veja mais posts sobre Hardware.

Autor: Djones Boni

Engenheiro Eletricista e Eletrônico. Professor de Engenharia Eletrônica na UTFPR Toledo. Interesses: Sistemas eletrônicos embarcados e de tempo real.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *