|
Tài trợ cho PIC Vietnam |
Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ Thảo luận việc sử dụng và thay thế các sản phẩm Analog, Memory, KEELOG và cảm biến nhiệt độ của Microchip cho các thiết kế |
|
Ðiều Chỉnh | Xếp Bài |
06-02-2012, 09:54 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Sep 2010
Bài gửi: 18
: |
Hỏi về cảm biến đo nhiệt độ PT100
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; } } } |
|
|