Vous êtes sur la page 1sur 25

GUIN

DE PRCTICAS
Arduino San Valero
Qu es Arduino?


Arduino es una plataforma electrnica de prototipos de cdigo
abierto (open-source) basada en hardware y software flexible y
fcil de usar. Est pensado para artistas, diseadores, como
hobby o para cualquier interesado en crear objetos o entornos
interactivos.
Arduino nos permite sentir el entorno mediante la recepcin de
datos desde una variedad de sensores y puede interactuar con su
alrededor mediante el control de luces, motores o casi cualquier
cosa que imaginemos.
ARDUINO frente a otros microcontroladores:

Barato.
Multiplataforma (Windows, Mac y Linux).
Entorno de programacin simple y claro.
Software libre y ampliable por cualquiera.
Hardware libre.

Descripcin bsica de la placa ARDUINO UNO:

Prctica #001 Controlando una salida digital



Parte 1: Que vamos a hacer?

Este proyecto bsico consiste en aprender a activar una salida


digital de nuestra placa Arduino a la que conectaremos mediante
una resistencia, un diodo LED que parpadear en intervalos de un
segundo.
Esto tan sencillo a priori, nos ser de gran utilidad pues con un
LED podremos monitorizar todo tipo de acciones en nuestro Arduino
Material necesario:

1
1
1
1

x
x
x
x

placa Arduino.
resistencia de 470. (Amarillo, morado, marrn)
diodo LED.
protoboard.

Parte 2: Diseando el Hardware


Antes de nada, veamos una breve descripcin de los componentes
elegidos y como utilizarlos, si queris indagar ms sobre estos,
o ver ms ejemplos, podis hacerlo a travs de Arduino Academy!!:
La protoboard:
Una protoboard o breadboard, es una placa perforada con
conexiones internas en la que podemos pinchar nuestros
componentes para realizar nuestros prototipos sin tener que
realizar un solo punto de soldadura tantas veces como queramos.

Las resistencias
Un resistor o resistencia, es un componente electrnico utilizado
para aadir una resistencia elctrica entre dos puntos de un
circuito de manera que nos permite distribuir adecuadamente
tensiones y corrientes a lo largo del mismo. La unidad de medida
de una resistencia es el Ohmio ().
Para identificar los valores de las resistencias (fijas) en
aquellas que por su tamao no es posible serigrafiarlo en su
encapsulado por su pequeo tamao, debemos interpretar una serie
de lneas de colores dispuestas a lo largo de la resistencia,
para esto disponemos de la siguiente tabla de colores:

Para empezar a leer el cdigo, debemos colocar a la derecha la


banda de tolerancia, normalmente dorada o plateada y empezar a
leer de izquierda a derecha, la primera y segunda franja la
tomaremos solamente como un nmero y la tercera franja como su
multiplicador, es decir, si tenemos marrn rojo amarillo
tendremos una resistencia de 1 2 x 10000 = 120000 o 120K.

El Diodo LED

Un LED (Light Emitting Diode)


bsicamente es
un diodo semiconductor que
emite luz.
Cuando un LED se encuentra en
polarizacin directa, los
electrones pueden recombinarse
con los huecos en el
dispositivo, liberando energa
en forma de fotones. Este
efecto es
llamado electroluminiscencia y
el color de la luz
(correspondiente a la energa
del fotn) se determina a
partir de la banda de energa
del semiconductor.

Ahora pensemos que tiene que hacer nuestro circuito!!


Debemos lograr, mediante el programa de nuestro Arduino, que se
encienda y apague un LED conectado a una salida digital, a travs
de una resistencia que nos regular la intensidad que debe llegar
al diodo, as que pongmonos a calcular!
Tenemos que, como la tensin de salida digital de la placa de
Arduino es de 5v, la tensin de nuestro LED rojo es de 1,8v y la
corriente que debe pasar es de 15 mA nos quedar la siguiente
frmula gracias a la ley de Ohm (R = V/I):

Por lo que la resistencia ideal sera de 220, la ms cercana a


ese valor existente en el mercado, en nuestro caso, adaptndonos
a los diodos y resistencias del StarterKit usaremos una de 470 .
Ahora solo nos queda calcular la potencia de dicha resistencia,
recordando que P=VxI tenemos que
P = (5-1,8) x 0,015 =

0,048w

Es decir como mnimo debe ser de 48mW por lo que nos vale la ms
estndar de las resistencias, la de 1/4 de vatio.

