Académique Documents
Professionnel Documents
Culture Documents
INSTRUMENTACIN Y SENSORES
Ing. Xavier Segovia
INTEGRANTES
lvaro Bentez Pablo Crdova Jos Fernndez
FECHA DE ENTREGA
7 de junio de 2011
R1
100
R3
100 RT1(E+) E+RT1 S+
R5
10k
R5(2)
R2
100
U1(V-)
U5(V-)
SERTD-PT100 R14(1)
R4
10k
2 6 3
7
4 1 5
37.00
U1 R15
10k
U5
4 1 5
R14
10k U1(V+)
TL081
2 6 3
7
R11
10k TL081
U5(V+)
Tomamos los valores de voltajes para temperaturas que podemos obtener experimentalmente.
22pF
C1
X 65 22.5
Y -0.23 -0.095
( (
) )( )
Para obtener los voltajes a 0 y 100 grados se utiliza la ecuacin obtenida Para 100 grados Para 20 grados ( ( )( )( ) )
( ( )(
) )
(
R16
19.23k R16(2)
)
R10
100k R10(2)
R8
10k
s0
U7(V-) U3(V-)
U7
4 1 5
R7(1)
R15
10k
U3
4 1 5
R7
10k
U2(V-)
2 6 3
R9
10k
U2
2 6 3 s0
2 6 3
R6
10k
U7(V+)
TL081 U3(V+)
TL081 U2(V+)
4 1 5
TL081
Obtenido la salida de voltaje s0 que vara de 0 a 5 voltios realizamos la respectiva transformacin a su temperatura equivalente para ser mostrada en el LCD. De igual manera que para obtener los voltajes de la primera etapa, utilizaremos voltaje experimentales para obtener una ecuacin y determinar los valores de voltaje a cero y 100 grados. X 2.36 0.26 Y 65 22
)(
Para obtener los voltajes a 0 y 100 grados se utiliza la ecuacin obtenida Para 100 grados Para 20 grados ( ( )( )( )
LCD1 C1
22pF LM016L
X1 C2
22pF s0 CRYSTAL s0 2 3 4 5 6 7 8 9 10 13 14
U6
VSS VDD VEE RS RW E 4 5 6 D0 D1 D2 D3 D4 D5 D6 D7 7 8 9 10 11 12 13 14
OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 Calienta Enfria t1 t2 t3 t4 A B C D
R13
10k
RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A
Con el teclado matricial, con las teclas superiores seleccionamos la temperatura a la que queremos que se caliente o se enfre nuestro circuito.
Selecciona 40 Selecciona 60 Selecciona 80
7 4 1
ON C
1
8 5 2 0
2
9 6 3 =
3
1 2 3
Selecciona 100
+
t4 4
t1
t2
t3
(+)
+88.8
R12
Enfria 330
kRPM
Q1
2N3904
CODIGO DEL PROGRAMA #include "16f877a.h" #fuses XT,NOWDT,NOPROTECT #device adc=10 #use delay(clock=4000000) #include "flex_lcd.c" //libreria de LCD #include "kbd_lib.c" //libreria para teclado #use fast_io(D) //configurar la salida por el puerto d
double tem,v,tem1,v1,tselec; char k,a; int i=0; char teclado(){ k = kbd_getc(); if(k!=0) return k; return a; } // Calienta o enfria segun la temperattura seleccionada void seleccion_temp(){ if(tem<tselec){ output_d(0x01); lcd_gotoxy(1,1); printf(lcd_putc,"Calentando a %f",tselec); } else if(tem>(tselec+1)){ output_d(0x02); lcd_gotoxy(1,1); printf(lcd_putc,"Enfriando a %f",tselec); } else{ output_d(0x00); lcd_gotoxy(1,1); printf(lcd_putc," "); } } void main() { lcd_init(); //inicializacion del LCD kbd_init(); //inicializacion del teclado //Activa la entrada analogica de porta(0) //activa las resitencia pull-up del puerto B para el teclado setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); port_b_pullups(TRUE);
set_tris_d(0x00); output_d(0x00); lcd_gotoxy(1,2); printf(lcd_putc," Temp = "); tem1=0; v1=0; while(true) { set_adc_channel(0); v=read_adc(); delay_ms(5); v=(5*v)/1024; tem = 20.4761*v+16.67; i++; a = teclado(); if(tem>28&&tem<67) tem -= ((tem/20)*0.7); else if(tem>=67&&tem<90) tem -= ((tem/67)*0.5); tem1+=tem; v1+=v; if(i==5000){ tem1 = tem1/5000; v1=v1/5000; lcd_gotoxy(6,1); printf(lcd_putc,"%f",v); lcd_gotoxy(9,2); printf(lcd_putc,"%f",tem); if(a=='1') tselec=40; else if(a=='2') tselec=60; else if(a=='3') tselec=80; else if(a=='A') tselec=100; if(a!=0) seleccion_temp(); i=0; tem1=0; } } }