0% encontró este documento útil (0 votos)
154 vistas20 páginas

Anti-rebotes con MEF en Microcontroladores

Este documento presenta un método de anti-rebotes (debounce) utilizando una máquina de estados finitos (MEF) para detectar el estado de un pulsador conectado a un microcontrolador. Explica el problema de los rebotes eléctricos y propone una MEF con cuatro estados (BUTTON_UP, BUTTON_FALLING, BUTTON_RISING, BUTTON_DOWN) y condiciones de transición para implementar el anti-rebote mediante retardos de 40ms. Como ejercicio, se pide implementar este programa.

Cargado por

castillo_leo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
154 vistas20 páginas

Anti-rebotes con MEF en Microcontroladores

Este documento presenta un método de anti-rebotes (debounce) utilizando una máquina de estados finitos (MEF) para detectar el estado de un pulsador conectado a un microcontrolador. Explica el problema de los rebotes eléctricos y propone una MEF con cuatro estados (BUTTON_UP, BUTTON_FALLING, BUTTON_RISING, BUTTON_DOWN) y condiciones de transición para implementar el anti-rebote mediante retardos de 40ms. Como ejercicio, se pide implementar este programa.

Cargado por

castillo_leo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Cursos de Programación de Sistemas

Embebidos de ACSE y CADIEEL


Nivel 1 - Programación de Microprocesadores
Clase 5 – Anti-rebotes con MEF
Profesores:
Ing. Eric Pernia, Dr. Ing. Pablo Gomez e Ian Olivieri

Anti-rebotes (debounce) utilizando MEF.


Material basado en las Clases
de las asignaturas:
“Sistemas Digitales” de la UNQ.
 Profesor Ing. José Juarez.

3
Anti-rebotes
Rebotes eléctricos de componentes
 Este fenómeno físico está asociado al componente mecánico
(por ejemplo, switch, botón, relé electromecánico, etc.) ocurre
al cambiar el estado mismo, por ejemplo, entre dos niveles de
tensión causando que oscile rápidamente entre valores al
cambiar de estado.
 Pueden ocurrir distintos comportamientos entre switchs
constructivamente iguales.
 Requiere especial cuidado en las entradas del
microcontrolador afectadas.
 Provoca inexactitud en mediciones, valores inválidos de
tensión, disparos múltiples, etc.
4
Anti-rebotes

5
Anti-rebotes
Medición de una señal de respuesta rápida

6
Anti-rebotes
Medición de una señal de respuesta lenta

7
Anti-rebotes
Medición de una señal muy ruidosa

8
Anti-rebotes
Ejemplo

 Vamos a contar cuántas veces detecta que se


presiona un botón conectado al microcontrolador
apretándolo y soltándolo lo más rápido posible

 ¡Manos a la obra!

9
Anti-rebotes
Métodos anti-rebotes (debouncing)

 Hardware:
Simple, costoso, no escalable fácilmente, depende de la
cantidad de entradas, existen integrados orientados a tal fin,
se deben modificar los circuitos.

 Software:
Implica programación, económico, rápido, escalable,
independiente de la cantidad de entradas.

10
Anti-rebotes
Por hardware
 Set/Reset

Vcc

GND

Vcc
11
Anti-rebotes
Por hardware
 Filtro

12
Anti-rebotes
Por software

 Cuentas sucesivas.
 Set/Reset.
 Retardos (habitual: 20 a 50 ms).
 Registros de desplazamiento.

Veamos el algoritmo de retardos implementado con una


Máquina de Estados Finitos.

13
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF

Voltaje en el pin del microcontrolador al pulsar un botón:

3.3V

Botón presionado

14
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF
Queremos que el microcontrolador detecte lo siguiente a partir
del voltaje ingresado en el pin:

15
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF
Estados:
 BUTTON_UP - Mientras el botón está liberado.

 BUTTON_FALLING - Mientras esta ocurriendo el flanco


descendente, hace el anti-rebote.

 BUTTON_RISING - Mientras esta ocurriendo el flanco


ascendente, hace el anti-rebote.

 BUTTON_DOWN - Mientras el botón está presionado.

16
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF

3.3V

17
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF
Condiciones de transición entre estados:
 Si está en estado UP y presionan el pulsador pasa al estado FALLING.
 Si está en estado FALLING, espera un tiempo de 40 ms y vuelve a
leer el pulsador, si realmente estaba presionado pasa al estado
DOWN y llama a la función (evento) buttonPressed(); si no estaba
presionado vuelve al estado UP.
 Si está en estado DOWN y liberan el botón pasa al estado RISING.
 Si está en estado RISING, espera un tiempo de 40 ms y vuelve a leer
el pulsador, si realmente estaba liberado pasa al estado UP y llama a
la función (evento) buttonReleased(); si no estaba liberado vuelve al
estado DOWN.
18
Ejemplo de detección de estado de
pulsador con anti-rebotes con MEF
MEF propuesta (Mealy):

19
Ejercicio
 Como ejercicio de tarea deberán entregar este
programa para la siguiente clase:

 Anti-rebotes con MEF.

 ¡Manos a la obra!

20

También podría gustarte