Veamos el esquema elctrico:

Y una posible distribucin en la protoboard:

3 Parte: Programando
Primero observemos la estructura bsica de un Sketch (Programa)
para Arduino y diferenciemos sus dos partes bsicas:
void setup() {
Aqu vendrn las configuraciones de nuestro pines
como entradas o salidas entre otras.
Como veis debe estar todo incluido entre llaves y
solo
se ejecutar una vez.
}
void loop() {
Aqu pondremos las instrucciones que ejecutar
nuestro programa nuestro programa una y otra vez.
}


Abrir
el
archivo
Proyecto_001.ino
proporcionado
en
la
documentacin del curso en vuestro ordenador y observmoslo al
completo:
/*
www.arduinoacademy.com
Proyecto 001
Blink
Enciende y apaga un Led en intervalos
de un segundo repetidamente.
Este cdigo de ejemplo es de uso pblico.
*/
//Configuracin de nuestra salida.
void setup()
{
pinMode(12, OUTPUT); // Pin 12 como Salida.
}
//Ahora le decimos que hacer con esa salida.
void loop()
{
digitalWrite(12, HIGH); // Pone la salida 12 a ON
delay(1000);
// Espera un segundo
digitalWrite(12, LOW); // Pone la salida 12 a OFF
delay(1000);
// Espera un segundo
}

Prctica #002 El coche fantstico




Parte 1: Que vamos a hacer?

Ahora que ya sabemos que es un diodo LED y una resistencia,


colocando unos pocos ms, vamos a intentar simular el famoso
efecto de luces del coche fantstico Ahora que ya sabemos que
es un diodo LED y una resistencia, colocando unos pocos ms,
vamos a intentar simular el famoso efecto de luces del coche
fantstico
Material necesario:

1
6
6
1

x
x
x
x

placa Arduino.
resistencia de 470.
diodo LED.
protoboard.

Parte 2: Diseando el Hardware

En este proyecto, simplemente hemos de aplicar los clculos del


anterior para cada uno de los Led, utilizando como salidas
digitales de la 7 a la 12, de manera que nos va a quedar un
esquema de la siguiente manera:

Posible esquema de montaje en la protoboard:

3 Parte: Programando
Aqu es donde va a residir la complejidad de nuestro proyecto, lo
que tenemos que hacer es, mediante programacin, que se enciendan
los LED secuencialmente y al llegar a cada extremo, vuelva hacia
el otro lado y as sucesivamente, emulando el efecto de KIT,
adems veremos nuevas instrucciones como for que nos va a
permitir ahorrar muchas lneas de cdigo, as como el uso de
variables en nuestros Sketch.
Para ello, hemos hecho tres versiones
las instrucciones bsicas, observando
programa al tener que declarar una y
salida, la segunda con el ciclo for
un pequeo efecto de estela aadido.

de programa, la primera con


la longitud que alcanza el
otra vez el estado de cada
incluido y una tercera con

Abrir el segundo proyecto, primera versin de la documentacin


del curso llamado Proyecto_002_1.ino
Una vez analizado el primer ejemplo, abrir Proyecto_002_2.ino
para observar los cambios en las lneas de programa.
Para finalizar abrir Proyecto_002_3.ino
conseguido el efecto estela en los LED.

para

ver

como

hemos

Prctica #003 Entrada analgica y salida PWM


En este tercer proyecto vamos a aprender utilizar las entradas
analgicas de nuestro pequeo Arduino Uno para utilizarla en dos
ejemplos, primero variaremos la frecuencia de parpadeo de un
diodo LED con un potencimetro conectado a una entrada analgica
y luego utilizaremos el mismo circuito para realizar una
modulacin del ancho de pulso en una salida digital (PWM).

Material necesario para este proyecto:
1
1
1
1
1
1

x
x
x
x
x
x

Arduino Uno
Diodo Led
Resistencia 470
Potencimetro 1K
Protoboard
Juego de cables

Parte 2: Diseando el Hardware


En este proyecto vamos a realizar dos ejemplos con un mismo
circuito, la diferencia entre ellos la observaremos es el
apartado de programacin, en cuanto a hardware tenemos la novedad
de este proyecto en el uso de un potencimetro combinado con una
entrada analgica, as que primero aclararemos unos conceptos.
Qu es un potencimetro?
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.
En este proyecto, vamos a utilizar el potencimetro como un
divisor de tensin, primero veamos como se conecta para que esto
sea posible.

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.
Entradas analgicas
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, as que las salidas sern la 3, 5, 6, 9, 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.
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:

