Sei sulla pagina 1di 13

29/1/2015

Tresdeland - Tu mundo 3D

LOGIN / REGISTRO

ARTCULOS

LISTA DE DESEOS COMPARA

0 00

CARRITO
VACO

BSQUEDA DE PRODUCTOS
LOVE IS SHARING

ORIG INA LIT IES P RODU CT OS

SOPORTE TCNICO
info@tr3sdland.com
T IENDA S A CT U A LIDA D

DESCUBRE NUESTRAS TIENDAS!!


FORO T CNICO T U T ORIA LES

P EDIDOS

CONT A CT O

Inicio | Open Source | Arduino | Tutorial Arduino # 0003 Entrada Analgica y Salida PWM

SUSCRBETE

Tutorial Arduino #
0003 Entrada
Analgica y Salida
PWM

Si quieres estar
informado de todas
nuestras ltimas noticias
y novedades, suscrbete a
nuestro News Letter!!

Autor: Pablo

EMAIL

Fecha: 19
noviembre, 2011

INTRODUCE TU E-MAIL
Compartir en

SUSCRIBIR

# 0003 Entrada Analgica y Salida PWM


Bienvenidos a un nuevo tutorial bsico sobre Arduino.

PRODUCTOS
DESTACADOS

Nivel: Bsico
Coste: < 25
Tiempo: 15

Parte 1: Qu vamos a hacer?


utilizar las entradas analgicas de nuestro

SENSE
IMPRESORA
ESCNER
3D

pequeo Arduino Uno para utilizarla en dos ejemplos, primero variaremos la frecuencia de

HOME &3D
KIDS UP!

parpadeo de un diodo LED con un potencimetro conectado a una entrada analgica y luego

434.90
MINI

utilizaremos el mismo circuito para realizar una modulacin del ancho de un pulso en una

799.00

En este nuevo proyecto vamos a aprender

salida digital (PWM).


En el siguiente video podemos ver el resultado final de los dos ejemplos

POST POPULARES
NOV EXPO 3D MADRID, EL

27

ENCUENTRO DE
IMPRESIN 3D DE LA
CAPITAL
publicado por Jose Manuel

JUL

Sanchez

09

VUELVE EL EVENTO DE
IMPRESIN 3D A
ZARAGOZA

publicado por Pablo

DIC

09

CONECTAR ANDROID CON


ARDUINO POR
BLUETOOTH CAPITULO 1

publicado por Pablo

Productos Mejor
http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

1/13

29/1/2015

Tresdeland - Tu mundo 3D

Valorados

FILAMENTO ABS 3MM GRIS

19.90

FILAMENTO ABS 3MM PLATA

19.90

Material necesario para este proyecto:


1 x Arduino Uno

FILAMENTO ABS 3MM ROJO

19.90

1 x Diodo Led
1 x Resistencia 470
1 x Potencimetro 1K

ltimos Tweets
Ya tenemos abierta

1 x Protoboard

la tienda on-line!!
Pronto iremos

1 x Juego de cables

actualizando ms
productos y
nuevos

Parte 2: Diseando el Hardware

contenidos! :)

En este proyecto Ar duino vamos a realizar dos ejemplos con un mismo circuito, la diferencia

#3dprinting

entre ellos la observaremos es el apartado de programacin, en cuanto a hardware tenemos

16/12/2014

la novedad de este proyecto en el uso de un potencimetro combinado con una entrada

http://t.co/u5fRuGktx7

15:34:35

analgica, as que primero aclararemos unos conceptos.


Qu es un p otencim etr o?

RT @JalMakerFaire:
La inspiracin
existe pero tiene
que encontrarte
trabajando.....
Picasso
05/12/2014
20:47:17

RT @tumaku_: Hoy
me he encontrado
a Pablo "arduteka"
en #Expo3DMad y
me ha dicho que

Un potencimetro es una resistencia de tipo variable con tres patillas, entre las dos de sus
extremos tendremos siempre una resistencia fija dada por del valor mximo de nuestro
potencimetro, pero entre cualquiera de esos extremos y la patilla central obtendremos la
variacin de resistencia, tenis disponible un tutorial sobre este componente AQUI.
En este proyecto, vamos a utilizar el potencimetro como un divisor de tensin, primero

