Guia-3 Arduino Univ Don Bosco
Guia-3 Arduino Univ Don Bosco
Guia-3 Arduino Univ Don Bosco
Facultad: Ingeniera
Escuela: Electrnica
Asignatura: Interfaces y Perifricos
Objetivos Especficos
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
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.
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.
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
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
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).
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
2. Abra el Arduino IDE y digite el siguiente sketch para el manejo del sensor sin el uso de una
librera de arduino.
Serial.println("cm");
}
delay(500);
}
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
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
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
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.
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
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.
11. Elija un color moviendo el punto con el mouse y desplazando el scroll de la derecha como
se muestra en la siguiente figura:
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
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.
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
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
EVALUACION
TOTAL 100
%