Logo Studenta

Laboratorio 13-ELECTRONICA DIGITAL-2020-I

¡Estudia con miles de materiales!

Vista previa del material en texto

Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
1 
 
 
 
 
 
 
 
 
UNIVERSIDAD 
 
 NACIONAL DE LA 
 
 AMAZONIA PERUANA 
 
 
 
 
FACULTAD DE INGENIERIA 
 
DE SISTEMAS E INFORMATICA 
 
LABORATORIO DE ELECTRONICA DIGITAL 
 
 
GUIA - INFORME Nº 13 
CURSO : ELECTRONICA DIGITAL 
 TEMA : Sensores Básicos de Luz y Temperatura 
 PROFESOR : 
 GRUPO : 
 ALUMNO : 
 CODIGO : 
 
 NOTA: 
 
 FECHA EXPE.: SEMEST. ACADÉ. 2020 - I 
 
 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
2 
 
 
 
13avo LABORATORIO 
Tema: Sensores Básicos de Luz y Temperatura 
 
Objetivo: Hacer que el alumno adquiera practica en el manejo de las entradas analógicas con 
diferentes tipos de sensores como los de luz y temperatura con cuenta el Arduino. 
 
Material y Equipo: 
 Diodos LED 
 Resistencias 
 Un Protoboard 
 Cablecitos de Conexión 
 Una Tarjeta Arduino Uno 
 Cable USB 
EXPERIENCIA No 1: Variando el Parpadeo de un LED con una LDR 
Una LDR (Light Dependent Resistor) es una resistencia que varía su valor en función de la luz 
recibida, cuanta más luz recibe, menor es su resistencia. Una LDR está fabricada con un 
semiconductor de alta resistencia como puede ser el sulfuro de cadmio. Si la luz que incide en el 
dispositivo es de alta frecuencia, los fotones son absorbidos por la elasticidad del semiconductor 
dando a los electrones la suficiente energía para saltar la banda de conducción 
 
 
 
 
 
 
 
 
 
 Figura 1.- LDR 
El electrón libre que resulta (y su hueco asociado) conduce electricidad, de tal modo que disminuye 
la resistencia. Las células de sulfuro del cadmio se basan en la capacidad del cadmio de variar su 
resistencia según la cantidad de luz que incide en la célula. Cuanta más luz incide, más baja es la 
 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
3 
 
 
resistencia. Las células son también capaces de reaccionar a una amplia gama de frecuencias, 
incluyendo infrarrojo (IR), luz visible y ultravioleta. 
El rango de resistencia que nos puede dar un LDR desde la total oscuridad hasta la plena luz, nos 
va a variar de un modelo a otro, pero en general oscila entre unos 50 Ώ a 1000 Ώ cuando están 
completamente iluminadas y entre 50 KΏ y varios MΏ cuando está completamente a oscuras. 
Desarrollaremos el circuito mostrado en la Figura 2, veremos como el sensor hará variar el 
parpadeo de un LED conectado al pin 7 del Arduino. Según haya más o menos luz sobre ella, el 
LED parpadeara con más o menos frecuencia. La LDR la conectamos a la entrada analógica A0. 
Al tener la LDR en la parte superior del divisor de tensión, tendremos la tensión máxima cuando 
esté completamente iluminada, ya que se comportará prácticamente como una resistencia de 50 Ώ 
o 100 Ώ. Si está a oscuras, no dejara pasar corriente, comportándose como un circuito abierto. 
El valor de la resistencia que acompaña a la LDR no es crítico. Cualquier valor de 1 K a 10 K se 
puede utilizar. El nivel de luz en la LDR (LDR GL5528) cambiará el nivel de tensión en el pin 
análogo A0. La función analogRead() proporciona un valor que oscila entre 500 (cuando el LDR 
está en la oscuridad ) y 350 (cuando hay mucha luz), lo cual determina la duración de encendido 
y apagado del LED, por lo que la frecuencia de parpadeo aumenta con la intensidad de la luz. 
Si desea visualizar el valor de la variable de parpadeo en la pc, puede utilizar el monitor serie del 
IDE. 
En cuanto al hardware que se necesita es: 
Un diodo LED 
UNA Resistencia DE 10 KΩ 
Una LDR GL5528 (Resistencia con luz ~ 1 KΏ) (Resistencia con Oscuridad ~ 10 KΏ) 
Un Protoboard. 
Cablecitos de conexión 
Un Arduino 
Un cable USB 
Programa: Variando el Parpadeo de un LED con una LDR 
const int maxDuracion = 1000; 
void setup() 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
4 
 
 
 // put your setup code here, to run once: 
{ 
 pinMode (ledPin, OUTPUT); 
 Serial.begin (9600); 
} 
void loop() 
 // put your main code here, to run repeatedly: 
{ 
 int rango = analogRead(SensorPin); 
 rango = map(rango,500,950,minDuracion, maxDuracion); 
 Serial.println (rango); 
 digitalWrite (ledPin, HIGH); 
 delay (rango); 
 digitalWrite (ledPin, LOW); 
 delay (rango); 
} 
 
 
 
 
 
 
 
 
 
 Figura 2.- Diagrama del Circuito con el Sensor de Luz 
 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
