Vous êtes sur la page 1sur 7

TERMMETRO DIGITAL

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL
S ON OFF L L

*Basndote en el Microcontrolador PIC16F877A y en el integrado LM35 podes implementar un Termmetro digital con un precisin del 1/100 *Algunas de sus caractersticas sern: *Tendr un rango de medicin de temperatura de 0 -> 1000C *Pasados los 1000C el sistema mostrara por sus displays de 7 segmentos un mensaje FULL indicando el final de la escala de medicin para la cual fue diseada.

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL

HARDWARE
COMPONENTES

Componentes
PIC16F877A LM 35 Oscilador de cristal 4Mhz Capacitor cermico 16V transistor 2N3904 Resistores Watt Display 7 segmentos ctodo comn

Detalles

Sin Polaridad C1= 22pF, C2= 22pF T0, T1, T2, T3 R3=R4= R5=R6=R7=R8= R9=R10= 220 R2= 10K R1=R17=R18=R19= 1K 4 displays ctodo comn

Nota.-Toma muy en cuenta que la tensin de alimentacin para circuitos electrnicos usados en este proyecto es de 5 Vdc.

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL

DESCRIPCIN

DE LOS COMPONENTES USADOS

PIC 16F877A
* Es uno de los Microcontroladores ms famosos a nivel mundial. * La razn de esto es por que son sencillos de usar, modernos y principalmente baratos * Adems de que es un dispositivo Regrabable (EEPROM) * Para el correcto funcionamiento los Pines 11 y 32 deben estar conectados a VCC 5V y los Pines 12 y 31 a GND 0V *El cableado adicional se indica en la grafica antes mostrada de simulacin

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL

CIRCUITO INTEGRADO

L M 35

*El tan popular Censor de temperatura LM35, podramos decir que es el corazn del proyecto. * Modo de funcionamiento: *Es un dispositivo censor de temperatura calibrado en grados Celsius *Posee un factor de escala de 10.0 mV/C, es decir tiene cada grado centgrado equivale a 10mv a la salida del dispositivo. *Con un pequeo aditamento este dispositivo podra cubrir el rango de 55 a +150C *En el proyecto usamos la configuracin mostrada en la figura que cubre el rango +2C to +150C

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL
SOFTWARE

(HECHO

EN LEN GAJE DE ALTO NIVEL Y COMPILADO EN EL

PIC-C)

He aqu el cdigo fuente que una vez compilado (archivo .HEX) podr ser quemado en el PIC 16F877A, puedes usar el compilador que desees. 1ra parte
/*----------------------------------------------------------------------------*/ //Termmetro Digital //Descripcin: //El siempre til termmetro digital tendr la caracterstica //de precisin del 1/100, siendo el corazn del mismo el //censor de temperatura LM35 //Usando la caracterstica de CAD del PIC16F877A se mostrara la //temperatura en grados Celsius en 4 display's, pudiendo mostrarse //hasta 100 Grad., mas halla de este limite se mostrara un mensaje de //"FULL" indicando que la temperatura sobrepaso los 100 Grad. /*----------------------------------------------------------------------------*/ #include<16F877A.h> #device adc=10 //MUY IMPORTANTE PARA EL CAD OJOO DEBE ESTAR DEBAJO DE INCLUDE #Fuses XT, NOWDT, NOPROTECT, NOLVP, PUT, BROWNOUT, NOCPD, NOWRT//palabra de configuracion #Use delay(clock=4000000) //usando un oscilador de 4MHz #Use RS232(Baud=9600, Xmit=Pin_C6, Rcv= Pin_C7, Parity=N, Bits=8) //Configuracion del RS232 //Rutina usada para monitoreo No se nececita configurar PortC #Use Fast_io(a) //Optimizamos el codigo usamos como puertos el PORTA (Ojo usar:Set_Tris_XXX) #Use Fast_io(b) //Optimizamos el codigo usamos como puertos el PORTB (Ojo usar:Set_Tris_XXX) #Use Fast_io(c) //Optimizamos el codigo usamos como puertos el PORTC (Ojo usar:Set_Tris_XXX)

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL
2da parte
#Byte PortA=0x05 #Byte PortB=0x06 #Byte PortC=0x07 //se define PortA como variable tipo byte con su posision de memoria espesifica //se define PortB como variable tipo byte con su posision de memoria espesifica //se define PortC como variable tipo byte con su posision de memoria espesifica

