Una señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían constantemente y pueden tomar cualquier valor (recordamos que una señal digital solo puede tomar dos valores, 0 (0V) y 1 (5V)) . Lo primero que tenemos que entender es que la mayoría de microcontroladores, y Arduino no es una excepción, no son capaces de proporcionar una auténtica salida analógica. Para salvar esta limitación y simular una salida analógica la mayoría de los automatismos emplean un "truco", que consiste en activar una salida digital durante un tiempo y mantenerla apagada durante el resto. El promedio de la tensión de salida, a lo largo del tiempo, será igual al valor analógico deseado.
La forma más sencilla de hacer esto, es la modulación de ancho de pulso (PWM). En esta modulación se mantiene constante la frecuencia (es decir, el tiempo entre disparo de pulsos), mientras que se hace variar la anchura del pulso.
En la imagen de la derecha, con un ciclo de trabajo del 10%, es decir, salida a 5 V durante el 10% del ciclo y 0V el 90% restante te da un valor promedio de tensión de salida (es decir la tensión de salida efectiva medible) es la que muestra la línea verde en cada uno de los casos.
Así, en el caso del ciclo de trabajo del 90%, con la salida a 5V durante el 90% del tiempo y a 0V durante el 10% del tiempo, el valor promedio de la salida es un valor muy próximo al valor alto de 5 V.
Aprovecharemos la modulación de la anchura de pulso (PWM) para que la salida efectiva simule una salida analógica, aquella que nos puede ofrecer distintos valores (hasta 255 valores distintos) de tensión de salida.
Para entender el funcionamiento de las salidas analógicas (PWM~), vamos a realizar el control de brillo de tres led conectados a las salidas PWM de Arduino. Llamar la atención que estas salidas de Arduino están notadas con el símbolo ~ y únicamente funcionan de esta forma las salidas 3, 5, 6, 9, 10 y 11.
La sintáxis de esta función es del tipo: analogWrite (nº del pin de arduino/variable,0<valor<255)
por ejemplo: analogWrite (13, 255); Saca 5 V por el pin 13 del Arduino (por ejemplo para encender un led).
VÍDEO DE LA PRÁCTICA
Resolución y explicación de la práctica.
A continuación montamos en TinkerCad el circuito siguiente y el código de más abajo.
El código del programa para controlar el brillo de los tres led sería:
A continuación vamos a controlar un diodo RGB. Un diodo led RGB es un diodo con 4 patillas, una es el cátodo común y tres ánodos, uno para cada uno de los colores primarios, Rojo, Verde y Azul. En el control de este diodo mediante la salida analógica PWM podemos conseguir cualquier color sin más que asignar valores de salida de tensión entre 0 y 255 en cada uno de los LEDs. Si asignamos valores 255,0,0 tendremos el color rojo puro, si asignamos valores 0,255,0 tendremos el color verde y si asignamos a las salidas los valores 0,0,255 tendremos el azul.
Resolución y explicación de la práctica.
A continuación montamos en TinkerCad el circuito siguiente y el código de más abajo.
El código del programa para controlar el LED RGB sería: