Está en la página 1de 24

“UNIVERSIDAD CATÓLICA DE SANTA MARÍA”

ESCUELA PROFESIONAL DE INGENIERIA MECÁNICA,


MECÁNICA ELECTRICA Y MECATRÓNICA

MICROCONTROLADORES Y MICROPROCESADORES

GRUPO : 01

TEMA : CONVERSION ANALOGICO DIGITAL

COMUNICACIÓN SERIAL

PROFESOR : ING. SERGIO ORLANDO MESTAS RAMOS

ALUMNO : RAMIREZ ZAMORA JOSE FELIPE BLAIR

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.

El LM35 no requiere de circuitos adicionales para calibrarlo externamente.


La baja impedancia de salida, su salida lineal y su precisa calibración hace
posible que esté integrado sea instalado fácilmente en un circuito de control.
Debido a su baja corriente de alimentación se produce un efecto de auto
calentamiento muy reducido. Se encuentra en diferentes tipos de
encapsulado, el más común es el TO-92, utilizado por transistores de baja
potencia.
4. PANTALLA LCD
LCD significa Liquid Crystal Display o Pantalla de Cristal Líquido. Es una tecnología
utilizada en monitores de computadoras, televisores, cámaras digitales y otros
dispositivos electrónicos, que permite una pantalla más delgada y plana, además de una
excelente definición y más ahorro de energía con respecto a los viejos monitores de
tubos de rayos catódicos (CRT). Básicamente estas pantallas están integradas por
diminutos puntos. Poseen dos capas de material polarizaste. Entre las capas se introduce
una solución de cristal líquido. Luego una señal eléctrica hace que los cristales se
alineen de tal manera que impidan o no el paso de la luz. Cuando la pantalla se pone
negra, todos sus cristales están alineados para que no pase luz.
Los LCD tienen una vida promedio de entre 50 y 60 mil horas de uso.

Arduino nos facilita enormemente la comunicación con los Displays mediante la


librería “LiquidCrystal” la cual está optimizada de tal manera que nos permite
comunicarnos por tan solo 4 pines de salida digital, con cualquier Display compatible
con el Driver Hitachi HD44780. Podemos encontrar en el mercado muchos modelos de
Display compatibles con este Driver.
El pinout de la pantalla LCD se muestra a continuación, en el que se distinguen los
siguientes grupos:
Energía: Vcc, GND, Vo (Contraste), A y C(ánodo y cátodo de luz de fondo)
Datos: Pines del 7 al 14 (D0 al D7).
Control: RS (Selección de registro), R/W (Lectura/Escritura) y en (habilitación).

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.

1. Arme el siguiente circuito.

2. Escriba y explique el programa para leer el valor analógico que


está ingresando por el pin A0 y muéstrelo por el monitor serial.
int temperatura;
float voltaje;
float celsius;
void setup() {
Serial.begin(9600);
Serial.println("analogico voltaje celsius");
}
void loop() {
delay(200);
temperatura=analogRead(A0);//LECTURA DE DATOS
voltaje=temperatura*(5/1023.0);//convercion a voltios
celsius=voltaje/0.01;//convercion a celsius
Serial.print(temperatura);
Serial.print(" ");
Serial.print(voltaje);
Serial.print(" V ");
Serial.print(celsius);
Serial.println(" °C ");

3. Llene una tabla con por lo menos 10 valores tomados.


analogico voltaje celsius
50 0.24 24.44
49 0.24 23.95
49 0.24 23.95
50 0.24 24.44
49 0.24 23.95
50 0.24 24.44
50 0.24 24.44
50 0.24 24.44
50 0.24 24.44
49 0.24 23.95
66 0.32 32.26
84 0.41 41.06
114 0.56 55.72
137 0.67 66.96
133 0.65 65
150 0.73 73.31
162 0.79 79.18
183 0.89 89.44
172 0.84 84.07
170 0.83 83.09
161 0.79 78.69
160 0.78 78.2
159 0.78 77.71
179 0.87 87.49
194 0.95 94.82
204 1 99.71
212 1.04 103.62
220 1.08 107.53

4. 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

5. Escale la lectura anteriormente obtenida de modo que el monitor


serial muéstrela temperatura en Grados Celsius y en Kelvin.
int temperatura;
float voltaje;
float celsius;
float kelvin;
float fahrenheit;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
Serial.println("analogico voltaje celsius");
}

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 ");