Con todo esto, veamos los circuitos resultantes:

Y la posible distribucin en protoboard:

Parte 3: Programando
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, para
ello abrir el proyecto Proyecto_003_1.ino de la documentacin del
curso.
Como novedad veremos la instruccin analogRead(entrada a leer)
Sin variar el circuito, vamos a introducir un nuevo cdigo para
realizar
un
ejemplo
diferente,
abrir
el
archivo
Proyecto_003_2.ino, 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 PWW.
En este cdigo veremos el uso de la instruccin analagogWrite
(salida PWM, valor).

Prctica #004 Entradas digitales - Conectando un pulsador


Parte 1: Que vamos a hacer?
Con el mismo circuito que hemos montado en el proyecto 2, vamos a
aadirle un pulsador con su resistencia de pulldown para accionar
una secuencia determinada en los diodo LED.
Material necesario:

1
6
6
1
1
1

x
x
x
x
x
x

placa Arduino.
resistencia de 470.
diodo LED.
Pulsador.
Resistencia 10K (marrn, negro, naranja)
protoboard.

Parte 2: Diseando el Hardware


En este proyecto, deberemos interpretar en nuestro programa la
lectura de una entrada digital, y en base a su lectura,
activaremos, o no, una secuencia de LED, un ejemplo sencillo,
pero que nos permite aclarar un concepto muy importe sobre las
entradas digitales, las resistencias de Pull-Up o Pull-Down en
los pulsadores para evitar errores de lectura..
Qu son las resistencias de Pull-Up o Pull-Down?
En nuestro Arduino, las entradas digitales se interpretan de la
siguiente manera:
1 (lgico) = Hight = +5v
0 (lgico) = Low = 0v
Esto qu quiere decir? Que si tenemos una tensin de +5v
aplicada a una entrada, este nos la interpretara como un 1 (high)
sin lugar a dudas, pero no es as al contrario, si nosotros
dejamos de aplicar esa tensin a la entrada digital, es posible
que recibamos algo de ruido del circuito y que Arduino no nos lo
interprete como un 0 (low) por lo que colocamos una resistencia
entre la entrada y masa (GND) que derive estos ruidos
asegurndonos una seal limpia y sin posibles errores, a la
resistencia que se conecta a masa se le llama PULL-DOWN.

De igual manera, si tuviramos la necesidad de mantener un 1


lgico en una entrada mientras el circuito est en reposo, se le
puede aplicar una resistencia entre la entrada y +5v para
asegurarnos que le llega suficiente tensin como para que sea
interpretada correctamente por nuestro Arduino, a esta ltima se
le denomina PULL-UP.
Aqu podis ver como se conectara la resistencia en un circuito
bsico de 0 o 1 en la entrada 8 de Arduino.

Esquema elctrico:

Distribucin en protoboard:

3 Parte: Programando
En este programa vamos a descubrir como leer una entrada digital,
adems de la instruccin condicional if con la que hacer
comparaciones, en nuestro caso, comprobaremos si la entrada
digital est activada, y si lo est (condicin) ejecutar las
instrucciones de su interior.
Para ello abrir el archivo Proyecto_004.ino

Prctica #005 Sensor LDR



Parte 1: Que vamos a hacer?
En este proyecto, vamos a utilizar un LDR (Light Dependent
Resistor o resistencia dependiente de la luz) para simular una
hipottica compensacin lumnica de 5 niveles, es decir, a travs
de una resistencia que varia su valor dependiendo de la luz
recibida, aprovecharemos dicha variacin para hacer un programa
que nos encienda o apague una serie de LED dependiendo de si hay
ms luz o menos luz, esto podramos extrapolarlo a un sistema de
regulacin de luz de un jardn con cinco lneas de luz que se
vayan
encendiendo
segn
va
cayendo
la
noche
compensando
progresivamente la deficiencia de luz.
Adems le hemos implementado un potencimetro para ajustar el
nivel crtico mnimo de luz que queremos soportar, a partir del
cual se activar nuestro circuito y empezar a aumentar la luz
del lugar progresivamente.
Material necesario para este proyecto:
1
1
1
1
5
5
1
1

x
x
x
x
x
x
x
x

Arduino Uno
Protoboard
LDR
Potencimetro 1k
Diodos LED
Resistencias 470
Resistencia 1K
Juego de Cables

Parte 2: Diseando el hardware