estn a punto de
abrir tienda
@Tr3sdland en el
centro
04/12/2014
21:08:29

veamos como se conecta para que esto sea posible.


Sguenos en Twitter

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

2/13

29/1/2015

Tresdeland - Tu mundo 3D

Como podemos ver, debemos colocar uno de los extremos a masa, otro a +Vcc y nuestra
patilla central ser nuestra tensin de salida regulable, esta salida ser la que conectemos a
Arduino y que variar de 0v a 5v dependiendo de la posicin de nuestro potencimetro.
Podemos ver la variacin de tensin en el siguiente video:

Si estamos utilizando un Arduino Uno, las entradas analgicas vienen identificadas desde A0
hasta A5 como podemos ver en la siguiente imagen:

En cuanto a la salida, colocaremos la ya conocida configuracin de LED ms resistencia, pero


deberemos tener algo en cuenta, para el primer ejemplo nos dara igual la salida digital a
elegir, pero para el segundo es necesario que seleccionemos una salida con PWM, si tenis un
Arduino Uno, las salidas sern la 3, 5, 6, 9, 10 y 11 como se puede ver en la siguiente imagen:

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

3/13

29/1/2015

Tresdeland - Tu mundo 3D

Per o.. Qu es el PW M?
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.
Las siglas PWM vienen de Pulse Width Modultation, o Modulacin de Ancho de Pulso.
Lo 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 frecuencia constante
de aproximadamente 490Hz, 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
juntos estn esos pulsos de +5v, mayor ser la tensin promedio de nuestra salida, y cuanto
ms distantes sean estos, menor ser dicha tensin:

Veamos un video del PWM en accin, observar como se corresponde la intensidad lumnica del
LED con el ancho de pulso observado en el osciloscopio:

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

4/13

29/1/2015

Tresdeland - Tu mundo 3D

La manera de controlar el nivel de salida en nuestro Arduino, la podremos ver en la seccin de


programacin de este tutorial.
El montaje nos quedara as en nuestra protoboard:

Aqu podemos ver en detalle el esquema elctrico:

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

5/13

29/1/2015

Tresdeland - Tu mundo 3D

El circuito en si mismo es muy sencillo, pero en el apartado de programacin podremos ver la


versatilidad del mismo para diferentes aplicaciones, as que no esperemos ms
Par te 3 : Pr ogr am ando
El primer ejemplo que vamos a tratar es la adquisicin de datos en la entrada analgica A0
para variar la frecuencia de parpadeo de un diodo LED conectado a una salida digital
cualquiera, veamos el cdigo al completo:
/*
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 utilizada para variar la velocidad
de parpadeo de un diodo LED conectado a la salida digital 9.
Este proyecto es de dominio pblico.
*/
int pinSensor = A0;
int pinLed = 9;
int valorSensor = 0;

// Entrada para el potencimetro.


// Seleccionamos pin para el Led.
// variable para el valor del sensor.

void setup() {
// Declaramos el pin del Led como salida:
pinMode(pinLed, OUTPUT);
}
void loop() {
// Leemos el valor del sensor y lo almacenamos:
valorSensor = analogRead(pinSensor);
// encendemo el diodo LED:
digitalWrite(pinLed, HIGH);
// Detenemos el programa durante <valorSensor> milisegundos:
delay(valorSensor);
// Apagamos el diodo Led:
digitalWrite(pinLed, LOW);
// Detenemos el programa durante <valorSensor> milisegundos:
delay(valorSensor);
}
En este programa tenemos como novedad la siguiente instruccin:
analogRead(pinSensor)
Esta instruccin nos permite leer cualquier sensor que conectemos al pin analgico
establecido en pinSensor, por defecto, nuestra placa Arduino nos realizar una conversin
analgico-digital para toda seal (40mA mximo) de 0v a 5v con una resolucin de 10 bit, lo
que nos da 2 10 (1024) valores de referencia para nuestro programa, siendo 0 en 0v y 1023
en +5v, en posteriores ejemplos veremos como ese rango de tensin en el que se realizan las
mediciones se puede variar para que, por ejemplo, empiece a lanzarnos valores a partir de
2,2v.
http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

6/13

29/1/2015

Tresdeland - Tu mundo 3D

