Anda di halaman 1dari 15

Interfaces y Perifricos, Gua 3 1

Facultad: Ingeniera
Escuela: Electrnica
Asignatura: Interfaces y Perifricos

Tema: Conexin de sensores y manejo de LED RGB con Arduino

Objetivos Especficos

1. Conectar a Arduino un sensor ultrasnico para medicin de distancias.


2. Programar Arduino para obtener el dato proporcionado por el sensor ultrasnico.
3. Conectar a Arduino un circuito integrado para sensado de temperatura.
4. Programar Arduino para obtener y operar el dato del sensor de temperatura.
5. Conectar las salidas PWM de Arduino a un LED RGB.
6. Programar Arduino para manejar intensidades individuales y en conjunto de los
colores del LED RGB.

Material y Equipo

No Cantidad Descripcin
1 1 Una computadora con sistema operativo Linux o Windows y
con el programa Arduino IDE instalados
2 1 Cable USB (tipo A hacia tipo B)
3 1 Tarjeta Arduino UNO R2 o R3
4 1 Sensor Ultrasnico HC-SR04
5 1 Circuito integrado LM35
6 1 Mdulo de LED RGB
7 1 Breadboard
8 1 Pinza
9 1 Cortadora
10 1 Cables UTP

Introduccin Terica

El sensor ultrasnico HC-SR04

Caractersticas:

El mdulo de alcance ultrasnico HC-SR04 provee una funcin de medida sin contacto de 2
a 400 cm, el rango de exactitud puede alcanzar a 3mm. Los mdulos incluyen transmisores
ultrasnicos, receptor y circuito de control. El principio bsico de funcionamiento es el
siguiente:
2 Interfaces y Perifricos, Gua 3

1. Usar una seal de disparo de al menos 10uS de nivel alto, (Pin Trig).
2. El mdulo automticamente enva ocho pulsos con frecuencia de 40KHz y detecta si
hay una seal de pulsos de retorno.
3. Si la seal retorna, en el pin Echo se genera un pulso, el tiempo que este pulso
permanece en nivel alto es proporcional al tiempo de envo y recepcin del tren de
pulsos de 40KHz.

El clculo es segn la siguiente frmula:

tH340
D= (m) (Ec. 1)
2

Donde:
D Es la distancia medida por el sensor.
tH Es el tiempo en alto del pulso resultante en la medicin.
340 es la velocidad media del sonido en m/s.

La forma de conexin puede observarse en la siguiente figura:

Vcc Trig Echo GND

Figura 1. Conexiones de Sensor HC-SR04

Parmetros Elctricos:
Voltaje de Trabajo 5V
Corriente de trabajo 15mA
Frecuencia de operacin 40Hz
Rango mximo 4m
Rango mnimo 2cm
ngulo de medida 15 grados
Seal de entrada de disparo Pulso TTL de 10uS
Seal de salida Echo Nivel TTL y el rango proporcional
Interfaces y Perifricos, Gua 3 3

Dimensiones 45*20*15mm
Tabla 1. Parmetros Elctricos
En la Figura 2 se presenta el diagrama de tiempo que describe el funcionamiento del sensor

Figura 2. Diagrama de tiempo HC-SR04

Circuito Integrado para medicin de temperatura LM35

Caractersticas:
1. Directamente calibrado en Celsius (grados centgrados).
2. Factor de escala lineal de +10mV/C.
3. 0.5C de exactitud asegurada (a 25C).
4. Comprobado para el rango completo de -55C a 150C.
5. Adecuado para aplicaciones remotas.
6. Bajo costo debido a su tcnica de fabricacin.
7. Opera desde 4V a 30V.
8. Corriente de consumo menor a 60A.
9. Baja disipacin de calor, 0.08C en aire quieto.
10. No linealidad slo de C tpica.
11. Baja impedancia de salida, 0.1 para 1mA de carga.

