Práctica 3. Encender un LED y cambiarle su intensidad usando PWM

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestPrint this page

3.1  Objetivo General:

Encender un LED y variar su intensidad mediante señales de modulación de ancho de pulsos (pulse-width modulation PWM).


 3.2 Materiales y Métodos:

  1. Un LED.
  2. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560, dependiendo de cuál te toque dentro del desarrollo de la práctica.
  3. Un cable USB impresora.
  4. Un computador.
  5. Cables para el montaje del circuito.
  6. Tarjeta Protoboard.
  7. Una Resistencia Eléctrica de 220 ohm.

Antes de comenzar con el desarrollo del programa, es necesario conocer que son las señales de modulación de ancho de pulsos (Pulse Width Modulation PWM).

A menudo se necesita algo más que una señal de 0 o 1, por ejemplo: para variar la velocidad de giro de un motor, para variar la intensidad de emisión un LED, o para transmitir los grados de giro de un servo, entre otros ejemplos.

Para todo esto nos servirá el PWM, que emula una señal analógica a partir de una señal digital.

Las siglas PWM vienen de Pulse Width Modulation, o Modulación de Ancho de Pulso. Lo que hace este tipo de señal es emitir, en lugar de una señal continua de salida,  una serie de pulsos que se pueden variar en su duración pero con una frecuencia constante. Así la tensión promedio resultante es directamente proporcional a la duración de los pulsos dentro del rango del periodo indicado, es decir, cuanto más juntos estén esos pulsos de +5v, mayor será la tensión promedio de nuestra salida, y cuanto más distantes sean estos, menor será dicha tensión, podemos observarlo en la Figura 3:

Figura 1 - P3

Figura 1 Cambio de tensión dependiendo de la duración de funcionamiento del LED. (Imagen de www.tr3sdland.com)

3.3 Montaje de la práctica:

Antes de comenzar la realización del montaje del circuito electrónico, primero se esquematiza en el programa Fritzing, se debe tener en cuenta el conocimiento de cuál es el cátodo y ánodo del LED. Se coloca el ánodo en el pin 9 y el cátodo a tierra (ground), como se muestra en la Figura 3:

Figura 2. Montaje del circuito en el programa Fritzing.

Se observa en la Figura 2 que se está utilizando el Arduino Uno-R3, al igual si se utiliza la tarjeta Arduino Mega 2560 es el mismo procedimiento. El Protoboard nos ayuda a insertar el LED e instalar el circuito a través de cables, al igual que la resistencia eléctrica. El pin 9 se conecta directamente al Protoboard, como se muestra una de las funciones que tiene tablero, es que sus orificios al estar conectados por un cable están todos conectados entre sí. La señal proveniente del pin 9 va conectada con el positivo del LED, la parte negativa o cátodo va conectada a una resistencia que a su vez se conecta de nuevo a la tarjeta Arduino hacia tierra (GND).

Un dato importante es ¿Por qué se ha elegido como entrada el pin 9 y no el pin 13?, se eligió el pin 9 ya que en la tarjeta Arduino al lado del pin hay un símbolo (~), los puertos o pines así indicados permiten enviar señal modulada, es decir, los pines que no tienen ese emblema solo mandan señales de 0 y 1; como la práctica se pretende que cambie la intensidad del LED y es necesario emular una señal analógica a partir de una señal digital (PWM), por ello se utiliza el pin 9.

Luego que se tiene armado el circuito en el programa Fritzing, se puede iniciar con el desarrollo del programa en el IDE de Arduino.

3.4 IDE del Código de Arduino:

-Debemos seleccionar la tarjeta Arduino que estamos utilizando sea Arduino Uno-R3 o Arduino Mega 2560.

-Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.