Con esto, y observando un poco el programa, podemor ver que el intervalo entre encendido y
apagado de nuestro diodo LED podr variar entre 0 y 1023 milisegundos, si quisiramos
aumentar ms el tiempo de los intervalos podramos aplicar alguna operacin matemtica al
valor de nuestro sensor, por ejemplo, si aadiramos la lnea de cdigo que se puede observar
debajo de la toma de datos del sensor obtendramos un incremento del tiempo cuatro veces
mayor:
// Leemos el valor del sensor y lo almacenamos:
valorSensor = analogRead(pinSensor);
valorSensor = valorSensor*4;
Sin variar el circuito, vamos a introducir un nuevo cdigo para realizar un ejemplo diferente, en
este proyecto, nuestro diodo LED variar su intensidad lumnica en funcin del valor que est
aportando el potencimetro a nuestra entrada analgica, esto es el llamado efecto fading
(desvanecimiento), puede observarse que se ha elegido la salida nmero 9, ya que esta s que
es compatible con la opcin PWM como se explica algo ms arriba.
Veamos el cdigo al completo:
/*
Tutorial Arduino # 0003 - Efecto Fading
En este tutorial, mostramos como se desvanece un LED
en funcin del valor recogido en un entrada analgica.
Este proyecto es de dominio pblico.
*/
int pinSensor = A0;
int pinLed = 9;
int valorSensor = 0;

// Entrada para el potencimetro.


// Seleccionamos pin para el Led.
// variable para el valor del sensor.

void setup() {
pinMode(pinLed, OUTPUT); // Establecemos el pin como salida.
}
void loop() {
// Leemos el valor del sensor y lo almacenamos:
valorSensor = analogRead(pinSensor);
// Establecemos el valor analgico para la salida PWM
analogWrite(pinLed, valorSensor / 4);
// Detenemos el programa durante 30 milisegundos:
delay(30);
}
Podemos observar una nueva instruccin:
analogWrite(pinLed, valorSensor / 4);
Esta ser la instruccin que nos permitir emular una seal analgica a partir de una digital en
nuestros circuitos, como explicaba algo ms arriba.
El rango de salida de esta instruccin varia de 0 a 255, siendo 0 = 0v y 255 = 5v, por lo que es
tan sencillo como introducir un valor determinado para la tensin de salida que nosotros
queramos conseguir, si quisiramos conseguir 2,5v el valor a asignar sera 127.
As que lo nico que debemos hacer es transformar mediante una simple operacin
matemtica la seal tomada en nuestro potencimetro para adaptarla a nuestra salida PWM.
Como hemos visto en el ejemplo anterior, los niveles de entrada son de 0 a 1023, y si los
niveles de salida, deben ser de 0 a 255 Os dejo a vosotros la deduccin, y la lnea de cdigo
por si no cais en cuenta.
analogWrite(pinLed, valorSensor / 4);
Esta es una manera algo tosca para realizar esta conversin, ms adelante veremos como hay
una instruccin que hace esto por nosotros.
Bueno, eso es todo por el momento!!
Si necesitis algn tipo de aclaracin no dudis en dejar un comentario!!
Hasta pronto!!!

COMENTARIOS

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

7/13

29/1/2015

Tresdeland - Tu mundo 3D

GATOLOCO65
mar, 26 - 2012

Gracias por tan buenos tutoriales, me han ayudado a


entender mejor y de una manera ordenada el
para responder funcionamiento y programacin de la placa Arduino.
Inicia sesin

GATOLOCO65

No comprenda, el delay(30); en el ejemplo Efecto


Fading, pues si no colocaba esa declaracin
Inicia sesin
aparentemente no ocurra nada; fui aumentando poco a
para responder poco el tiempo y pude ver como empezaba a cambiar el
comportamiento de lectura del sensor.
mar, 26 - 2012

MIGUEL

super bueno los tutoriales muchas gracias


muchos exitos

abr, 2 - 2012

Inicia sesin
para responder

LEANDRO

muy bueno el aporte gracias, tambienqueria saber si


oct, 23 - 2012
podes llegar a saber algo de conectar sensores
Inicia sesin
piezoelectricos a la placa arduino como para fabricar una
para responder bateria electronica y si tendrias algun esquema de
conexion muchisimas gracias y muy buenos aportes
saludos

