Đề tài: Mạch đo nhiệt độ và cảnh báo 1.Chức năng của mạch: - Đo nhiệt độ môi trường tại một điểm thông qua sensor nhiệt LM335(Chi tiết về LM335 xem trong datasheet). LM335 là sensor đo nhiệt, đầu ra là 10mV/K. Do đó để đo độ C ta cần có công thức chuyển đổi giá trị từ độ K sang độ C. Vì ta dùng ADC của PIC là 8bit => max=255, Vref=VCC, giả thiết là VCC=5V nên tại 0 độ C hay 273K thì đầu ra của LM335 có giá trị là 2.73V. Như vậy khi muốn tính toán ra độ C ta cần phải trừ đi mức điện áp là 2.73V. Lấy ví dụ: nhiệt độ là 30 độ C = 303K -> out = 303 x 10mV/K =3.03V. Ta tính toán giá trị đọc được từ ADC. - ADC 8 bit(V_in là điện áp đưa vào chân ADC của PIC): V_in = 5V => ADC_value = 255 V_in = 2.73V => ADC_value = (255/5)x2.73=139.23 (tương ứng 0 độ C) V_in = 3.03V => ADC_value = (255/5)x3.03=154.53(tương ứng 30 độ C)
Mặt khác do V_ref = VCC=5V nên ADC_value=1 tương ứng 5/255=19.6mV ~ 20mV. Trong khi đó LM335 cho ra điện áp là 10mV/1K nên để giá trị ADC thay đổi 1 đơn vị thì nhiệt độ phải thay đổi là 2K (hay gần 20mV) Từ đó ta có công thức đầy đủ sau để tính giá trị độ C: C=(ADC-139.25)x(19.6mV/10mV)=(ADC-139.25)x1.96~(ADC-139.25)/0.512 Tương tự ta có công thức cho ADC 10bit và 12 bit: ADC_10_bit: C= ( reading-558.6)/ 2.048 ADC_12_bit: C= ( reading-2235.9)/ 8.19 - Để hiện thị giá trị nhiệt độ ta có nhiêu phương án như LED 7, LCD, máy tính(qua RS232)... Trong đề tài này ta dùng LED 7 thanh cho việc hiển thị. Gồm có hai LED 7, dùng PIC để giải mã hiển thị cho LED (có thể dùng 7447 để tiết kiệm chân). Để cảnh báo ta đặt khoảng theo dõi nhiệt là từ 15 C đến 40 C (cái này tuỳ vào người dùng) khi nhiêt độ nằm ngoài khoảng này thì phát tín hiệu cảnh báo bằng loa và có thể gửi tín hiệu điều khiển đến các mạch khác nếu có. - Mạch có sử dụng thêm điện trở tinh chỉnh 10K tại chân ADJ của LM335 để điều chỉnh nhiệt độ ban đầu cho phù hợp. 2.Mở rộng của đề tài: - Nâng cao độ chính xác hiển thị bằng cách dùng ADC có độ phân giải cao hơn (có thể dùng ADC ngoài) - Thêm bàn phím giao tiếp để có thể thay đổi trực tiếp khoảng nhiệt độ theo dõi, cùng với đó ta thêm vào LED 7 để hiển thị hai giá trị nhiệt độ này - Sử dụng EEPROM để lưu giá trị nhiệt độ mà người dùng thiết lập, các lần thay đổi khác... - Ghép nối máy tính để truyền giá trị nhiệt độ đến máy tính - Ghép nối LCD và một mạch đếm thời gian thực (DS1307) để ứng với mỗi thời điểm chương trình sẽ tự động chọn khoảng thiết lập nhiệt độ thích hợp theo từng mùa, từng thời điểm định trước... - Sử dụng PID trong điều khiển tự động kết hợp với các mạch điều khiển tăng giảm nhiêt độ để đảm bảo nhiệt độ luôn bám theo một giá trị cho trước, hệ ổn định nhiệt (giá trị thay đổi là rất nhỏ) - Vân vân và vân vân...anh em nào có thêm cao kiến gì thì bổ sung. Liện hệ:
[email protected] BK Design Group
5 b 6
D OT
4 a c
HI
22pF 10MHz
22pF
4K7
40 39 38 37 36 35 34 33 4 5 6 7 8 9 10
Q3
4K7
SPEAKER HI
4K7
13 14 15 16 17 18 19 20
RD2/PSP2 RB7/PGD RD3/PSP3 RB6/PGC RB5 RC4/SDI/SDA RB4 RC5/SDO RC6/TX/CK RB3/PGM RB2 RC7/RX/DT RB1 RD4/PSP4 RB0/INT RD5/PSP5 RD6/PSP6 RD7/PSP7 RA2/AN2 RA3/AN3 RA4 RA5/AN4 OSC1/CLKI RE0/AN5 OSC2/CLKO RE1/AN6 RC0/T1CKI RE2/AN7 RC1/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 VDD1 VSS1
32 31
2
21 22 23 24 25 26 27 28 29 30
A1015
HI
12
VDD VSS
RA1/AN1 RA0/AN0 VPP
3 2 1
3 LM335Z
10K
1K
HI
HI
PIC16F877A
1
11
HI
7
3 VC C
2 f d
e
Vcc 8
9
1 g
5 b D OT 6
10
4 a
3 VC C Vcc
c 7
8
2 f d 9
1 g e 10
A1015
VR10K