En este proyecto lo que queremos conseguir es que, a partir de
una resistencia que vara su valor hmico en funcin de que haya
ms o menos luz, controlar 5 salidas de nuestro Arduino, a las
que podramos conectar lneas de iluminacin para un jardn por
ejemplo, de manera que segn va anocheciendo, nuestra iluminacin
artificial va aumentando.
Adems, vamos a colocar un potencimetro para regular el umbral
de luz mnima, a partir del cual, comenzar a funcionar nuestro
circuito de luz artificial para que sea adaptable a cualquier
entorno.

Para el diseo de este circuito, dividmoslo en tres partes:


Salidas para los LED
Para las salidas, ya hemos aprendido como conectar unos diodos
LED y como calcular su resistencia ptima.
Conexin LDR a una entrada analgica
Aqu tenemos un componente nuevo, el LDR funciona como una
resistencia variable de manera que, cuanta ms cantidad de luz
reciba, menor ser su resistencia, para que quede claro, si en un
potencimetro varibamos la resistencia deslizando un patn por
la pista de material resistivo, aqu lo har la cantidad de luz
que reciba la foto-resistencia.
Qu podemos deducir con esto?
Que si aadimos una resistencia ms, podemos utilizar el LDR para
hacer el ya conocido divisor de tensin de donde sacaremos la
variacin de seal para conectar a nuestra entrada analgica de
Arduino.
Podemos conectarlo de dos maneras diferentes:

Si utilizamos el LDR como resistencia inferior del divisor de


tensin, nos dar la tensin mxima cuando tengamos el LDR en
plena oscuridad, ya que estar oponiendo el mximo de su
resistencia al paso de la corriente derivndose esta por Vout al
completo, si lo utilizamos como resistencia superior, el
resultado ser el inverso, tendremos la tensin mxima cuando
est completamente iluminado, ya que se comportar prcticamente
como un cortocircuito, con una resistencia de 50 o 100.

En este caso lo hemos utilizado como resistencia superior, de


manera que cuanta ms luz haya, ms tensin tendremos a la
entrada de nuestra entrada analgica pudiendo ajustar as, de una
manera muy intuitiva, la tensin de referencia que ahora
explicar.
El regulador de luz mnima
Como tercera parte del circuito, hemos colocado un potencimetro
configurado como divisor de tensin para hacer las funciones de
regulacin del rango de iluminacin a partir del cual se activar
nuestro circuito de iluminacin.
Como hemos conseguido esto?
Primero hay que pensar un par de cosas, nuestra foto-resistencia
configurada como divisor resistivo, nos va a dar 0v cuando este
COMPLETAMENTE a oscuras, y +5v cuando est COMPLETAMENTE
iluminada, situaciones que pueden ser difciles de conseguir
dependiendo del entorno en el que trabajemos, y por otra parte,
ese rango de 0v a 5v habr que dividirlo en 1024 pasos que va a
leer nuestro Arduino, pero quizs solo vayamos a trabajar en 500
o 600 pasos, desperdiciando mucha resolucin.
Para solucionar esto, adems de evitar cambiar el programa de
Arduino cada vez que lo cambiemos de entorno, usamos una funcin
que nos proporciona Arduino muy internaste, el pin Aref
Qu es el pin AREF?
Cuando Arduino toma una seal analgica y la convierte a digital
en 1024 cachitos, lo hace por defecto pensando que la seal que
va a recibir puede variar entre 0v y 5v lo que nos da
aproximadamente un valor por cada 4,88 mV, pero nosotros podemos
decirle que no, que realmente va a trabajar entre 0v y 3v,
obteniendo as 1024 cachitos distribuidos entre 0v y 3v, lo que
nos da un valor por cada 2,9 mV, es decir una resolucin mucho
mayor.

Debemos tener en cuenta que este pin lleva internamente una


resistencia de 32K para evitar daar el chip, de manera que si
vamos a conectar el pin mediante una resistencia fija, se va a
producir un nuevo divisor de tensin, con lo que habr que
calcular la resistencia adecuada para la tensin exacta que
queremos introducir mediante una sencilla frmula:

Donde:
Vin = Tensin que introducimos a Vref
Rinterna = Resistencia interna de Arduino de 32K
Rexterna = Resistencia mediante la cual alimentamos Vref
Vrefencia = La tensin sobre que tomar referencia nuestro
programa.
De manera que si por ejemplo, estamos introduciendo una tensin
de +3v a travs de una resistencia de 5K, la tensin real de
referencia en nuestro Arduino ser de:
(32000/(32000+5000)) x 3 = 2,59v
Porqu evita cambiar el programa continuamente?
Por que variando la seal de referencia, le estamos diciendo que
nos tome 1024 valores entre 0v una determinada tensin mxima, y
el reparto de esos valores ya los hemos fijado equitativamente en
nuestro programa para que haga una activacin progresiva de las
lneas de iluminacin, por tanto, aunque tengamos un rango muy
bajo de iluminacin con el que jugar, de 1v por ejemplo, nos va a
distribuir siempre proporcionalmente la activacin de las
salidas.
Esa tensin de referencia, ser el punto de iluminacin a partir
del cual, si decrece la luz ambiente, empezar a decrecer los
valores obtenidos en la seal analgica de entrada.
Si ponemos esa referencia muy baja, empezar a funcionar los led
con menos luz ambiente que si ponemos una seal muy alta,
recordemos:
Ms luz = Menos Resistencia = Mayor Vout
Menos luz = Mayor resistencia = Menor Vout

Veamos el circuito final

Y una posible distribucin en protoboard:

3 Parte: Programando
Abrir el proyecto Proyecto_005.ino de la documentacin y observar
el programa para empezar a entenderlo, es algo ms largo que los
anteriores, pero en realidad la nica instruccin nueva es
analogReference(EXTERNAL);
En cuanto a la sucesin de comparaciones os dejo este diagrama de
flujo que os har ms sencilla su comprensin:

Prctica #006 LDR y Servomotor



Parte 1: Que vamos a hacer.

En esta prctica vamos a tomar la configuracin del LDR y del


potencimetro para transportar esa toma de datos a un movimiento
fsico en un servomotor de una manera muy sencilla.
Para ello usaremos los siguientes materiales:

1 x Arduino Uno
1 x Protoboard
1 x LDR
1 x Potencimetro 1k
1 x Resistencia 1K
1 x ServoMotor
1 x Juego de Cables

Parte 2: Diseando el hardware
La nica novedad de este circuito reside en la conexin de un
servomotor a nuestro Arduino, de manera que vemoslo a fondo:
Que es un servomotor?

Un servomotor, es un motor con un eje de rendimiento controlado,


es decir, que podemos posicionarlo a nuestro antojo, siempre
dentro de su rango de actuacin. Por lo general los servomotores
suelen tener un rango de 180 aunque existen de 210 e incluso de
rotacin continua.
Como funcionan los servomotores?
Bien, los servomotores son en realidad motores de corriente
continua con una serie de engranajes que transforman su
velocidad, en torque (fuerza) y un sistema de control que utiliza
un potencimetro para saber constantemente la ubicacin del eje,
este sistema de control, adems, responder a una seal que
nosotros le enviemos para establecer la posicin del eje

La seal que introducimos al servo, es una seal parecida, que no


igual, a la del tipo PWM que ya conocemos, digo esto ya que la
funcin PWM de Arduino, recordemos que la utilizbamos para
simular una seal analgica con la funcin analogWrite(), de
manera que dependiendo del ancho de los pulsos digitales emitidos
con una frecuencia de 416Hz, nos emulaba una seal analgica,
pero para los servos no queremos eso, vamos a emitir pulsos con
una frecuencia mucho menor, 50Hz, y sern meramente digitales,
sin intencin de querer ser nada analgico y dependiendo del
ancho del pulso que le enviemos (he ah el parecido), nuestro
servo se situar en una posicin o en otra, los pulsos deben
llevar una frecuencia de 20ms (los 50Hz) entre ellos para que el
servomotor
los
interprete
correctamente,
aunque
podran
funcionarnos igualmente en un intervalo entre 10ms y 30ms, con
esto queremos decir que el servomotor va a leer cada 20ms su
entrada de seal, y dependiendo de lo que dure el 1 lgico (ancho
del pulso de +5v) calcular el grado del eje en el que se debe
situar.

Aqu un pequeo esquema de conexin de los principales servos:

De manera que nos quedaran un esquema de la siguiente manera:

Y la siguiente conexin en protoboard:

3 Parte: Programando
Abrir
el
archivo
Proyecto_006.ino
proporcionada y observar el programa.

de

la

documentacin

Descubrimos como aadir la librera que nos permite trabajar con


servomotores adems de la instruccin:
map(valor, fromLow, fromHigh, toLow, toHigh)

Vous aimerez peut-être aussi