5 
 
 
En este sketch nos aparece una función nueva que utilizaremos a menudo con las entradas 
analógicas del Arduino. Se trata de la función de ajuste de escala denominada map(). 
TIP 1: 
• Map(valor, desde_bajo, desde_alto, hasta_bajo, hasta_alto).”Re-mapea” un numero 
desde un rango hacia otro. Esto significa que un valor con respecto al rango desde_bajo-
desde_alto, será mapeado al rango hasta_bajo-hasta_alto. 
• valor: el numero(valor) a mapear. 
• desde_bajo: el límite inferior del rango actual del valor. 
• desde_alto: el límite superior del rango actual del valor. 
• hasta_bajo: el límite inferior del rango deseado 
• hasta_alto: el límite superior del rango deseado. 
• En nuestro caso, cuando llegue un valor de 500 se le escalará el valor a minDuracion y 
cuando tengamos 950 lo “remapearemos” a maxDuracion. Todos los valores intermedios 
se ajustarán por interpolación. Básicamente, lo que estamos haciendo es igualar escalas de 
rango de valores. De ahí que establezcamos una duración mínima y una máxima para el 
retardo implicado en el parpadeo del LED. 
TRABAJO ENCARGADO: 
Diseñe un circuito que avise mediante un zumbador cuando la luz que incide sobre una LDR caiga 
por debajo de un valor determinado. Por ejemplo, cuando se haga la oscuridad. 
 
 
 
 
 
 
 
 
 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
6 
 
 
 
EXPERIENCIA 2: FUNCIONAMIENTO DEL SENSOR DE TEMPERATURA 
Realizaremos mediciones de temperatura con el Arduino y el sensor LM35. Dicho sensor es un 
sensor analógico de Texas Instruments. Nos permite realizar medidas de temperatura de una forma 
bastante precisa a través de las entradas analógicas del Arduino (pines A0-A5) sin necesidad de 
emplear ninguna librería específica para su programación. 
 
 
 
 
 
 
 Figura 3.- Sensor de Temperatura LM35 
Como se puede ver en las figuras 6.3, 6.4 y 6.5, es un sensor que presenta únicamente 3 pines 
(VCC, GND y Data). Por ello su conexión es muy sencilla. Este sensor tiene una salida analógica 
proporcional a la temperatura que registra (pin del centro). Para conectarlo al Arduino, el pin +Vs 
debe conectarse al pin 5V de la placa. El pin VOUT, a cualquier pin de entradas analógicas y el 
pin GND, al conector GND de nuestro Arduino. Además, presenta las siguientes características 
eléctricas: 
 Esta calibrado en grados Celsius 
 Rango de medición de -55 °C a 150 °C 
 La tensión de salida es proporcional a la temperatura (1 °C = 10 mV) 
 Presenta una precisión de 0.5 °C 
 Rango de Alimentación entre 4 y 30 V 
 Presenta baja impedancia de salida 
 Presenta baja corriente de alimentación 
Este circuito en particular funcionara únicamente con temperaturas por encima de 0°C, por lo que 
sirve para proyectos en un interior (o en exterior de zonas cálidas). Si quieres medir temperaturas 
 
 
Universidad Nacional de la Facultadde Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
7 
 
 
por debajo de 0°C hay que variar el circuito tal y como se muestra en la hoja de características del 
LM35 proporcionado por el fabricante. 
La práctica que vamos a realizar consiste en medir la temperatura ambiente constantemente e ir 
mostrándola en el monitor serie del IDE de nuestro ordenador. 
En la figura 4 observamos el montaje em Proteus. 
En cuanto al Hardware que necesitamos: 
Un LM35 o TMP36 
Un Protoboard 
Cablecitos de Conexión 
Un Arduino y un Cable USB. 
Hoy en día el sensor de temperatura TMP36 es muy popular, sustituye perfectamente al clásico 
LM35 y es totalmente compatible con él para la mayoría de las aplicaciones. 
 
 
 
 
 
 
 
 
 
 Figura 4.- Sensor de Temperatura 