PABLO

Hola!

MURILLO

chale un ojo a esto a ver si te sirve.

oct, 25 - 2012

Inicia sesin

http://www.arduino.cc/es/Tutorial/KnockSensor

para responder

Un saludo!!

LEANDRO

muchas gracias por la respuesta lo


voy a probar.
Inicia sesin
En lo que estoy trabado ahora es
para responder con el hit hat de la bateria
electronica si alguien tendria algun
esquema sencillo de como hacerlo
me ayudaria mucho en mi
proyecto saludos y muchas
gracias!!!!!
nov, 2 - 2012

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

8/13

29/1/2015

Tresdeland - Tu mundo 3D

NICKO
oct, 27 - 2012

Inicia sesin

muy bueno siempre los tutos. este en particular me abre


una puerta para un proyecto que quiero empezar. en
cuanto tenga algo lo comparto. muchas gracias

para responder

TXIBU

Gracias por los tutoriales, sn geniales para inciarse. Una


pregunta, al ser una resolucin de 10bits, 1024 posibles
Inicia sesin
valores, el rango no sera de 0 a 1023? Quiz se os haya
para responder colado un error en el artculo
nov, 1 - 2012

PABLO
MURILLO

Uf! Corregido! Muchas gracias por tu


apreciacin!!

nov, 2 - 2012

Inicia sesin
para responder

JUAN CARLOS
nov, 18 - 2012

Genial. Un tutorial fantstico. Muchas gracias.

Inicia sesin
para responder

PEDRO ALDO

Hola que tal excelente tutorial me abrio el panorama, pero


dic, 5 - 2012
tengo una duda y problema, estoy trabajando con un
Inicia sesin
cicuito de sensor infrarrojo y me arroja un valor maximo de
para responder 4V obviamente cuando coloco algo entre el led y el
fotodetector el voltaje disminuye y necesito que Arduino
me lea este voltaje para yo poder transferir a processing y
ya mostrarlo mas graficamente. Pero no logro comprender
como hacerlo, como logro que Arduino lea un valor de
voltaje y lo conserve tal cual para yo llamarlo desde
processing. Agradeceria tu respuesta. Saludos

PABLO
MURILLO
dic, 5 - 2012
http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

Hola, en este tutorial se hace exactamente eso,


no? Capturamos la variacin de tensin por
una entrada analgica, y la mandamos a una
9/13

29/1/2015

Tresdeland - Tu mundo 3D

variable, luego esa variable ya la puedes tratar


para responder como tu quieras.
Inicia sesin

CLAUDIA

Excelentes tutoriales! me han servido mucho para empezar


a interactuar con mi placa Arduino.
PINCHEIRA
Creo haber encontrado un typo en el artculo, cuando dices
dic, 12 - 2012
con una resolucin de 10 bit, lo que nos da 210 (1024)
Inicia sesin
para responder valores creo que debe decir 2^10 y no 210.
Muchas gracias por los aportes! Estn buensimos!

Umm.. a mi me sale bien! Pero gracias!

PABLO
MURILLO
dic, 16 - 2012

Inicia sesin
para responder

CARESTH

A m tambin me sale 210 (W7,


ene, 13 - 2013
Firefox), le d un par de vueltas y
Inicia sesin
luego tir para adelante y segu
para responder leyendo. Es lo que tiene ser un
poco patn, no entiendes pero
sigues, a ver si luego lo pillas XD

LUDWING

Gracias!!!!!!

feb, 13 - 2013

Inicia sesin
para responder

Hola Pablo, lo primero que quiero es dar la gracias por las


explicaciones sirven de mucha ayuda, yo soy un novato en
RANEA
esto y estoy empezando a realizar cosas con mi Mega
feb, 15 - 2013
2560. El ejemplo de atenuar la intensidad me ha gustado
Inicia sesin
una preguntilla por que se ponen los 30 milisegundos de
para responder
retraso para que sirve este parametro, un saludo y gracias
de antemano.
ANTONIO

Hola!
http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

10/13

29/1/2015

Tresdeland - Tu mundo 3D

PABLO
MURILLO
feb, 15 - 2013

Es simplemente para que la velocidad de cada


