004
Gestión de tiempo: millis() y micros()
El lenguaje de programación, aparte de las instrucciones ya conocidas como <<delay()>> y <<delayMicrosenconds()>>, dispone de otras para la gestión de tiempo.
•millis()
•Esta instrucción no necesita parámetros y nos devuelve el tiempo que lleva encendido el Arduino; este tiempo viene expresado en milisegundos.
•Nos devuelve un valor tipo unsigned long, lo que quiere decir que el valor devuelto varía entre 0 y 4.294.967.295.
•Si hacemos la operación: 4.294.967.295 / (1000 * 60 * 60 * 24), el resultado aproximado será de 50 días.
•Por lo tanto, esta instrucción al cabo de 50 días se resetea (su valor interno) y vuelve a contar desde cero.
•micros()
•Esta instrucción no necesita parámetros y nos devuelve el tiempo que lleva encendido el Arduino; este tiempo viene expresado en microsegundos.
•Nos devuelve un valor de tipo unsigned long, lo que quiere decir que el valor devuelto varía entre 0 y 4.294.967.295.
•Si hacemos la operación: 4.294.967.295 / (1000000 * 60) el resultado aproximado será de 70 minutos.
•Por lo tanto, esta instrucción al cabo de 70 minutos se resetea (su valor interno) y vuelve a contar desde cero.
Nos ayudaremos de las instrucciones anteriores para comprobar las reglas que fijan el comportamiento de un condensador en el proceso de carga; de lo que se trata es de comprobar el tiempo que tarda el condensador en alcanzar los valores clave, que son los de la carga al 63,2 % y al 100 %.
1.Para medir los tiempos, es necesario muestrear el valor del condensador; esto se hará con la entrada A1
2.Según las ecuaciones vistas en el capítulo anterior y utilizando los mismos valores de resistencia y condensador, este alcanza el 63,2 % de la carga en 1 segundo y el 100 % en 5 segundos.
3.En el programa
4.El valor del 63,2 % de la carga lo alcanza cuando llega a un valor de tensión de 3,16 V cuyo valor de lectura equivale a 646.
5.Cuando visualizamos el resultado, vemos que se aproxima al resultado esperado y las pequeñas desviaciones que encontramos son normales.
005
Descarga de un condensador
En el capítulo anterior estudiamos cómo se comportaba un condensador en el proceso de carga y, en este capítulo, estudiaremos el proceso de descarga. Un condensador, cuando se descarga, se comporta del mismo modo que cuando se carga, es decir, se cumplen las mismas leyes y utilizaremos las mismas ecuaciones matemáticas, pero, antes de ver esto, tenemos una ecuación
Como el proceso de descarga de un condensador es similar al de carga, rigen las mismas ecuaciones, pero definirán un comportamiento inverso:
•Seguimos manteniendo el margen de tolerancia (0,05 - 4,95 V).
•El condensador tardará R * C segundos en descargarse un 63,2 % de su carga o, lo que es lo mismo que se descarga hasta el 36,8 %.
•Ese 36,8 % supone que el condensador tiene una carga de 1,84 V, que, si lo traducimos a la lectura de un Arduino, es un valor de 376.
•Teniendo esto en cuenta, cargamos el siguiente programa
A vista de los resultados, podemos comprobar que el comportamiento del condensador, cuando se carga y cuando se descarga, es el mismo y se rige por los mismos principios. Con este capítulo, ya hemos visto el funcionamiento básico de un condensador.
En el siguiente capítulo veremos un uso práctico de un condensador, el cual nos va a permitir solucionar el problema que tenemos con los rebotes de las señales ya que, como los condensadores tienen un proceso no lineal de carga y descarga, aprovecharemos eso para diseñar un circuito que filtre estos rebotes. Los condensadores tienen diversas aplicaciones, como pueden ser:
•Baterías
•Filtros
•Energía solar
•Memorias
•Osciladores
•Compensación del factor de potencia
•…
Si analizamos el hardware del Arduino UNO
006
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