Programa: Midiendo Temperatura con el Sensor LM35 
/* Experiencia 2: Midiendo Temperaturas */ 
/*Medidas de temperatura con el LM35 y visualización en el 
monitor serie */ 
float temperatura; 
 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
8 
 
 
int tempPin = 0; /*Definimos la temperatura como una variable de tipo float*/ 
void setup() 
 // put your setup code here, to run once: 
{ 
 Serial.begin(9600); 
} 
void loop() 
 // put your main code here, to run repeatedly: 
{ 
 temperatura = analogRead (tempPin); 
 temperatura = temperatura*0.48828125; 
 Serial.print("TEMPERATURA = "); 
 Serial.print(temperatura); 
 Serial.print("*C"); 
 Serial.println(); 
 delay (3000); 
} 
Como se observará en el Terminal Virtual del Proteus mostrará los valores de temperaturas 
constantemente. Más adelante veremos la forma de visualizar estos datos en un LCD para 
independizar el Arduino del PC, y también para no pasar frío y poder verlos a distancia desde 
dentro de casa utilizando una comunicación de datos inalámbrica muy sencilla. 
Pero vamos al grano y expliquemos el código del sketch anterior. Viene con cosas nuevas que 
merecen nuestra atención ya que van a ser habituales en los programas que utilicen algún tipo de 
sensor de tipo analógico. 
Para leer las temperaturas tenemos una orden muy simple: analogRead(tempPin). Nos devolverá 
un valor digital entre O y 1024 directamente proporcional a la tensión recibida. Mirando la hoja 
de datos del sensor, vemos que por cada °C, la tensión en el pin Vout aumenta 10 mV, por lo que 
para dar los 5 V máximos (que corresponderían a una lectura de 1024) necesitaríamos 500 °C. 
Universidad Nacional de la Facultad de Ingeniería de 
 Amazonia Peruana Sistemas e Informática 
9 
 
 
Esta temperatura no la vamos a alcanzar nunca (el sensor se fundiría antes). Por tanto, mediante 
una regla de 3, calculamos la operación de conversión desde el valor que leemos en el pin hasta la 
temperatura real: 
 temperatura = lectura * 500/1024. 
 temperatura = lectura * 0.48828125. 
Pero ahora nos sale un número con decimales (flotante) como resultado de la primera división; 
por tanto, no podemos utilizar un tipo de variable entero (int) para la temperatura. Es necesario 
usar otro tipo de variable denominado float. 
TIP 2: 
• float (nombre variable). Este tipo variable se usa para los números en coma flotante 
(número decimal). Estos números son usados habitualmente para aproximar valores 
analógicos debido a que ofrecen una mayor resolución que los enteros. Las variables tipo 
float tienen el valor máximo 3.4028235E+38 y como mínimo pueden alcanzar el -
3.4028235E+38. Ocupan 4 bytes (32 bits). Tienen una precisión de 6 o 7 dígitos decimales. 
Esto abarca el número total de dígitos, no el número a la derecha de la coma decimal. En 
nuestro programa hemos definido la variable temperatura como de tipo ftoot, 
• Si quisiéramos conseguir mayor precisión podríamos utilizar voltajes de referencia, lo que 
nos ayudaría a tener un rango de temperatura menor ganando en calidad o resolución de 
lectura. Por ejemplo, podríamos usar la salida de 3.3 V del Arduino para alimentar el 
LM35. En este caso la parte de código implicada sería: 
 temperatura = lectura * 330/1024. 
 temperatura= lectura * 0.322265625. 
• Pero para una aplicación usual no es necesario tanto. Con el método utilizado tenemos una 
precisión aproximada de 0.5 °C. Por último, enviamos o «imprimimos» en el monitor serie 
tanto las temperaturas medidas, como el texto formateado para darle un poco de alegría a 
nuestro código. 
TRABAJO ENCARGADO: 
Diseña un circuito que produzca una señal de alarma sonora que se active cuando la temperatura 
ambiente suba por encima de 35 °C. Utiliza un LM35 (TMP36), un pequeño zumbador o altavoz 
y un mechero para, con cuidado, acercar al sensor y simular una subida de temperatura. 
 
	LABORATORIO DE ELECTRONICA DIGITAL

Continuar navegando