Los circuitos de la serie LM35 son dispositivos en circuito integrado de precisin para
medicin de temperatura con una salida de voltaje linealmente proporcional a la temperatura
en grados centgrados. El LM35 no requiere alguna calibracin externa o ajuste para
proporcionar exactitudes tpicas de C en la temperatura de una habitacin y C
sobre un rango completo desde -55C a 150C. La baja impedancia, salida lineal, y la
calibracin precisa inherente del LM35 hace que la interfaz para lectura o circuitera de
control, sea muy fcil. El dispositivo se usa con una sola fuente de alimentacin o con una
fuente bipolar. Debido a que el LM35 consume solamente 60A de la fuente, tiene una baja
disipacin de calor menor a 0.1C en aire quieto.
4 Interfaces y Perifricos, Gua 3

La forma de conexin hacia tpica de un LM35 se muestra en la figura 3.

Figura 3. Sensor de temperatura en grados centgrados bsico (2C a 150C)

Para lograr el rango completo se requiere de una fuente bipolar y la conexin presentada en
la figura 4 (Se requiere que la entrada analgica donde se conectar la salida pueda recibir
valores negativos, este no sera el caso de Arduino).

Figura 4. Sensor de temperatura en grados centgrados en rango completo.

La configuracin de pines del empaquetado se muestra en la siguiente Figura 5.

Figura 5. Pines y su funcin en empaquetado TO92.


Interfaces y Perifricos, Gua 3 5

Manejo de Perifricos Analgicos Mediante Arduino.

La plataforma Arduino, basada en microcontrolador AVR, hereda la capacidad intrnseca de


dicho microcontrolador para manejar perifricos analgicos mediante tcnicas de conversin
especficas. Dichas tcnicas consisten en la conversin analgica a digital (ADC) y
modulacin por ancho de pulso (PWM). Cada una permite interactuar con perifricos
analgicos que proveen informacin de entrada (ADC) o que aceptan informacin de salida
(PWM)

Conversin analgica a digital.


El microcontrolador cuenta con un ADC integrado en el mismo chip, que permite tomar
lecturas analgicas de voltaje de un dispositivo que genere tensiones entre 0 y 5V. La
configuracin de dicho mdulo es automtica, bastando solamente con invocar la funcin de
lectura de datos, la cual se detalla a continuacin:
analogRead(numero_pin): Realiza la lectura sobre el pin analgico que se le especifique
(Slo se permiten los pines A0 al A5). El valor que devuelve es un nmero entero
proporcional al voltaje de entrada, de tal forma que si se introducen 0V devuelve un valor de
0 y si se introducen 5V devuelve un valor de 1023, con todos los voltajes intermedios se
producen valores distribuidos linealmente a lo largo de este intervalo.
Ntese que no es necesario configurar previamente un pin analgico para poderlo usar con
esta funcin.

Advertencia: El rango vlido para los voltajes de entrada es solamente de 0 a 5V. Si


introduce voltajes negativos, o bien, voltajes positivos arriba de 5V, podr daar de manera
permanente el dispositivo.

Modulacin por ancho de pulso (PWM).

El Microcontrolador AVR cuenta tambin con dispositivos temporizadores que permiten


generar seales externas, las cuales emplean la modulacin por ancho de pulso para
manejar cargas que sean compatibles con este esquema. Vale aclarar que la tcnica en s,
es completamente diferente de la conversin digital a analgica (DAC), puesto que no se
generan tensiones analgicas constantes (por ejemplo entre 0 y 5V) en ningn momento,
sino que ms bien la carga es encendida y apagada rpidamente, produciendo un efecto
equivalente a proveer un nivel de potencia intermedio, que puede variar entre completamente
apagado y completamente encendido. Adems, de manera similar al ADC, los mdulos
temporizadores son inicializados de manera automtica, bastando con invocar la funcin que
se detalla a continuacin:

analogWrite(numero_pin, ciclo_de_trabajo): Genera una seal PWM sobre un pin digital


que tenga esa capacidad (denotado con ~). El rango vlido para el ciclo de trabajo va desde
0 (completamente apagado) hasta 255 (completamente encendido).

Ntese que no todas las cargas son compatibles con la modulacin PWM, por lo que se
recomienda que se informe antes de emplearla con algn dispositivo en particular. La tcnica
funciona bien con algunas cargas como LEDs y motores DC pequeos, mas no con cargas
como rels o motores DC sin escobillas (como los ventiladores para chass de computadora).
6 Interfaces y Perifricos, Gua 3

Procedimiento

