Hiện em đang làm tiểu luận đo nhiệt độ dùng cảm biến PT100 và pic16f877a. Vấn đề của em là khi hiển thị nhiệt độ lên LCD thì giá trị nhiệt độ thay đổi liên tục sau mỗi thời gian lấy mẫu, thất thường (ví dụ 28 rồi 31 rồi 37 rồi 25 rồi 35...). Tạm thời chưa xét tới công thức tính nhiệt độ đúng hay sai, đúng ra giá trị phải không nhảy lung tung chỉ trong thời gian rất ngắn như thế. Có ai biết thì giúp em với!
Sơ đồ mạch như trong hình đính kèm, pt100 loại 3 dây, code vxl thì như sau:
Code:
#include <16f877a.h>
#device *=16 adc=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include "lcd.c"
int1 en=0;
int i=0;
#int_timer1
void timer1(){
++i;
if(i==3){
en=1;
i=0;
}
set_timer1(0);
}
void main(){
signed int16 adc, nhietdo;
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_adc_channel(0);
enable_interrupts(int_timer1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(0);
lcd_init();
enable_interrupts(GLOBAL);
while(1){
if(en){
lcd_putc('\f'); //xoa lcd
if(adc_done())
adc=read_adc();
nhietdo = (adc-494)/1.851; //tinh ra nhiet do
//Hien thi nhiet do len LCD
lcd_putc("Nhiet do:");
lcd_gotoxy(11,1);
printf(lcd_putc,"%ld" nhietdo);
lcd_putc(0b11011111);
lcd_putc("C");
en=0;
}
}
}
Chân thành cảm ơn mọi người!