Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorio 6 Micro
Laboratorio 6 Micro
MICROCONTROLADORES Y MICROPROCESADORES
GRUPO : 01
COMUNICACIÓN SERIAL
2020
1. OBJETIVO
Aprender a manejar las entradas y salidas analógicas (módulo ADC).
Conectar sensores analógicos a la placa Arduino.
Reconocer y manejar correctamente las salidas PWM.
Emplear comunicación serial para mostrar los valores (monitor serial).
2. MATERIAL Y EQUIPO
Computador.
Placa Arduino (Uno, Leonardo, Mega, Nano, etc).
Pantalla LCD.
Buzzer.
Multímetro.
Componentes varios.
Software Proteus.
3. MARCO TEORICO
3.1. SENSOR LM35
El LM35 es un sensor de temperatura con una precisión calibrada de 1 ºC.
Su rango de medición abarca desde -55 °C hasta 150 °C. La salida es lineal
y tiene una variación de 10mV por cada grado Celsius. Sus características
más relevantes son:
Está calibrado directamente en grados Celsius.
La tensión de salida es proporcional a la temperatura.
Tiene una precisión garantizada de 0.5 °C a 25 °C.
Baja impedancia de salida.
Baja corriente de alimentación (60 μA).
Bajo coste.
5. LIBRERÍA LCD
La librería para el manejo del LCD es la librería LiquidCrystal.H que viene en el
IDE de Arduino, la que contiene las siguientes funciones principales.
LiquidCrystal(Rs, En, D4, D5, D6, D7)
Función que permite crear una variable de la clase LiquidCrystal, con los
pines indicados.
Begin(Cols, Rows)
Inicializa el LCD, se debe especificar número de columnas (cols) y filas
(rows) del LCD.
Clear()
Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda
(posición (0,0)).
SetCursor(Col, Row)
Posiciona el cursor del LCD en la posición indicada por col y row (x,y); es
decir, establecer la ubicación en la que se mostrará posteriormente texto
escrito para la pantalla LCD.
Write()
Escribir un carácter en la pantalla LCD, en la ubicación actual del cursor.
Print()
Escribe un texto o mensaje en el LCD, su uso es similar a un Serial.print
ScrollDisplayLeft()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia
la izquierda.
ScrollDisplayRight()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la
derecha.
CreateChar (Num, Datos)
Crea un carácter personalizado para su uso en la pantalla LCD. Se admiten
hasta ocho caracteres de 5×8 pixeles (numeradas del 0 al 7).
Dónde: núm. es el número de carácter y datos es una matriz que contienen
los píxeles del carácter. Se verá un ejemplo de esto más adelante.
6. PROCEDIMIENTO
6.1. Midiendo La Temperatura.
0.8
0.6
0.4
0.2
0
40 60 80 100 120 140 160 180 200 220 240
analogico vs celsius
120
100
80
60
40
20
0
40 60 80 100 120 140 160 180 200 220 240
voltaje vs celsius
120
100
80
60
40
20
0
0 0.2 0.4 0.6 0.8 1 1.2
void loop() {
delay(2000);
temperatura=analogRead(A0);//LECTURA DE DATOS
voltaje=temperatura*(5/1024.0);//convercion a voltios
celsius=voltaje/0.01;//convercion a celsius
kelvin=celsius+273.15;//convercion a kelvin
fahrenheit=(celsius*9/5);//convercion a Fahrenheit
Serial.print(celsius);
Serial.print(" °C ");
Serial.print(kelvin);
Serial.print(" K ");
Serial.print(fahrenheit);
Serial.println(" °F ");
void loop() {
delay(2000);
temperatura=analogRead(A0);//LECTURA DE DATOS
voltaje=temperatura*(5/1024.0);//convercion a voltios
celsius=voltaje/0.01;//convercion a celsius
kelvin=celsius+273.15;//convercion a kelvin
fahrenheit=(celsius*9/5);//convercion a fahrenheit
lcd.setCursor(2,0);
lcd.print("TEMPERATURA ");//texto a mostrar en la primera
fila
lcd.setCursor(1,1);
lcd.print(" ");//texto a mostrar en la segunda fila
lcd.print(celsius); //se muestra la temperatura en grados celsius
Serial.print(celsius);
Serial.print(" °C ");
Serial.print(kelvin);
Serial.print(" K ");
Serial.print(fahrenheit);
Serial.println(" °F ");
}
3. Grafique la relación entre el valor entregado por el sensor y el
valor mostrado en el monitor serial.
analogico vs voltaje
1.2
0.8
0.6
0.4
0.2
0
40 60 80 100 120 140 160 180 200 220 240
analogico vs celsius
120
100
80
60
40
20
0
40 60 80 100 120 140 160 180 200 220 240
voltaje vs celsius
120
100
80
60
40
20
0
0 0.2 0.4 0.6 0.8 1 1.2
4. Vuelva a dibujar el circuito de modo que se mida la temperatura
y dependiendo de un interruptor, se muestre la temperatura en el
LCD en grados Celsius o en Kelvin.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int temperatura;
float voltaje;
float celsius;
float kelvin;
float fahrenheit;
int pulsador=8;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
Serial.println("analogico voltaje celsius");
pinMode(pulsador, INPUT);//EL PULSADOR SERA UNA
ENTRADA
}
void loop() {
delay(2000);
temperatura=analogRead(A0);//LECTURA DE DATOS
voltaje=temperatura*(5/1024.0);//convercion a voltios
celsius=voltaje/0.01;//convercion a celsius
kelvin=celsius+273.15;//convercion a kelvin
fahrenheit=(celsius*9/5)+32;//convercion a fahrenheit
if (digitalRead(pulsador)==LOW)
{
lcd.setCursor(2,0);
lcd.print("TEMPERATURA ");//texto a mostrar en la primera
fila
lcd.setCursor(1,1);
lcd.print(" ");//texto a mostrar en la segunda fila
lcd.print(celsius); //se muestra la temperatura en grados celsius
lcd.print(" C "); //respuesta de la temperatura
}
else
{
lcd.setCursor(2,0);
lcd.print("TEMPERATURA ");//texto a mostrar en la primera
fila
lcd.setCursor(1,1);
lcd.print(" ");//texto a mostrar en la segunda fila
lcd.print(kelvin); //se muestra la temperatura en grados celsius
lcd.print(" K "); //respuesta de la temperatura
}
Serial.print(celsius);
Serial.print(" °C ");
Serial.print(kelvin);
Serial.print(" K ");
Serial.print(fahrenheit);
Serial.println(" °F ");
5. Modifique el programa para que en pantalla se muestre la
temperatura en grados Celsius o Kelvin dependiendo del estado
de una entrada analógica.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int temperatura;
float voltaje;
float celsius;
float kelvin;
float fahrenheit;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
void loop() {
delay(2000);
temperatura=analogRead(A0);//LECTURA DE DATOS
voltaje=temperatura*(5/1024.0);//convercion a voltios
celsius=voltaje/0.01;//convercion a celsius
kelvin=celsius+273.15;//convercion a kelvin
fahrenheit=(celsius*9/5)+32;//convercion a fahrenheit
if (analogRead(A2)<341)
lcd.setCursor(2,0);
lcd.setCursor(1,1);
if (analogRead(A2)>341&&analogRead(A2)<=682);
lcd.setCursor(2,0);
lcd.setCursor(1,1);
if (analogRead(A2)>682&&analogRead(A2)<=1024);
{
lcd.setCursor(2,0);
lcd.setCursor(1,1);
Serial.print(celsius);
Serial.print(" °C ");
Serial.print(kelvin);
Serial.print(" K ");
Serial.print(fahrenheit);
Serial.println(" °F ");
7. CUESTIONARIO FINAL
7.1. Las entradas de señal analógica sólo aceptan niveles de voltaje.
Una señal eléctrica analógica tiene un funcionamiento en la cual los
valores del voltaje varían constantemente y pueden tomar cualquier
valor. Pero para el caso de la corriente alterna, podemos decir que la
señal analógica incrementa su valor con signo eléctrico positivo (+)
pero para el caso del signo eléctrico negativo disminuye en el medio
ciclo siguiente.
7.2. Cómo se aplicaría una RTD y una termocupla como sensor de
temperatura.
Para el caso del termo cupla funciona de una manera particular la
cual es bajo la premisa de la termoeléctrica, Una vez que la
temperatura cambia en la unión cálida en relación con la unión fría,
crea un cambio en el voltaje a través de un circuito que consiste en
cables metálicos diferentes.
Teniendo como base este principio de acción, sostenga una pieza
metalica sobre un quemador y se podrá observar que rápidamente se
hará evidente que el calor sube por el mango de la pieza hacia la
zona fría que sería la parte más alejada del quemador de esta manera
funciona los sensores termocupla.
RTD es un detector de temperatura resistivo. los RTDs contienen
vatios hilos de diversos materiales, platino, níquel o cobre, ya que
estos materiales contienen un coeficiente de temperatura positivo.
Esto quiere decir que un aumento de la temperatura da lugar a
aumento de la resistencia y debido a este aumento en el cambio de
resistencia se utiliza para detectar y medir los cambios de
temperatura.
8. CONCLUCIONES
Es necesario poner un delay en los programas ya que al tomar la
temperatura sin el delay en la pantalla lcd no se lograría visualizar
ningún numero ya que cambiaría demasiado rápido los valores de la
temperatura
Para lograr que se muestre el contenido en la pantalla lcd es
necesario agregar la librería liquidCrystal en el programa arduino ide
de esta manera se lograra visualizar las respuestas en la pantalla lcd
Al poner en marcha el programa se puede observar que al estimular
el sensor de temperatura la temperatura muy rápidamente y esta
respuesta podría ser inmediata o cada cierto tiempo esto se puede
regular con un delay
En esta práctica se logró aprender a manejar las entradas y salidas
analógicas de módulo ADC de manera satisfactoria ya que se al
realizar los múltiples ejercicios propuestos en la práctica cada uno
era de manera diversa y se logró comprender el funcionamiento de
manera correcta
Es necesario saber emplear comunicación serial para mostrar los
valores obtenidos de temperatura de los diversos ejercicios en el
monitor serial del arduino uno.