Parte 1. Sensor ultrasnico HC-SR04

1. Conecte el sensor ultrasnico HC-SR04 como se presenta en la Figura 6.

Figura 6. Conexin del sensor HC-SR04 a Arduino.

2. Abra el Arduino IDE y digite el siguiente sketch para el manejo del sensor sin el uso de una
librera de arduino.

int disparo = 12; //pin para dar el disparo


int echo = 11; //pin para recibir el pulso que sirve para medir distancia
int centimetros; //Variable que guarda la distancia medida
int durPulso; //Variable que mide la duracin del pulso
void setup() {
// put your setup code here, to run once:
pinMode(disparo, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
medircm(); //Llamado a funcin externa al loop
if(durPulso==0){
Serial.println("fuera de rango");
}
else
{
Serial.print(centimetros);
Interfaces y Perifricos, Gua 3 7

Serial.println("cm");
}
delay(500);
}

void medircm() //Funcin externa al loop


{
digitalWrite(disparo,HIGH);//Escribe el pulso de 10uS en alto
delayMicroseconds(10);
digitalWrite(disparo,LOW);
durPulso=pulseIn(echo,HIGH,5800);//Mide la duracin del pulso en Echo
centimetros=durPulso/58; //Clculo de la distancia en cm.
}
Listado 1. Programa que realiza la secuencia de operacin del sensor HC-SR04.

3. Para el siguiente listado es necesario instalar la librera Newping la cual provee funciones
que pueden manejar hasta 8 sensores ultrasnicos conectados a Arduino. Esta puede ser
descargada de: https://bitbucket.org/teckel12/arduino-new-ping/downloads.

// ---------------------------------------------------------------------------
// Ejemplo de sketch con librera NewPing que hace un ping a dos veces por segundo.
// ---------------------------------------------------------------------------
#include <NewPing.h>
#define PIN_DISPARO 12 // Pin de Arduino conectado al pin Trig del sensor
#define PIN_ECO 11 // Pin de Arduino conectado al pin Echo del sensor
#define DISTANCIA_MAX 200 // Mxima distancia (en centmetros). La mxima distancia
del sensor es 400 cm.
// Configuraciones de pines en librera.
// Tambin se configura distancia mxima.
NewPing sonar(PIN_DISPARO, PIN_ECO, DISTANCIA_MAX);

void setup() {
Serial.begin(9600); // Se abre el monitor serial a 9600 bauds para ver los resultados.
}

void loop() {
delay(500); // Espera 500ms entre pings (2 veces por segundo).
// 29ms debera ser el ms corto delay entre pings.
unsigned int uS = sonar.ping();
//Enva ping, se obtiene el tiempo de ping en //microsegundos (uS).
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM);
// Se convierte el tiempo de ping a distancia (0 = fuera del rango de distancia)
Serial.println("cm");
}
Listado 2. Uso de la librera Newping 1.8 para la lectura de la distancia con HC-SR04.
8 Interfaces y Perifricos, Gua 3

Parte 2. Ejemplo de uso de LM35.

4. Conecte el LM35 a Arduino como se muestra en la siguiente figura:

Figura 7. Conexin LM35 a entrada analgica A1 de arduino.

5. Programe el Arduino con el siguiente sketch de ejemplo, compruebe los datos obtenidos
en el monitor serial.
Nota: Este programa hace uso de la referencia interna de 1.1 para la entrada analgica con
el objetivo de lograr mayor precisin en la medida.

float tempC;
int reading;
int tempPin = 0;

void setup()
{
analogReference(INTERNAL);
Serial.begin(9600);
}

void loop()
{
reading = analogRead(tempPin);
tempC = reading / 9.31;
Serial.println(tempC);
delay(1000);
}
Listado 3. Ejemplo de programa para el manejo de sensor de temperatura LM35.

6. Trate por algn medio de cambiar la temperatura circundante al sensor (sin tocar con
alguna superficie caliente para no daar el empaque) y compruebe que se generan cambios
en los datos mostrados en el monitor serial.
Interfaces y Perifricos, Gua 3 9

Parte 3. Conexin y uso de led RGB con salidas PWM.

6. Conecte el Arduino y el mdulo RGB como se muestra en la siguiente figura:

