Blog de indusele

EJEMPLO 4. Control de intensidad lumínica de un LED por contro PWM

Hoy vamos aprender un par de cosas muy básicas; empecemos por explicar qué es el control de PWM, el cual se suele utilizar bastante. Control por PWM es lo mismo que decir modulación por ancho de pulso. Básicamente consiste en modificar el ciclo de trabajo de una señal periódica variando el ancho de su parte positiva. Esto es posible debido a que el ciclo de trabajo es el cociente del ancho de pulso entre el periodo de la función. Para ello se requiere dividir el circuito en dos partes distintas con un nexo de unión que será el comparador.

Estos métodos se basan fundamentalmente en la comparación del contenido de un registro contador que cuenta los ciclos del sistema con valores de tres registros de continua (el primero con la consigna de la frecuencia de la señal de modulación, el segundo con la consigna del intervalo de tiempo a nivel alto de la señal de control y el tercero con la consigna de tiempo muerto entre la activación y desactivación). Esto significa que tendremos una salida y dos entradas. Según lo que hemos visto, una de las entradas es la que da la frecuencia a la señal del modulador y la otra entrada será la que determina la salida dado que es la que está vinculada con un oscilador de tipo de dientes de sierra.

Puede tener varios objetivos, como tener el control de la energía que se proporciona a una carga (nuestro caso) o llevar a cabo la transmisión de datos. Pasemos a la práctica. Hoy tenemos que hacer un montaje muy simple (al cual tenéis acceso, como siempre, desde este enlace) y un código muy sencillo:

Como he dicho, este ejemplo sirve además para conocer cómo funciona un bucle for. For, literalmente, significa ‘para’; esto nos da una pista de que un bucle for se ejecuta para una condición dada. Por lo tanto, siempre que se esté cumpliendo la condición impuesta entre paréntesis se ejecutarán las instrucciones descritas entre llaves.

Normalmente, el bucle for se emplea para instrucciones que han de repetirse, contadores… En este caso como deseamos que el LED se encienda de forma progresiva lo que hacemos es definir un contador i que se va incrementando uno a uno (eso quiere decir i++, es análogo a poner i=i+1). Esto significa que si tenemos una “energía lumínica total” igual a 255 se irá incrementando uno a uno hasta alcanzar el máximo. El delay no es necesario, simplemente nos permite visualizar ese aumento de intensidad porque de otro modo sería inmediato y nuestro ojo no podría apreciarlo.

Una vez alcanzado el máximo, se ejecuta otro bucle for que parte de un valor inicial máximo (i=255) para alcanzar uno a uno (como decrece, i—que es lo mismo que i=i-1) hasta que se apague (el valor mínimo será i=0). Normalmente en estas condiciones se pone < ó > en lugar de = porque se considera que se empieza a contar desde el valor 0 al valor 1.

El bucle for es bastante usual, como ya he comentado, y forma parte de los tres bucles básicos que son el if (el cual ya lo empleamos en el EJEMPLO 2 y en el EJEMPLO 3) y el while que ya explicaremos. Sin embargo, creo que hay que prestar especial cuidado a la hora de comprender cómo se realiza el control PWM porque se empleará en muchas aplicaciones de Arduino. Por si no ha quedado claro os dejo un vídeo, ¡hasta pronto!


Comentarios

No hay ningún comentario

Añadir un Comentario: