Aprender Arduino, prototipado y programación avanzada con 100 ejercicios. Rubén Beiroa Mosquera. Читать онлайн. Newlib. NEWLIB.NET

Автор: Rubén Beiroa Mosquera
Издательство: Bookwire
Серия:
Жанр произведения: Математика
Год издания: 0
isbn: 9788426727404
Скачать книгу
image image image

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

      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 image pondremos una pequeña tolerancia, de 0,05 V (10); por eso se considera que, cuando el condensador alcanza 4,95 (1013), se ha cargado totalmente y, con 0,05 V, está totalmente descargado.

      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.

image image

       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 image más compleja que las vistas anteriormente con la cual podemos obtener el valor de carga del condensador para cada instante o, lo que es lo mismo, saber en qué momento alcanzará un determinado valor de tensió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 image y analizaremos los resultados.

      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 image, encontramos varios condensadores que se utilizan en la etapa de potencia; para evitar que la alimentación se corte bruscamente, se utilizan condensadores.

image image image

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

      2.El circuito estará formado por dos resistencias en serie y un condensador en paralelo con una de ellas image.

      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