– Se realiza el código:

  • Inicialmente se indca un nombre de qué es lo que consiste el código desarrollado a través del símbolo //, se puede colocar el título de la práctica o del programa en sí. También se puede utilizar como comentarios dentro del programa.
  • Se declaran las variables. En la práctica se declaran de tipo constante, una variable que no cambiara durante el desarrollo del programa, su comando es const. Además, se debe especificar qué tipo de variable es la constante. En nuestro caso caso será entero y su comando es int. Luego se le da el nombre de la variable; en la tarjeta Arduino se coloca el ánodo en el pin 9 y la variable se le asignara el valor de 9. También se declara la variable entero i igual a cero (0), la cual será un contador. Para cambiar la intensidad del LED, primero la intensidad del mismo será cero (0), después va subiendo poco a poco por porcentajes hasta llegar al valor máximo de 255.
  • Se define si la variable declarada son de tipo entrada o de salida, para eso se utiliza el comando void setup (), Se inicia  corchete para saber qué es lo que contiene ese comando y al finalizar el comando cierro corchete. Internamente del corchete se declarara que la variable LED es de salida, esto se realiza a través del comando pinMode, este a su vez necesita como argumento la variable y el tipo de señal de la misma, es decir pinMode(LED,OUTPUT); en la que OUTPUT nos indica que la señal saldrá del pin 9 permitiendo encender el LED.
  • Luego de definir las variables, se procede a realizar la estructura del código a través del comando void loop (), de igual manera se abre corchete ({) y se cierra luego de terminar su cumplimiento (}). Internamente del corchete se escriben las instrucciones que ejecuta Arduino continuamente. Como se debe cambiar la intensidad del LED es necesario utilizar un contador que vaya desde cero (0) hasta 255, la cual se declaró anteriormente del contador i=0. La estructura que permite contar es for (i=0; i<255; i++), que significa que para i=0 hasta i<255, el i++ es el contador que ira de 1 en 1 hasta llegar a su valor final que en es este caso es 225. Luego para saber que va dentro del lazo for se abre corchete en la misma estructura y se declara el comando analogWrite (), este a su vez necesita como argumento la variable y el tipo de señal de la misma, es decir analogWrite(LED, i); en la que i es el valor de intensidad que cambiara el LED desde cero (0) la cual variara hasta 255, lo que indica que la señal saldrá del pin 9. Para observar la diferencia de intensidad se establecerá un delay de 10 milisegundos, es necesario realizar este delay ya que de no colocarlo no notará que el LED cambia de intensidad. Luego de llevar al LED al valor mas alto (255) se baja la intensidad del mismo con el comando for, pero en vez de utilizar un contador para incrementar la intensidad, se utilizara  para disminuir la señal desde 255 hasta llegar a cero, es decir, for (i=255; i>0; i–)Igualmente se abre corchete en la misma estructura for y se declara el comando analogWrite (), este a su vez necesita como argumento la variable y el tipo de señal de la misma, es decir analogWrite(LED, i). Para observar la diferencia de intensidad se establece un delay de 10 milisegundos.
  • Al terminar el desarrollo del programa se debe compilar para verificar si existen errores dentro del codificado. Luego si no existen errores se debe cargar el código en la tarjeta Arduino para que pueda ser ejecutado.

NOTA: Para quel IDE de Arduino pueda entender los comandos es necesario que al final de cada instrucción se coloque punto y coma (;).

En el siguiente código se muestra como queda plasmado en el IDE de Arduino, los procedimientos anteriormente señalados:


// Práctica encender un LED y cambiar su intensidad
const int LED=9;
int i;
void setup(){
pinMode(LED,OUTPUT);
}
void loop() {
for  (i=1;i<255; i++){
analogWrite(LED,i);
delay(5);
}
for  (i=255;i>0; i--){
analogWrite(LED,i); }
delay(5);
}

Algoritmo  1 Código para encender y variar la intensidad de un LED utilizando PWM.  

Implementación del algoritmo 1 en el simulador https//123d.circuits.io:

https://123d.circuits.io/circuits/2173143-practica-3-laboratorio-mecabot

3.5 Conclusiones:

Los comandos que se utilizan para realizar la práctica permitió emular una señal analógica a partir de una digital. El rango de salida de una señal analógica  varia de 0 a 255, siendo 0 = 0v y 255 = 5v, por lo que para obtener un voltage dentro del rango se puede realizar  introduciendo un valor determinado para la tensión de salida que se requiera, si quisiéramos conseguir 2,5v el valor a asignar sería 127. Así que lo único que se debe hacer es transformar mediante una simple operación matemática la señal tomada para adaptarla a la señal de salida PWM.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestPrint this page