Académique Documents
Professionnel Documents
Culture Documents
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
Informe de practica 5
Conversin Analgica/Digital
Cdigos:
2420132005
2420111046
Universidad de Ibagu
2014
PROCEDIMIENTO
OBJETIVOS
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
(+) ()
2n 1
=
50
210 1
= 0.004887
1
(0.004887)
2
= 0.0024435
El valor anterior es solo de anlisis ya que en la prctica e implementacin del cdigo no es utilizado.
Para encontrar el voltaje, se realiza la siguiente ecuacin:
1
= + ()
2
Como el ltimo valor es el error de cuantizacion se omite.
= ( 0.004887) + 0
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
= ( 0.004887)
El micro nos entregara el valor de k el cual es variable dependiendo del valor que ingrese de
temperatura, es decir, al ingresar la temperatura al micro, el micro la asocia a un valor digital k y ese
es el valor que entregara el micro.
La ecuacin anterior estar en la parte del procesamiento de la seal para que sea entregada y se
visualizado en una pantalla LCD el valor de temperatura registrado.
Cabe resaltar lo siguiente: el LM35 le va a entregar al micro por el puerto anlogo digital una seal
anloga, el micro nos entregara un valor digital asociado a la temperatura que se senso y la
asociamos en la frmula de temperatura encontrada anteriormente.
Se puede decir que entre ms pequea sea la resolucin se disminuye el error de cuantizacion, y
entre ms niveles el error disminuye.
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
en las variables n1, n2,n3, n4 segn los dgitos correspondientes, lo mismo se hace con la
temperatura mnima y estos se guardaron en n5,n6,n7,n8. Despus se vuelven n1,n2,n3,n4 en
una sola variable y esto se realiza multiplicando por 1000, 100,10,1 respectivamente cada
uno. Tambin se hace lo mismo con n5,n6,n7,n8. Cada vez que se guarda un dgito en una
variable se realiza con un WHILE (TRUE) el cual es un ciclo infinito, para romper ese ciclo infinito
se hace un GOTO para luego poder guardar el segundo digito en otra variable. el proceso se
repite hasta que se guarden todos los 4 dgitos de cada temperatura. En la parte del programa
principal se visualiza termometro digital, luego se pide el valor de la temperatura mxima y si el
valor ingresado esta por encima de 1500 (ya que es el valor mximo que puede tomar) el programa
muestra un mensaje que indica que es un valor de temperatura incorrecto por que excedi el tope
mximo de temperatura. Para el valor de temperatura mnimo que recibe el sistema es 150 y al ser
menor de esto indica que es un valor de temperatura incorrecto. En el caso que la temperatura
mnima sea mayor que la temperatura mxima el sistema indica que es una contradiccion y vuelve
a reiniciar el sistema. La comparacion de las temperaturas se realizo con tres condicionales asi: si
la temperatura (sensada por el LM35) es mayor al digito que el usuario ingreso muestre en la
pantalla temperatura alta y por el contrario es menor a la temperatura minima ingresada por el
usuario muestre en la pantalla temperatura minima, cuando la temperatura sensada no esta entre
los rangos digitados por el usuario entonces la pantalla muestra la temperatura a la que se
encuentra.
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
Se realizaron los siguientes resultados que muestran el funcionamiento completo del circuito
implementado:
1. En la siguiente imagen se visualiza despus de que el circuito se energiza sale el mensaje
de termmetro digital simulado en proteus, donde ms adelante se visualizara de forma real
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
4. Se repite el mismo proceso anterior pero ahora con la temperatura mnima es decir se pide
que se digite la temperatura mnima, sale el mensaje de dato guardado y procede a evaluar
si la temperatura est en un rango alta, mnima o el rango normal con el cual muestra la
temperatura
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
5. en este caso la temperatura estaba en 36 y como se observ los pantallazos anteriores la mxima
era 30 por lo tanto la temperatura es alta como lo muestra la pantalla
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
9. y por lo tanto se muestra en el integrado LM 35 que la temperatura est en 15 grados que es una
temperatura mnima por lo que se visualiza temperatura baja
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
Errores
Cuando se hablan de errores, es debido a que como el LM 35 solo soporta temperaturas hasta 150
grados y el usuario al momento de digitar los lmites de la temperatura excede este limite el programa
est diseado para que el sistema se reinicie y muestre un mensaje que se visualiza en la imagen
siguiente.
Si la temperatura mnima es mayor a la temperatura mxima en este caso tambin muestra un error
dicindole que la temperatura mxima es menor a la mnima con lo que el sistema se reinicia despus
de 1 segundo
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
OBSERVACIONES
Se debe normalizar el dato a procesar para evitar el punto flotante ya que los clculos
de estos son muy costosos
Se arreglo el codigo del teclado para el montaje en la parte real
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
CONCLUSIONES
ANEXO 1
///////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Descripcin general... Sensor de Temperatura
//
// Micro: 16F877A
// Autores: Brigete Tatiana Gonzalez Alejandro Runceria
// Fecha: 9 de mayo del 2014
//
///////////////////////////////////////////////////////////////////////////////////////////////////////
#include<16F877A.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#include <DriverTec4x4.c>
#include<lcd.c>
#use fast_io(B)
int16
k,Dig1,Dig2,Dig3,Dig4,Ven,dato1,a,n1,n2,n3,n4,n5,n6,n7,n8,TEM,Numero,Numero1,Numero2;
int8 NTec;
void iniConversor(){
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_tris_A(0xff);
set_adc_channel(0);
}
void IniPuertos(){
set_tris_B(0x0F);
port_b_pullups(TRUE);
//
//
//
//
//
//
//
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
}
void iniLCD(){ // programacion de pantalla para inicializacion del programa
lcd_init();
lcd_putc("\f");
lcd_putc(" Termometro \n");
lcd_putc(" Digital ");
delay_ms(1000);// espera un segundo como mensaje de bienvenida
}
void descomponerDigitos(int16 Dato){ // se descompone para poder visualizar en la pantalla
int16 aux;;
Dig1=Dato/1000;
Dig2=(Dato%1000)/100;
aux=Dato%100;
Dig3=aux/10;
Dig4=aux%10;
}
void procesarsenal(){
int32 k32;
k32=k;
Ven=(4887*k32)/1000; // se multiplica el valor hallado de q con sus modificaciones para
sensar la temperatura
descomponerDigitos(Ven);
Dig1+='0';
Dig2+='0';
Dig3+='0';
Dig4+='0';
if(Dig1=='0'){
// para que no se visualice el primer digito cuando la temperatura sea de dos
digitos mas el decimal de precision
Dig1=' ';
}
}
void ProcesarTeclado(){ // Esta funcin ejecuta la accin requerida por cada pulsador del teclado.
switch (NTec){
case 0:
dato1=10;
break;
case 1:
dato1=11;
break;
case 2:
dato1=12;
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
break;
case 3:
a=13;
break;
case 4:
dato1=3;
break;
case 5:
dato1=6;
break;
case 6:
dato1=9;
break;
case 7:
dato1=0x0B;
break;
case 8:
dato1=2;
break;
case 9:
dato1=5;
break;
case 10:
dato1=8;
break;
case 11:
dato1=0;
break;
case 12:
dato1=1;
break;
case 13:
dato1=4;
break;
case 14:
dato1=7;
break;
case 15:
dato1=12;
}
if(NTec!=16){
// Si se oprimi algn pulsador se
delay_ms(150);
// elimina rebote.
}
}
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
if(NTec<=15){
delay_ms(150);
Dig3=dato1;
n3=Dig3;
Dig3+= '0';
lcd_gotoxy(10,2);
lcd_putc(Dig3);
goto et;
}
}
et:
while(true){
NTec= LeerTeclado(); // En NTec queda el cdigo del pulsador
ProcesarTeclado();
if(NTec<=15){
delay_ms(150);
Dig4=dato1;
n4=Dig4;
Dig4+= '0';
lcd_gotoxy(12,2);
lcd_putc(Dig4);
delay_ms(1000);
goto eh;
}
}
eh:
if(dato1==dato1){
lcd_putc("\f");
lcd_putc(" Dato \n");
lcd_putc(" Guardado ");
delay_ms(1000);
}
}
void ingresardatos1(){
while(true){
NTec= LeerTeclado(); // En NTec queda el cdigo del pulsador
ProcesarTeclado();
if(NTec<=15){
delay_ms(150);
Dig1=dato1;
n5=Dig1;
Dig1+= '0';
lcd_gotoxy(8,2);
lcd_putc(Dig1);
goto rr;
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
}
}
rr:
while(true){
NTec= LeerTeclado(); // En NTec queda el cdigo del pulsador
ProcesarTeclado();
if(NTec<=15){
delay_ms(150);
Dig2=dato1;
n6=Dig2;
Dig2+= '0';
lcd_gotoxy(9,2);
lcd_putc(Dig2);
goto rs;
}
}
rs:
while(true){
NTec= LeerTeclado(); // En NTec queda el cdigo del pulsador
ProcesarTeclado();
if(NTec<=15){
delay_ms(150);
Dig3=dato1;
n7=Dig3;
Dig3+= '0';
lcd_gotoxy(10,2);
lcd_putc(Dig3);
goto rt;
}
}
rt:
while(true){
NTec= LeerTeclado(); // En NTec queda el cdigo del pulsador
ProcesarTeclado();
if(NTec<=15){
delay_ms(150);
Dig4=dato1;
n8=Dig4;
Dig4+= '0';
lcd_gotoxy(12,2);
lcd_putc(Dig4);
delay_ms(1000);
goto zx;
}
}
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
zx:
if(dato1==dato1){
lcd_putc("\f");
lcd_putc(" Dato \n");
lcd_putc(" Guardado ");
delay_ms(1000);
}
}
void main(){ // Programa principal
inicio:
delay_ms(10);
iniConversor();
IniPuertos();
while(true) {
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
lcd_putc("\f");
lcd_putc("Error Tem\n");
lcd_putc("no adecuada");
delay_ms(1000);
goto inicio;
}
// si la temperatura maxima es menor a la temperatura minima coloca error
if(Numero2>=Numero1){
lcd_putc("\f");
lcd_putc("Error \n");
lcd_putc("Tmax < Tmin");
delay_ms(1000);
goto inicio;
}
while(true){ // se coloca para para visualizar la temperatura y si esta alta y baja
if(TEM < Numero1 && TEM > Numero2){
lcd_putc("\f");
lcd_putc("Temperatura \n");
lcd_putc("Tempra=");
visualizarvoltaje();
delay_ms(180);
}
k=read_adc();
TEM=Ven;
procesarsenal();
delay_ms(180);
Numero1=n1*1000+n2*100+n3*10+n4*1;
Numero2=n5*1000+n6*100+n7*10+n8*1;
UNIVERSIDAD DE IBAGU
FACULTAD DE INGENIERA
ELECTRONICA DIGITAL 3
PROGRAMA DE INGENIERA ELECTRNICA
}
}
}