Está en la página 1de 5

Prctica 3.

Encender un LED y cambiarle su intensidad usando


PWM

3.1 Objetivo General:


Encender un LED y variar su intensidad mediante seales de modulacin de ancho de
pulsos (pulse-width modulation PWM).

3.2 Materiales y Mtodos:

1. Un LED.
2. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560, dependiendo de cul te toque
dentro del desarrollo de la prctica.
3. Un cable USB impresora.
4. Un computador.
5. Cables para el montaje del circuito.
6. Tarjeta Protoboard.
7. Una Resistencia Elctrica de 220 ohm.

Antes de comenzar con el desarrollo del programa, es necesario conocer que son las
seales de modulacin de ancho de pulsos (Pulse Width Modulation PWM).

A menudo se necesita algo ms que una seal de 0 o 1, por ejemplo: para variar la
velocidad de giro de un motor, para variar la intensidad de emisin 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 seal analgica a partir de una seal
digital.

Las siglas PWM vienen de Pulse Width Modulation, o Modulacin de Ancho de Pulso. Lo
que hace este tipo de seal es emitir, en lugar de una seal continua de salida, una serie
de pulsos que se pueden variar en su duracin, pero con una frecuencia constante. As la
tensin promedio resultante es directamente proporcional a la duracin de los pulsos
dentro del rango del periodo indicado, es decir, cuanto ms juntos estn esos pulsos de
+5v, mayor ser la tensin promedio de nuestra salida, y cuanto ms distantes sean
estos, menor ser dicha tensin, podemos observarlo en la Figura 3:

1
Figura 1 Cambio de tensin dependiendo de la duracin de funcionamiento del LED

3.3 Montaje de la prctica:


Antes de comenzar la realizacin del montaje del circuito electrnico, primero se
esquematiza en el programa Fritzing, se debe tener en cuenta el conocimiento de cul es
el ctodo y nodo del LED. Se coloca el nodo en el pin 9 y el ctodo a tierra (ground),
como se muestra en la Figura 3:

Figura 2. Montaje del circuito en el programa Fritzing.

2
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 travs de cables, al igual que la resistencia elctrica. 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 estn todos conectados
entre s. La seal proveniente del pin 9 va conectada con el positivo del LED, la parte
negativa o ctodo 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 smbolo (~), los puertos o
pines as indicados permiten enviar seal modulada, es decir, los pines que no tienen ese
emblema solo mandan seales de 0 y 1; como la prctica se pretende que cambie la
intensidad del LED y es necesario emular una seal analgica a partir de una seal 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 Cdigo 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 cdigo:

Inicialmente se indca un nombre de qu es lo que consiste el cdigo desarrollado a


travs del smbolo //, se puede colocar el ttulo de la prctica o del programa en s.
Tambin se puede utilizar como comentarios dentro del programa.
Se declaran las variables. En la prctica se declaran de tipo constante, una variable
que no cambiara durante el desarrollo del programa, su comando es const. Adems,
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.
Tambin 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),
despus va subiendo poco a poco por porcentajes hasta llegar al valor mximo
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 travs del
comando pinMode, este a su vez necesita como argumento la variable y el tipo de
seal de la misma, es decir pinMode(LED,OUTPUT); en la que OUTPUT nos indica
que la seal saldr del pin 9 permitiendo encender el LED.
Luego de definir las variables, se procede a realizar la estructura del cdigo a travs
del comando voidloop (), de igual manera se abre corchete ({) y se cierra luego de

3
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 seal 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 seal 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 ms 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 seal 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 seal 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 cdigo
en la tarjeta Arduino para que pueda ser ejecutado.

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

En el siguiente cdigo se muestra como queda plasmado en el IDE de Arduino, los


procedimientos anteriormente sealados:

// Prctica encender un LED y cambiar su intensidad

const int LED=9;

int i;

void setup(){

pinMode(LED,OUTPUT);

void loop() {

4
for (i=1;i<255; i++){

analogWrite(LED,i);

delay(5);

for (i=255;i>0; i--){

analogWrite(LED,i); }

delay(5);

Algoritmo 1 Cdigo para encender y variar la intensidad de un LED utilizando


PWM.

3.5 Conclusiones:
Los comandos que se utilizan para realizar la prctica permiti emular una seal analgica
a partir de una digital. El rango de salida de una seal analgica 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 tensin de salida que se requiera, si quisiramos
conseguir 2,5v el valor a asignar sera 127. As que lo nico que se debe hacer es
transformar mediante una simple operacin matemtica la seal tomada para adaptarla a
la seal de salida PWM.