ciclo (loop) se reduzca un poco, puedes probar
a quitarlo y ver que pasa!

Inicia sesin

Un delay, no es ms que: Espera X


para responder milisegundos sin hacer nada.
Un saludo!!

LAURANADELRIO Buenos dias


feb, 17 - 2013

estoy intentando iniciarme en arduino,pero se ve que soy


muy torpe,,sigo los manuales pero esque hay muchas que
para responder
no entiendo como esto:
Inicia sesin

http://www.arduteka.com/wpcontent/uploads/2011/11/Proyecto-Arduino-0003Protoboard.jpg
veo la representacion,pero no entiendo como siguen los
cables,,aparecen por un lado,,desaparecen,aparecen por
otro lado,nose si son el mismo cable o esque hay que
pinchar otro,,please una ayuda a esta aprendiz!!

PABLO

Hola!

MURILLO

chale un vistazo al tutorial sobre la


protoboard!

feb, 18 - 2013

Inicia sesin

para responder http://www.arduteka.com/2011/11/tutorialarduino-mi-primera-protoboard/


Un saludo!

RONAL JR.

muy bueno el tutorial me sacaste de un apuro, oye amigo y


feb, 19 - 2013
cual es esa instruccion que mensionas para hacer la
Inicia sesin
conversion en lo que se refiere a la salida PWM, te lo
para responder agradeceria mucho..gracias!!!

PABLO

Hola!

MURILLO

Psate por el foro


http://www.arduteka.com/foro y all,

mar, 21 - 2013

Inicia sesin
para responder

entre todos, intentaremos solucionar tus


dudas!
Un saludo!

JOSE
feb, 21 - 2013

cual es la otra instrucion que mencionas al final del


articulo???

Inicia sesin
para responder

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

11/13

29/1/2015

Tresdeland - Tu mundo 3D

PABLO

Hola!

MURILLO

Psate por el foro


http://www.arduteka.com/foro y all,

mar, 21 - 2013

Inicia sesin
para responder

entre todos, intentaremos solucionar tus


dudas!
Un saludo!

LPEZ

Hola! Muy buenos tutoriales, as parece fcil y todo. Slo


feb, 22 - 2013
hay una cosa que no me queda clara: en este programa
Inicia sesin
inicializas el pinLed pinMode(pinLed, OUTPUT); pero no
para responder el pinSensor. En qu casos declaras un pin como
input/output en la funcin setup y en cules no?

PABLO

Hola!

MURILLO

Psate por el foro


http://www.arduteka.com/foro y all,

mar, 21 - 2013

Inicia sesin
para responder

entre todos, intentaremos solucionar tus


dudas!
Un saludo!

SANTI
feb, 24 - 2013

Excelente. Muy claro para los que estamos empezando con


esto. Gracias

Inicia sesin
para responder

TRACKBACK O PINGBACK

1. Comparativa - El diodo LED Arduteka


[...] lugar, viene bien recordar la estructura interna de un diodo LED, para ello,
podis recordar ESTE TUTORIAL donde explicamos

2. Tutorial Arduino #0006 - El Chupitometro


[...] Salida PWM [...]

3. Comparativa - Pulsadores para proyectos Arduteka


[...] esas seales para interpretar qu pulsador est accionado en cada momento.
Tambin os dejo un link a este tutorial

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

12/13

29/1/2015

Tresdeland - Tu mundo 3D

4. Comparative: Push Buttons, Arcade Buttons and Keypads


[...] of how to filter a signal to interpret which button is activated in each
moment. We also share a

5. Arduteka Arduteka, tu espacio web donde aprender a realizar proyectos Arduino


desde cero, tutoriales, noticias, componentes y mucho ms!
[...] # El diodo LED [...]

6. El Servomotor | ARDUINO ACADEMY


[...] seal que introducimos al servo, es una seal parecida, que no igual, a la del
tipo PWM que ya conocemos,

DEJA UNA RESPUESTA


Por favor, logueate para comentar.

HOME // SOPORTE // TERMINOS Y CONDICIONES //


Copyright 2014 - TR3SDLAND

http://www.tr3sdland.com/2011/11/tutorial-arduino-0003-entrada-analogica-y-salida-pwm/

13/13

Potrebbero piacerti anche