Debounce (I)
El término debounce significa rebotar en inglés y es el problema con el que partimos en este libro: la eliminación de los rebotes en una señal; para ello, tenemos dos posibles soluciones: por hardware o por software. Cada una tendrá sus ventajas e inconvenientes que, en función de las circunstancias, nos hará decantarnos por uno u otra.
Empecemos por la solución por hardware; como ya sabemos, tenemos varias opciones a la hora de conectar un pulsador: Pull-Up y Pull-Down. Solución antirrebote pulsador Pull-Down:
1.Conectamos el siguiente circuito
.
2.El circuito estará formado por dos resistencias en serie y un condensador en paralelo con una de ellas
.
3.Es importante el valor de cada componente y el criterio de conexión.
4.Si dejamos a un lado el condensador, vemos que lo que tenemos es un divisor de tensión con dos resistencias; en el primer tomo, ya vimos cómo solucionar este tipo de circuito.
5.Atendiendo a los valores de las resistencias, en el momento en el que se pulse el botón en la primera resistencia, la caída de tensión será de 1,24 V y, en la segunda 3,76 V.
6.Si recordamos los umbrales de tensión para los niveles lógicos de estado alto (> 60% de la tensión de trabajo 3 V) y estado bajo(<30 % de la tensión de trabajo 1,5 V), podemos estar seguros de que, como el condensador se encuentra en paralelo con la segunda resistencia y se cargue hasta los 3,75 V, la lectura de esta entrada será a nivel alto.
7.Por lo tanto como al condensador le llevará un tiempo cargarse eliminará de la señal los rebotes que produce el pulsador.
8.En el momento en el que dejemos de pulsar, el condensador se empezará a descargar por la segunda resistencia hasta alcanzar los 0 V.
9.Con este circuito montado, podemos cargar el siguiente programa
y comprobar que el contador ahora sí contará adecuadamente el número de pulsaciones.
10. Lo que sí que podemos apreciar es que, si pulsamos muy rápido, no se llegarán a contabilizar todas las pulsaciones: eso es por el tamaño del circuito RC, que hemos diseñado para filtrar las pulsaciones entre las que no ha transcurrido un tiempo demasiado elevado.
11. Si, en la práctica, vemos que su funcionamiento no se ajusta a las características del sistema, no tenemos más que rediseñar el circuito RC.
12. En nuestro caso, los pulsadores que se suelen utilizar en las protoboards suelen tener unos rebotes de unos 150 ms de duración; con el circuito que hemos realizado, debería ser suficiente como para eliminar esos rebotes.
13. En caso de rediseñar el circuito para que la respuesta del filtro sea más rápida o más lenta, se tiene que mantener la relación entre las resistencias que forman el divisor de tensión.
En el caso del pulsador Pull-Up, debemos hacer una serie de cambios en el circuito: primero en relación con las resistencias y, en segundo lugar, mover el condensador, tal y como se ve en el esquema
.
•Como el comportamiento del pulsador Pull-Up es inverso al Pull-Down, tanto el circuito como el programa
se «invertirán».
•En este caso
, cuando no se pulsa el botón, la tensión de lectura será de 5 V y, en el momento en el que se pulse, bajará hasta 1,24 V ya que el condensador se quedaría conectado en paralelo con la segunda resistencia.
Vistas las soluciones por hardware, pasemos a la solución por software. La solución por software consistirá en medir el tiempo que transcurre entre diferentes flancos de subida (ya que se utilizará un pulsador Pull-Up) despreciando las que, por tiempo, se puedan considerar un rebote.
1.Conectamos un circuito con un pulsador Pull-Up
.
2.Con este programa
, primero comprobamos si hay un flanco de subida, de ser así, comprobamos si, al menos, han transcurrido 150 ms desde el último flanco; de ser así, se contabiliza como pulsación y, en caso contrario, no se tendrá en cuenta.
3.En el caso de que el pulsador fuese Pull-Down, solo habría que controlar flancos de bajada.
Conclusiones:
•La solución por hardware simplifica la programación, pero implicaría la conexión de más componentes.
•Por otro lado, la solución por software consume más recursos de programa, pero es más fácil de adaptar a cada posible caso ya que, simplemente, se cambia un valor en el programa.
•Posiblemente la solución por software, en este caso, resulte más conveniente.
008
De PWM a señal analógica con filtro paso bajo
Otro uso que podemos darle a un condensador es convertir una señal PWM en una señal analógica. Con una señal PWM, podemos regular infinidad de procesos, pero habrá ciertos casos en los que no será adecuado utilizar una señal PWM:
•A la hora de regular componentes cuya tensión de trabajo sea inferior a 5V .
•Cuando sea necesario disponer de un nivel de tensión constante diferente a 3,3 o 5V.
•Para general señales que serán leídas por entradas analógicas.
Para estos casos, podemos utilizar un filtro de paso bajo para modular la señal PWM y convertirla en una salida analógica. Existen diferentes tipos de filtros que, en resumen, se diferencian por el rango de frecuencias con el que trabajan. Para el caso que nos atañe, basta con decir que el filtro de paso bajo será el adecuado para este tipo de aplicación, ya que no es objeto del libro profundizar en este tema.
Читать дальше