El documento explica qué es la modulación de ancho de pulso (PWM) y cómo se puede usar una señal PWM para variar la intensidad de un LED o la velocidad de un motor conectado a una salida digital de Arduino. También presenta dos ejemplos prácticos de cómo usar una entrada analógica de Arduino y PWM para variar la frecuencia de parpadeo de un LED y lograr un efecto de atenuación.
0 calificaciones0% encontró este documento útil (0 votos)
63 vistas11 páginas
El documento explica qué es la modulación de ancho de pulso (PWM) y cómo se puede usar una señal PWM para variar la intensidad de un LED o la velocidad de un motor conectado a una salida digital de Arduino. También presenta dos ejemplos prácticos de cómo usar una entrada analógica de Arduino y PWM para variar la frecuencia de parpadeo de un LED y lograr un efecto de atenuación.
El documento explica qué es la modulación de ancho de pulso (PWM) y cómo se puede usar una señal PWM para variar la intensidad de un LED o la velocidad de un motor conectado a una salida digital de Arduino. También presenta dos ejemplos prácticos de cómo usar una entrada analógica de Arduino y PWM para variar la frecuencia de parpadeo de un LED y lograr un efecto de atenuación.
El documento explica qué es la modulación de ancho de pulso (PWM) y cómo se puede usar una señal PWM para variar la intensidad de un LED o la velocidad de un motor conectado a una salida digital de Arduino. También presenta dos ejemplos prácticos de cómo usar una entrada analógica de Arduino y PWM para variar la frecuencia de parpadeo de un LED y lograr un efecto de atenuación.
Descargue como DOC, PDF, TXT o lea en línea desde Scribd
Descargar como doc, pdf o txt
Está en la página 1de 11
Pero.. Qu es el PWM?
A menudo necesitaremos algo ms que una seal de 0 o 1 en nuestros
proyectos, para variar la velocidad de giro de un motor, para variar la intensidad con la que luce un diodo, para transmitir los grados de giro de un servo, etc.. Para todo esto, y mucho ms, nos servir el PWM, que emula una seal analgica a partir de una seal digital. as siglas PWM vienen de Pulse Width Modultation, o Modulacin de Ancho de Pulso. o que hace este tipo de seal es emitir, en lugar de una seal continua en nuestra salida, emite una serie de pulsos que podremos variar su duracin pero con una !recuencia constante de apro"imadamente #$0%&, de manera que la tensin promedio resultante, es directamente proporcional a la duracin de estos dentro del rango de nuestro periodo, es decir, cuanto ms 'untos est(n esos pulsos de )*v, mayor ser la tensin promedio de nuestra salida, y cuanto ms distantes sean estos, menor ser dicha tensin+ , 000- . /ntrada Analgica y 0alida PWM 1ienvenidos a un nuevo tutorial 2sico so2re Arduino con el que podremos e"primir al m"imo nuestro 03A43/4.563 o A1.5637. 8ivel+ 1sico 9oste+ : ;* < 3iempo+ 1*= Parte 1+ >?u( vamos a hacer@ /n este nuevo proyecto vamos a aprender utili&ar las entradas analgicas de nuestro pequeo Arduino Ano para utili&arla en dos e'emplos, primero variaremos la !recuencia de parpadeo de un diodo /B con un potencimetro conectado a una entrada analgica y luego utili&aremos el mismo circuito para reali&ar una modulacin del ancho de un pulso en una salida digital CPWMD. /n el siguiente video podemos ver el resultado Enal de los dos e'emplosF Material necesario para este proyecto+ 1 " Arduino Ano 1 " Biodo ed 1 " 4esistencia #G0 H 1 " Potencimetro 15H 1 " Proto2oard 1 " Iuego de ca2les
Parte ;+ Biseando el %ardJareF /n este proyecto Arduino vamos a reali&ar dos e'emplos con un mismo circuito, la di!erencia entre ellos la o2servaremos es el apartado de programacin, en cuanto a hardJare tenemos la novedad de este proyecto en el uso de un potencimetro com2inado con una entrada analgica, asK que primero aclararemos unos conceptos. Qu es un potencimetro? An potencimetro es una resistencia de tipo varia2le con tres patillas, entre las dos de sus e"tremos tendremos siempre una resistencia E'a dada por del valor m"imo de nuestro potencimetro, pero entre cualquiera de esos e"tremos y la patilla central o2tendremos la variacin de resistencia, ten(is disponi2le un tutorial so2re este componente A?A6. /n este proyecto, vamos a utili&ar el potencimetro como un divisor de tensin, primero veamos como se conecta para que esto sea posi2le. 9omo podemos ver, de2emos colocar uno de los e"tremos a masa, otro a )Lcc y nuestra patilla central ser nuestra tensin de salida regula2le, esta salida ser la que conectemos a Arduino y que variar de 0v a *v dependiendo de la posicin de nuestro potencimetro. Podemos ver la variacin de tensin en el siguiente video+ 0i estamos utili&ando un Arduino Ano, las entradas analgicas vienen identiEcadas desde A0 hasta A* como podemos ver en la siguiente imagen+ /n cuanto a la salida, colocaremos la ya conocida conEguracin de /B ms resistencia, pero de2eremos tener algo en cuenta, para el primer e'emplo nos darKa igual la salida digital a elegir, pero para el segundo es necesario que seleccionemos una salida con PWM, si ten(is un Arduino Ano, las salidas sern la -, *, M, $, 10 y 11 como se puede ver en la siguiente imagen+ Pero.. Qu es el PWM? A menudo necesitaremos algo ms que una seal de 0 o 1 en nuestros proyectos, para variar la velocidad de giro de un motor, para variar la intensidad con la que luce un diodo, para transmitir los grados de giro de un servo, etc.. Para todo esto, y mucho ms, nos servir el PWM, que emula una seal analgica a partir de una seal digital. as siglas PWM vienen de Pulse Width Modultation, o Modulacin de Ancho de Pulso. o que hace este tipo de seal es emitir, en lugar de una seal continua en nuestra salida, emite una serie de pulsos que podremos variar su duracin pero con una !recuencia constante de apro"imadamente #$0%&, de manera que la tensin promedio resultante, es directamente proporcional a la duracin de estos dentro del rango de nuestro periodo, es decir, cuanto ms 'untos est(n esos pulsos de )*v, mayor ser la tensin promedio de nuestra salida, y cuanto ms distantes sean estos, menor ser dicha tensin+ Leamos un video del PWM en accin, o2servar como se corresponde la intensidad lumKnica del /B con el ancho de pulso o2servado en el osciloscopio+ a manera de controlar el nivel de salida en nuestro Arduino, la podremos ver en la seccin de programacin de este tutorial. /l monta'e nos quedarKa asK en nuestra proto2oard+ AquK podemos ver en detalle el esquema el(ctrico+ /l circuito en si mismo es muy sencillo, pero en el apartado de programacin podremos ver la versatilidad del mismo para di!erentes aplicaciones, asK que no esperemos msF Parte 3: Programando /l primer e'emplo que vamos a tratar es la adquisicin de datos en la entrada analgica A0 para variar la !recuencia de parpadeo de un diodo /B conectado a una salida digital cualquiera, veamos el cdigo al completo+ @ 1 2 3 4 5 6 7 8 9 10 11 12 /* Tutorial # 0003 Arduino Academy - Entrada analgica
Funcionamiento de las entradas analgicas configurando el pin analgico A0 para tomar datos de una seal. Esta toma de datos es utiliada para !ariar la !elocidad de parpadeo de un diodo "E# conectado a la salida digital $.
Este proyecto es de dominio p%&lico. */
int pin'ensor ( A0) // Entrada para el potencimetro. int pin"ed ( $) // 'eleccionamos pin para el "ed. int !alor'ensor ( 0) // !aria&le para el !alor del sensor. 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
!oid setup*+ , // #eclaramos el pin del "ed como salida- pin.ode*pin"ed/ 01T21T+) 3
!oid loop*+ , // "eemos el !alor del sensor y lo almacenamos- !alor'ensor ( analog4ead*pin'ensor+) // encendemo el diodo "E#- digital5rite*pin"ed/ 6786+) // #etenemos el programa durante 9!alor'ensor: milisegundos- delay*!alor'ensor+) // Apagamos el diodo "ed- digital5rite*pin"ed/ "05+) // #etenemos el programa durante 9!alor'ensor: milisegundos- delay*!alor'ensor+) 3 /n este programa tenemos como novedad la siguiente instruccin+ @ 1 analog4ead*pin'ensor+ /sta instruccin nos permite leer cualquier sensor que conectemos al pin analgico esta2lecido en Npin0ensorO, por de!ecto, nuestra placa Arduino nos reali&ar una conversin analgico.digital para toda seal C#0mA m"imoD de 0v a *v con una resolucin de 10 2it, lo que nos da ; 10 C10;#D valores de re!erencia para nuestro programa, siendo 0 en 0v y 10;- en )*v, en posteriores e'emplos veremos como ese rango de tensin en el que se reali&an las mediciones se puede variar para que, por e'emplo, empiece a lan&arnos valores a partir de ;,;v. 9on esto, y o2servando un poco el programa, podemor ver que el intervalo entre encendido y apagado de nuestro diodo /B podr variar entre 0 y 10;- milisegundos, si quisi(ramos aumentar ms el tiempo de los intervalos podrKamos aplicar alguna operacin matemtica al valor de nuestro sensor, por e'emplo, si aadi(ramos la lKnea de cdigo que se puede o2servar de2a'o de la toma de datos del sensor o2tendrKamos un incremento del tiempo cuatro veces mayor+ @ 1 2 3 // "eemos el !alor del sensor y lo almacenamos- !alor'ensor ( analog4ead*pin'ensor+) !alor'ensor ( !alor'ensor*;) 0in variar el circuito, vamos a introducir un nuevo cdigo para reali&ar un e'emplo di!erente, en este proyecto, nuestro diodo /B variar su intensidad lumKnica en !uncin del valor que est( aportando el potencimetro a nuestra entrada analgica, esto es el llamado e!ecto !ading CdesvanecimientoD, puede o2servarse que se ha elegido la salida nPmero $, ya que esta sK que es compati2le con la opcin PWM como se e"plica algo ms arri2a. Leamos el cdigo al completo+ @ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /* Tutorial Arduino # 0003 - Efecto Fading
En este tutorial/ mostramos como se des!anece un "E# en funcin del !alor recogido en un entrada analgica.
Este proyecto es de dominio p%&lico. */
int pin'ensor ( A0) // Entrada para el potencimetro. int pin"ed ( $) // 'eleccionamos pin para el "ed. int !alor'ensor ( 0) // !aria&le para el !alor del sensor.
!oid setup*+ , pin.ode*pin"ed/ 01T21T+) // Esta&lecemos el pin como salida. 3
!oid loop*+ , // "eemos el !alor del sensor y lo almacenamos- !alor'ensor ( analog4ead*pin'ensor+) // Esta&lecemos el !alor analgico para la salida 25. analog5rite*pin"ed/ !alor'ensor / ;+) // #etenemos el programa durante 30 milisegundos- delay*30+) 3 Podemos o2servar una nueva instruccin+ @ 1 analog5rite*pin"ed/ !alor'ensor / ;+) /sta ser la instruccin que nos permitir emular una seal analgica a partir de una digital en nuestros circuitos, como e"plica2a algo ms arri2a. /l rango de salida de esta instruccin varia de 0 a ;**, siendo 0 Q 0v y ;** Q *v, por lo que es tan sencillo como introducir un valor determinado para la tensin de salida que nosotros queramos conseguir, si quisi(ramos conseguir ;,*v el valor a asignar serKa 1;G. AsK que lo Pnico que de2emos hacer es trans!ormar mediante una simple operacin matemtica la seal tomada en nuestro potencimetro para adaptarla a nuestra salida PWM. 9omo hemos visto en el e'emplo anterior, los niveles de entrada son de 0 a 10;-, y si los niveles de salida, de2en ser de 0 a ;**F Rs de'o a vosotros la deduccin, y la lKnea de cdigo por si no ca(is en cuenta. @ 1 analog5rite*pin"ed/ !alor'ensor / ;+) /sta es una manera algo tosca para reali&ar esta conversin, ms adelante veremos como hay una instruccin que hace esto por nosotros. 1ueno, eso es todo por el momento77 0i necesitis algPn tipo de aclaracin no dud(is en de'ar un comentario77 %asta pronto777