6.2. MOSTRANDO LA TEMPERATURA EN LA PANTALLA LCD.

1. Añada al circuito anterior la pantalla LCD, conectando los pines


como se muestran en la figura siguiente.
2. Escriba el siguiente código.
#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);
Serial.println("analogico voltaje celsius");
}

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);

Serial.println("analogico voltaje celsius");

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.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

if (analogRead(A2)>341&&analogRead(A2)<=682);

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

if (analogRead(A2)>682&&analogRead(A2)<=1024);
{

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(fahrenheit); //se muestra la temperatura en grados


celsius

lcd.print(" F "); //respuesta de la temperatura

Serial.print(celsius);

Serial.print(" °C ");

Serial.print(kelvin);

Serial.print(" K ");

Serial.print(fahrenheit);

Serial.println(" °F ");

6. Explique las modificaciones realizadas.


Para el caso de este programa en base al programa del pulsador
se borró el pin de entrada del pulsador ya que no lo usamos se
utilizó una entrada analógica la cual es la entrada A2 del arduino
se agregó tres IF para realizar cada una de las muestras de
temperatura y se dividió 1023 en tres partes iguales para al ser
regulado con un potenciómetro la primera de las tres partes de
todo el rango de giro del potenciómetro muestre el valor en
grados Celsius, la segunda parte del todo el giro del
potenciómetro nos mostrara la temperatura en grados kelvin,
finalmente para la tercera parte de todo el giro del potenciómetro
nos mostrará la temperatura en grados Fahrenheit como se puede
observar en la foto.

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.

7.3. Explique el funcionamiento de otros sensores de temperatura.


 Termistor
o El termistor es un sensor el cual está basado principalmente
en el comportamiento de la resistencia de los
semiconductores es decir es un variable en funcionan de la
resistencia.
Dentro del termistor se presentados tipos los NTC y los
termistores tipo PTC. Para el caso de los NTC al aumentar la
temperatura, disminuye la resistencia. Y para el caso de los
PTC, al aumentar la temperatura lo que sucede aumenta la
resistencia.
 Termopar
o El termopar este sensor también es llamado o mejor dicho es
conocido mayor mente termocupla y que recibe este nombre
por estar formado por dos metales ya que es un instrumento
de medida cuyo principio de funcionamiento es el efecto
termoceléctrico.

o En este caso un material termoeléctrico lo que realiza es


transformar directamente el calor en electricidad, o bien
generar frío cuando se le aplica una corriente eléctrica.

o El termopar genera una tensión que está en función de la


temperatura que se está aplicando al sensor. Midiendo con un
voltímetro la tensión generada, conoceremos la temperatura.
7.4. Que tipos de salidas analógicas en un microcontrolador cómo
funcionan.
 Los tipos de salidas analógicas PWM permiten generar salidas
analógicas desde pines digitales. Arduino Uno no cuenta con salidas
analógicas puras, pero para el caso de el Arduino Due sí tiene salidas
analógicas puras mediante dos DAC. El arduino due, posee dos
salidas analógicas puras mediante dos conversores digital a
analógico. Estos pines pueden usarse para crear salidas de audio
usando la librería correspondiente.
7.5. Cómo se puede obtener una salida analógica en corriente
 En este caso la corriente en una salida analógica se enfoca más en la
corriente alterna, la señal analógica incrementa su valor con signo
eléctrico positivo (+) durante medio ciclo y disminuye a
continuación con signo eléctrico negativo (–) en el medio ciclo
siguiente

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.

También podría gustarte