unsigned int const Led[10]={0x7E, 0x0C, 0xB6, 0x9E, 0xCC, 0xDA, 0xFA, 0x0E, 0xFE, 0xDE}; //{#0 en el display, #1 en el display,#2 en el display,......,#9 en el display} //Nota.- el bit menos significativo no se toma en cuenta,el segundo bit corresponde // a la letra "a" y el bit mas significativo corresponde a la letra "g" del display int16 variable; float ctte=0.004883; int valores[4]={0,0,0,0}; void multiplexa(int16 valorAD) //Funcion encargada de encender los display y mostrar el dato { PortB=Led[valores[3]]; //Entonces cargamos el PortB con el dato de las decenas Output_high(PIN_C0); //mostramos el dato del display por medio de RC0 y su transistor delay_ms(100); //Mostramos el dato durante algun tiempo Output_low(PIN_C0); //luego apagamos el display de catodo comun PortB=Led[valores[2]]; Output_high(PIN_B0); //Ahora cargamos el PortB con el dato de las unidades //tambien encendemos el punto decimal

Output_high(PIN_C1); //mostramos el dato del display por medio de RC1 y su transistor delay_ms(100); //Mostramos el dato durante algun tiempo Output_low(PIN_C1); //luego apagamos el display de catodo comun

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL
3ra parte
PortB=Led[valores[1]]; //Ahora cargamos el PortB con el dato de las centecimas Output_high(PIN_C2); //mostramos el dato del display por medio de RC2 y su transistor delay_ms(100); //Mostramos el dato durante algun tiempo Output_low(PIN_C2); //luego apagamos el display de catodo comun PortB=Led[valores[0]]; //Ahora cargamos el PortB con el dato de las decimas Output_high(PIN_C3); //mostramos el dato del display por medio de RC1 y su transistor delay_ms(100); //Mostramos el dato durante algun tiempo Output_low(PIN_C3); //luego apagamos el display de catodo comun } void temperaturaMax() //funcion que mostrara el mensaje de "FULL" para { //temperaturas >100 grad PortB=0xE2; //motramos la letras en hex Output_high(PIN_C0); delay_ms(300); Output_low(PIN_C0); PortB=0x7C; Output_high(PIN_C1); delay_ms(300); Output_low(PIN_C1); PortB=0x70; Output_high(PIN_C2); delay_ms(300); Output_low(PIN_C2);

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

TERMMETRO DIGITAL
4ta parte
PortB=0x70; Output_high(PIN_C3); delay_ms(300); Output_low(PIN_C3); } Void main() { int16 ValorAD; //Declaramos una variable de 16 bits que contendra el valor del conversor A/D int i=0; printf("\r\n ***Termometro Digital***\r\n\r\n\r\n"); Setup_adc_Ports(RA0_ANALOG); //Se declara RA0 como entrada analogica //Setup_adc_Ports(RA0_RA1_ANALOG_RA3_REF);//usando un voltaje de referencia positivo; cada paso=(Vref+)/2^adc[mv] setup_adc(ADC_CLOCK_INTERNAL); //Se usara un reloj interno Set_Tris_A(0b11111111); //Se configura todo el PORTA como entradas, //(OJO.- se definio antes RA como entrada ANALOG) Set_Tris_B(0b00000000); //Se configura todo el PORTB como salidas, //(OJO.- Sera la salida digital de la convercion) Set_Tris_C(0b00000000); //Se configura RC0 y RC1 como salidas, //(OJO.- Sera la parte digital mas alta de la convercion) PortB=0x00; //Limpiamos el puerto b (Por precaucion siempre se limpian las salidas) PortC=0x00; //Limpiamos el puerto c (Por precaucion siempre se limpian las salidas)

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

10

TERMMETRO DIGITAL
5ta parte
do{ Set_adc_channel(0); delay_ms(20); //selecion de canal 0 //Retardo para que se carge la senal analogica

ValorAD=read_adc(); //lee el resultado de la convercion y se guarda en nuestra variable de 16bits printf(" -ValorAD:%Ld\r\n",ValorAD); if(ValorAD>204) { temperaturaMax(); goto mayorA100Grad; } variable=ValorAD*ctte*10000; printf(" -variable:%Ld\r\n",variable); if(ValorAD<=20) { valores[3]=0; } i=0;

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

11

TERMMETRO DIGITAL
6ta parte
while(variable>0) { valores[i]=variable%10; //printf(" -valores:%D\r\n",valores);

//funcion de monitoreo

variable=variable/10; //printf(" -variable:%Ld\r\n",variable); //funcion de monitoreo i++; } multiplexa(valorAD); mayorA100Grad: printf(" "); }while(true); }

Si tienes alguna duda o comentario personal escrbeme: yver_man@ielectronica.com yver_man@hotmail.com

MICROCONTROLADOR PIC.

FCYT-UMSS

POR: YVER FLORES CALLE

12

Vous aimerez peut-être aussi