Rubén Beiroa Mosquera

Aprender Arduino, prototipado y programación avanzada con 100 ejercicios


Скачать книгу

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 image 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.

image image image

       007

      Debounce (II)

      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 image.

      •Como el comportamiento del pulsador Pull-Up es inverso al Pull-Down, tanto el circuito como el programa image se «invertirán».

      •En este caso image, 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 image.

      2.Con este programa image, 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.

image image image image image

       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.

      1.Conectamos una resistencia de 4,7 kΩ y un condensador de 10 μF(35 V) en serie image.

      2.Este circuito se conectará a una salida PWM.

      3.La señal analógica la obtendremos del polo positivo del condensador, así que lo conectamos a una entrada analógica para comprobar que realmente se genera una salida analógica.

      4.Por último, conectamos un potenciómetro, el cual se utilizará como valor de consigna y se comparará si se consigue el mismo nivel de tensión en el filtro que en la salida del potenciómetro.

      5.Programamos el Arduino image para que genere una salida PWM proporcional al valor del potenciómetro y muestre los valores tanto del potenciómetro como del filtro, para así poder compararlos.

      6.Con ayuda de la herramienta Serial Plotter, podemos graficar los valores image.

      Conclusiones:

      •Si analizamos la gráfica, encontramos que la señal analógica (azul) se asemeja a la entrada analógica (roja). Resulta normal que la señal no sea exactamente igual, ya que hay que tener en cuenta que el condensador está continuamente cargándose y descargándose.

      •Esta señal que acabamos de graficar tiene factores importantes que definen su comportamiento, el tiempo de respuesta (lo que tarda en alcanzar el valor de consigna) y el rizado (esa oscilación que apreciamos en la gráfica). Estos factores están relacionados ya que, si queremos reducir el rizado, aumentará el tiempo de respuesta y viceversa.

      •También