All for Joomla All for Webmasters

Chaves Mecânicas - Efeito Bouncing

Em diversos tipos de projetos eletrônicos, é necessário uma entrada digital (ON/OFF) definida pelo usuário; a qual, por exemplo, pode ser obtida por meio de uma chave mecânica (push buttons, botões, teclados, etc.) conectada a uma entrada digital de um microcontrolador. Todavia, infelizmente, devido a sua natureza mecânica, esse dispositivo pode produzir oscilações de natureza transitória (de micro a milisegundos) e aleatória durante a transição de estado.

Para iniciantes, é um pouco difícil entender o efeito de bouncing e a necessidade de programação de uma função para debouncing em um software para microcontroladores, uma vez que esses desenvolvedores ainda podem ter uma visão idealizada das chaves mecânicas cujas transições são apresentadas em livros apenas como pulsos ideais.

Todavia, na prática, é imprescindível que uma função de leitura do estado de uma chave mecânica por meio de uma entrada digital seja feita em duas etapas: a primeira, para a detecção inicial de transição do nível do sinal e a segunda, para algum tipo de processo de reconfirmação de que o estado final do sinal após a transição lida durante a primeira etapa assim permaneceu durante alguns milisegundos de maneira a considerarmos a variação do sinal como válida.

Abaixo apresentamos algumas imagens obtidas por meio de um osciloscópio digital 300MHz após a operação de uma chave mecânica simples do tipo push button em um protoboard para demonstração desse fenômeno. Com as imagens abaixo é fácil entender porque a simples contagem de transições sem debouncing em uma entrada digital conectada a um botão usualmente resulta em um número muito grande face ao número elevado de oscilações, spikes e ainda o período em que o sinal elétrico permanece na faixa de valores indefinida/indeterminada:

SDS00001

SDS00001

SDS00002

SDS00002

SDS00003

SDS00003

SDS00004

SDS00004

SDS00005

SDS00005

SDS00006

SDS00006

SDS00007

SDS00007

SDS00008

SDS00008

Deixe um comentário

Certifique-se de preencher os campos indicados com (*). Não é permitido código HTML.