Figura 8. Conexin de mdulo led RGB a arduino

7. Escriba el siguiente sketch en Arduino IDE, descrguelo y describa qu es lo que hace:

int Rojo = 3;
int Verde = 5;
int Azul = 6;
int brillo = 0;
int i=0;
void setup() {
// put your setup code here, to run once:
pinMode(Rojo, OUTPUT); //Configurar pines como salida
pinMode(Verde, OUTPUT);
pinMode(Azul, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser nodo Comn
digitalWrite(Verde,HIGH);//Se apaga LED Verde
digitalWrite(Azul,HIGH); //Se apaga LED Azul
for(i=0;i<256;i=i+5) //Se hacen incrementos de 5
{
brillo=i; //El valor del brillo ser el contador i
analogWrite(Rojo,255-brillo); //Comienza del PWM desde el
10 Interfaces y Perifricos, Gua 3

delay(50); //Mximo al mnimo


} //Por ser nodo Comn
digitalWrite(Rojo,HIGH); //Se apaga el led Rojo
for(i=0;i<256;i=i+5) //Se hace la operacin similar al led Rojo
{
brillo=i;
analogWrite(Verde,255-brillo);
delay(50);
}
digitalWrite(Verde,HIGH); //Se apaga el led Verde
for(i=0;i<256;i=i+5) //Se hace la operacin similar al led Rojo
{
brillo=i;
analogWrite(Azul,255-brillo);
delay(50);
}
digitalWrite(Azul,HIGH); //Se apaga led Azul
delay(10);
}
Listado 4. Programa para manejo de led RGB

8. Descargue el siguiente programa y describa su funcionamiento.

int Rojo = 3;
int Verde = 5;
int Azul = 6;
int brilloR = 0;
int brilloG = 0;
int brilloB = 0;
int entero=0;
int ascii=0;
void setup() {
// put your setup code here, to run once:
pinMode(Rojo, OUTPUT); //Configurar pines como salida
pinMode(Verde, OUTPUT);
pinMode(Azul, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser nodo Comn
digitalWrite(Verde,HIGH);//Se apaga LED Verde
digitalWrite(Azul,HIGH); //Se apaga LED Azul

brilloR = random(255);
brilloG = random(255);
brilloB = random(255);
Interfaces y Perifricos, Gua 3 11

analogWrite(Rojo,255-brilloR);
analogWrite(Verde,255-brilloG);
analogWrite(Azul,255-brilloB);
delay(2000);
}
Listado 5. Programa para manejo LED RGB.

9. El siguiente sketch permitir al usuario poner los datos del brillo del led RGB por medio del
monitor serial, escrbalo en Arduino IDE y descrguelo.

//Programa para solicitar al usuario los niveles de brillo


//desde el monitor serial.
int Rojo = 3;
int Verde = 5;
int Azul = 6;
int brilloR = 0;
int brilloG = 0;
int brilloB = 0;
int entero=0;

void setup() {
// put your setup code here, to run once:
pinMode(Rojo, OUTPUT); //Configurar pines como salida
pinMode(Verde, OUTPUT); //Los pines deben ser PWM (~)
pinMode(Azul, OUTPUT);
Serial.begin(9600);
digitalWrite(Rojo,HIGH); //Se apaga LED Rojo por ser nodo Comn
digitalWrite(Verde,HIGH);//Se apaga LED Verde
digitalWrite(Azul,HIGH); //Se apaga LED Azul
}

void loop() {
// put your main code here, to run repeatedly:
rRGB(); //Llamada a funcin rRGB()
analogWrite(Rojo,255-brilloR); //Escribe nivel de brillo en LED
analogWrite(Verde,255-brilloG);
analogWrite(Azul,255-brilloB);
delay(250);
}

void rRGB(){
/*rRGB es una funcin para introducir los niveles de brillo
desde el monitor serial*/
Serial.println(""); //lnea en blanco
Serial.print("Escriba el nivel de rojo: ");//mensaje
while(Serial.available()==0){} //Pausa esperando dato brilloR
12 Interfaces y Perifricos, Gua 3

brilloR=Serial.parseInt(); //El dato ascii recibido se convierte


Serial.print(brilloR); //a entero

Serial.println("");
Serial.print("Escriba el nivel de verde: ");
while(Serial.available()==0){} //Pausa esperando dato brilloG
brilloG=Serial.parseInt();
Serial.print(brilloG);

Serial.println("");
Serial.print("Escriba el nivel de azul: ");
while(Serial.available()==0){} //Pausa esperando dato brilloB
brilloB=Serial.parseInt();
Serial.println(brilloB);
}
Listado 6. Programa para seleccin de niveles de color RGB.

10. Abra un navegador de internet y vaya a la direccin http://htmlcolorcodes.com/es/

11. Elija un color moviendo el punto con el mouse y desplazando el scroll de la derecha como
se muestra en la siguiente figura:

Figura 9. Seleccin de color y niveles de RGB.

12. Abra el monitor serial, deber estar solicitndole que introduzca el nivel de rojo: como se
muestra en la siguiente figura:
Interfaces y Perifricos, Gua 3 13

Figura 10. Funcionamiento de programa para manejo de RGB con PWM.

13. Introduzca el nmero que en el sitio web est marcado como R, luego d clic en enviar y
as vaya colocando los niveles que se presentan para el color deseado.
Nota: Para que funcione correctamente el programa se debe tener la configuracin Sin
ajuste de lnea y a 9600 baudios como se mostr en la Figura 10.

14. Haga uso de los ejemplos anteriores para resolver algunas situaciones presentadas en el
anlisis de resultados.

15. Desarme y haga entrega del equipo que se le proporcion en orden.

Anlisis de Resultados

Con el sensor HC-SR04 haga un programa que cuando la distancia a un objeto sea
mayor a 10 cm haga que un led RGB sea de color rojo, de lo contrario que sea verde.
Con el sensor LM35 haga un programa que determine si la temperatura es menor a 25
C un led RGB tenga un color verde, si se encuentra en el rango de 25 a 32 sea
anaranjado y si es mayor a 32C que sea rojo.

Investigacin Complementaria

Investigue acerca de sensores ultrasnicos que posean mayor alcance que el HC-
SR04
Investigue sobre sensores de temperatura y humedad relativa que puedan ser
conectados a Arduino.

Bibliografa

Referencia en lnea del lenguaje: http://arduino.cc/en/Reference/HomePage


14 Interfaces y Perifricos, Gua 3

Massimo Banzi, Getting started with Arduino O'Reilly Media / Make Publisher, Marzo
2009, ISBN: 978-0-596-15551-3
Hoja tcnica HC-SR04 http://elecfreaks.com/store/download/HC-SR04.pdf.
Hoja tcnica LM35 www.ti.com/lit/ds/symlink/lm35.pdf
http://bot-boss.com/tutorial-arduino-medir-distancia-sensor-ultrasonico-hc-sr04/
Librera Newping https://bitbucket.org/teckel12/arduino-new-ping/downloads
Arduino Playground http://playground.arduino.cc/Main/LM35HigherResolution.
Interfaces y Perifricos, Gua 3 15

Hoja de cotejo: 3

Gua 3: Conexin de sensores y manejo de LED RGB con Arduino

Alumno: Maquina No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENTO 25% Conocimiento Conocimiento y Conocimiento


deficiente de los explicacin completo y
fundamentos incompleta de los explicacin clara
tericos fundamentos de los
tericos fundamentos
tericos

APLICACIN DEL 70% No Termin Termin Termin


CONOCIMIENTO completamente el completamente el completamente el
programa y programa pero los programa con sus
coment mal el comentarios no comentarios
cdigo (30%) estaban del todo correctos
correctos
No realiz el El circuito
circuito El circuito funcion
correctamente funcion
(40%)

ACTITUD 2.5 Es un observador Participa Participa


% pasivo. ocasionalmente o propositiva e
lo hace integralmente en
constantemente toda la prctica.
pero sin
coordinarse con su
compaero.

2.5 Es ordenado; pero Hace un uso Hace un manejo


% no hace un uso adecuado de los responsable y
adecuado de los recursos, respeta adecuado de los
recursos las pautas de recursos conforme
seguridad; pero es a pautas de
desordenado. seguridad e
higiene.

TOTAL 100
%