TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN ĐỒ ÁN 1 Đề tài : Thiết kế mạch đo nhiệt độ, độ ẩm có giao tiếp với máy tính Giáo viên hướng dẫn : Nhóm sinh viên thực hiện :... Thử nghiệm
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
ĐỒ ÁN 1
Đề tài : Thiết kế mạch đo nhiệt độ, độ ẩm có giao tiếp với máy tính
Giáo viên hướng dẫn :
Nhóm sinh viên thực hiện :
Trang 2Mục lục
MỤC LỤC
DANH MỤC HÌNH VẼ
DANH MỤC BẢNG
Chương 1 Giới thiệu chung
Giới thiệu chung về sơ đồ các khối trong mạch và các linh kiện được sử dụng trong mạch
Chương 2.Chức năng cảu các khổi
I/ Khối cảm biến nhiệt độ LM35
II/ Khối cảm biến độ ẩm HS1101
III/ Bộ chuyển đổi ADC 0804
IV/ Khối vi điều khiển 8051
Chương 3 Mạch nguyên lý và thi công
Hình 3 Cách mắc cảm biến HS1101 với IC 555
Hình 4 Sơ đồ chân của ADC 0804
Hình 5 Sơ đồ chân 8051 cùng cách mắc cơ bản ban đầu
Hình 6 .Sơ đồ nguyên lý mạch
Hình 7 Thử nghiệm mạch đo ở điều kiện nhiệt độ phòng
Hình 8 Thử nghiệm mạch đo ở điều kiện tăng nhiệt độ cao ( dùng bật lửa ) Hình 9 Thử nghiệm mạch giao tiếp với máy tính ( hiển thị Nhiệt độ )
Hình 10 Thử nghiệm mạch giao tiếp với máy tính ( hiển thị Độ ẩm )
DANH MỤC BẢNG
Trang 3Bảng 1 Các giá trị của tần số thay đổi theo độ ẩm
Bảng 2 Bảng liệt kê các chân ADC 0804 cùng các công dụng đã sử dụng
Lời mở đầu
Trong ứng dụng hàng ngày, nhu cầu theo dõi nhiệt độ và độ ẩm ngày càng trở nên phổ biến và thiết thực và sử dụng trong: Sản xuất chế biến nông nghiệp Hiển thị và thực thi điều khiển (quạt gió, máy sấy, điều hòa, hay báo động) Datalog dữ liệu về môi trường tại một khu vực Theo dõi môi trường, chế độ làm việc của một số các dây chuyền, thiết bị có yêu cầu cao.Khái niệm về đo nhiệt độ
và độ ẩm đã có từ rất lâu, trong tất cả các đại lượng vật lý thì nhiệt độ và độ ẩm được quan tâm nhiều nhất Nhiệt độ và độ ẩm là yếu tố ảnh hưởng trực tiếp đến tính chất của vật chất và môi trường sống Trong công nghiệp sản
xuất và trong lĩnh vực đo lường điều khiển, quá trình đo và xử lí nhiệt độ, độ ẩm giữ một vai trò quan trọng
Trong các thiết bị đó có các thiết bị đòi hỏi về cảm biến đo và điều chỉnh nhiệt độ, độ ẩm của không khí như điều hòa, chuống báo cháy, lò vi sóng… Do đó
ta có thể thấy tầm quan trọng và tính thực tế của việc đo và điều chỉnh nhiệt độ và
độ ẩm trong các thiết bị tự động hóa cũng như trong đời sống hàng ngày Ở đồ án này, chúng em nhận được đề tài thiết kế “Mạch đo nhiệt độ và độ ẩm cho môi trường, dùng cảm biến LM35 để đo nhiệt độ và HS1101 để đo độ ẩm, giao tiếp với máy tính qua RS232 ” Đây cũng là một trong những đề tài rất sát với thực tế, mang tính ứng dụng thực tiễn cao
Trong đồ án chắc hẳn còn nhiều sai sót, chúng em rất mong nhận được
sự chỉ bảo, hướng dẫn của cô để đồ án hoàn thiện hơn
Chúng em chân thành cảm ơn cô !
Trang 4CHƯƠNG 1 GIỚI THIỆU CHUNG
Ở đề tài này, nhóm em đã sử dụng :
Cảm biến đo nhiệt độ LM35, cảm biến đo độ ẩm HS1101
Bộ chuyển đổi tín hiệu tương tự sang số ADC0804
Vi điều khiển 89S52
Bộ tạo dao động NE555
Bô giao tiếp với máy tính sử dụng RS232
Bộ hiển thị số LCD LM032L
Sơ đồ khối :
Hình 1 Sơ đồ khối của mạch đo nhiệt độ và độ ẩm có giao tiếp với máy tính
Khối cảm biến LM35 nhận nhiệt độ từ môi trường bên ngoài
chuyển thành mức điện áp DC tương ứng đưa vào bộ chuyển đổi
ADC0804
Khối cảm biến HS1101 nhận độ ẩm từ môi trường ngoài , thông
qua khối NE555 để tạo dao động giá trị điện dung của HS1101 hay chính là
độ ẩm của môi trường
Trang 5 Khối vi điều khiển 89S52 nhận dữ liệu dạng số từ khối chuyển đổi ADC0804 và từ NE555 và kèm theo tín hiệu điều khiển đến LCD để hiển thị
Khối giao tiếp máy tính sử dụng RS232, nhận tín hiệu từ vi điều khiển và giao tiếp với máy tính qua cổng COM
CHƯƠNG 2, CHỨC NĂNG CÁC KHỐI
I/ Khối cảm biến nhiệt độ LM35
Nguyên lý hoạt động chung của IC cảm biến nhiệt:
IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tín hiêu điện dưới dạng dòng điện hay điện áp Dựa vào đặc tính rất nhạy của các bán dẫn với nhiệt độ, tạo ra điện áp hay dòng điện , tỉ lệ tuyến tính với nhiệt độ môi trường Đo tín hiệu điện ta biết được giá trị của nhiệt độ cần đo
Có rất nhiều loại IC cảm biến nhiệt , nhưng được sử dụng thông dụng nhờ rẻ tiền và dễ kiếm là LM35
LM35 có độ biến thiên theo nhiệt độ là 10mV/1 C Sai số lớn nhất là 1,5 C khi nhiệt độ lớn hơn 100 C
Hình 2.Sơ đồ chân của LM35
Phạm vi sử dụng -55 C -150 C
Tín hiệu đầu ra tuyến tính liên tục với những thay đổi của đầu vào
Giới hạn trong đồ án của nhóm em là nhiệt độ phòng từ 2 C -150 C
Trang 6 Tính toán nhiệt dộ đầu ra của LM35 :
Ở đây, việc đo nhiệt độ ta sử dụng cách LM35 ADC0804
89S52 Do đó ta có
U=t.k với U là điện áp đầu ra Vout
t là nhiệt độ môi trường cần đo
k là hệ số theo nhiệt độ (10mV/1 C) Điện áp cấp cho LM35 là 5V , ADC 8bit , vậy bước thay đổi của LM35 sẽ là 58 5
2 256 Giá trị ADC đo được thì điện áp đầu vào của
II/ Khối cảm biến độ ẩm HS1101
HS1101 là loại cảm biến đo độ ẩm Độ chính xác 2% Dải nhiệt độ hoạt động từ -400 1000 C Cảm biến này được dùng phổ biến trong đời sống , ngoài ra thường kết hợp với cảm biến LM35 để đo nhiệt độ
HS1101 cơ bản là một tụ có điện dung biến thiên theo độ ẩm, giá trị điện dung sẽ thay đổi khi độ ẩm thay đổi Nguyên lý mạch là tạo ra dao động
và tần số thay đổi tương ứng theo giá trị điện dung hay chính là độ ẩm của môi trường Do vậy, để đo được độ ẩm ta sẽ phải thiết kế mạch đo điện dung của HS1101 Trong thực tế người ta thường ghép nối HS1101 với IC NE555 (theo datasheet của nhà sản xuất) Khi đó giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của IC 555 Như vậy chỉ cần đo tần số đầu ra là có thể đo được điện dung của HS1101 hay độ ẩm của môi trường
Trang 7 Sau đây là cách mắc HS1101 với NE555
Hình 3 Cách mắc cảm biến Hs1101 với IC 555
Cách thức tính độ ẩm :
Giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của
IC555 (Fout), bây giờ chỉ cần tần số tại đầu ra của IC555 để tìm ra độ ẩm
C RH là điện dung theo độ ẩm
Ta có công thức liên hệ giữa độ ẩm và điện dung
Trang 8Bảng 1 Các giá trị của tần số thay đổi theo độ ẩm
III/ Bộ chuyển đổi ADC0804
Để kết nối giữa nguồn tín hiệu tương tự với các hệ thống xử lý số người ta dùng các mạch chuyển đổi tương tự sang số(ADC) nhằm biến đổi tín hiệu tương tự sang số
Chuyển đổi ADC có rất nhiều phương pháp, song mỗi phương pháp đều có các thông số cơ bản :
Độ chính xác của bộ chuyển đổi
Tốc độ chuyển đổi
Dải biến đổi của tín hiệu tương tự đầu vào
Các thông số của ADC0804
Chip này có điện áp Vcc là +5V và độ phân giải 8 bit
Thời gian chuyển dổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN và không bé hơn 110 s
Chức năng các chân
Trang 9Hình 4.Sơ đồ chân của ADC 0804
1 CS(chip set) Chân chọn chip Đầu vào tích cực mức
thấp để kích hoạt ADC0804, để truy cập thì chân này cũng phải mức thấp
2 RD(read) Chân nhận tín hiệu vào tích cực ở mức
thấp.Các bộ chuyển đổi của 0804 sẽ chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó ở một thanh ghi trong Chân RD được dử dụng để cho phép đưa tín hiệu đã được chuyển đổi tới đầu ra của 0804 Khi CS=0 nếu có 1 xung cao xuống thấp đến chân RD thì
dữ liệu ra dạng 8 bit được đưa tới chân
dữ liệu (DB0-DB7)
3 WR (write) Chân vào tích cực mức thấp , được dùng
báo cho ADC biết để bắt đầu quá trình chuyển đổi Nếu CS=0 khi WR tạo ra xung cao xuống thấp thì ADC bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin thành số nhị phân 8 bit Khi việc chuyển đổi hoàn tất thì chân INTR được đưa xuống mức thấp
4 , 19 CLK IN(4)
CLK R (19)
là chân vào nối tới đồng hồ ngoài được
sử dụng để tạo thời gian Tuy nhiên ADC0804 cũng có một bộ tạo xung đồng hồ riêng Để dùng đồng hồ riêng
Trang 106 , 7 Vin + (6)
Vin - (7)
Đây là 2 đầu vào tương tự vi sai, trong
đó Vin = Vin(+) – Vin(-) Thông thường Vin(-) được nối tới đất và Vin(+) được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số
9 Vref/2 Chân điện áp đầu vào được dùng làm
điện áp tham chiếu Nếu chân này hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải 0 đến +5V Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin khác với dải 0 đến +5V Chân Vref/2 được dùng để thực hiện các điện
áp đầu ra khác 0 đến +5V
20 Vcc Chân nguồn nuôi +5V Chân này còn
được dùng làm điện áp tham chiếu khi đầu vào Vref/2 để hở
11-18 D7-D0 Các chân ra dữ liệu số (D7 là bit cao
nhất MSB và D0 là bit thấp nhất LSB) Các chân này được đệm ba trạng thái và
dữ liệu đã được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp Để tính điện áp đầu ra ta tính theo công thức sau:
Dout = Vin / Kích thước bước
Kích thước bước=Vin/256
Bảng 2 Bảng liệt kê các chân ADC 0804 cùng các công dụng đã sử
dụng IV/ Khối vi điều khiển 8051
Sơ đồ chân
Trang 11Hình 5 Sơ đồ chân 8051 cùng cách mắc cơ bản ban đầu
Chức năng các chân
Các Port :
Port 0: là port có 2 chức năng ở các chân 32 – 39 của 89S52
Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Port 1: là port IO trên các chân 1-8 Các chân được ký hiệu
P1.0, P1.1, P1.2, … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
Port 2: là 1 port có tác dụng kép trên các chân 21 - 28 được
dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng
Port 3: là port có tác dụng kép trên các chân 10 - 17 Các chân
của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 89S52 như ở bảng sau:
Các ngõ tín hiệu điều khiển
Ngõ tín hiệu PSEN (Program store enable):
- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đến chân
Trang 120E\ (output enable) của Eprom cho phép đọc các byte mã lệnh
- PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1
Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :
- Khi 89S52 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt
- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 89S52
Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Nếu ở mức 0, 89S52 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52
Ngõ tín hiệu RST (Reset) :
-Ngõ vào RST ở chân 9 là ngõ vào Reset của 89S52 Khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset
Các ngõ vào bộ dao động X1, X2:
- Bộ dao động được tích hợp bên trong 89S52, khi sử dụng 89S52 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ Tần số thạch anh thường sử dụng cho 89S52 là 12Mhz
Trang 13CHƯƠNG 3 MẠCH NGUYÊN LÝ VÀ THI CÔNG I/ Mạch nguyên lý
Trang 14Hình 6.Sơ đồ nguyên lý mạch
Trang 15II/ GIẢI THUẬT CHƯƠNG TRÌNH
Khởi tạo cài đặt : ( Khởi tạo Uart ; LCD ; ngắt Timer )
Truyền dữ liệu lên PC
Hiển Thị LCD
Đo Độ Ẩm
Đo Nhiệt Độ Start
End
Trang 16Xuất dữ liệu ra cổng UART
RI = 1
SBUF = ‘N’
SBUF = ‘D’
End
Trang 17III/ THI CÔNG
Hình 7 Thử nghiệm mạch đo ở điều kiện nhiệt độ phòng
Hình 8 Thử nghiệm mạch đo ở điều kiện tăng nhiệt độ cao ( dùng bật lửa )
Trang 18Hình 9 Thử nghiệm mạch giao tiếp với máy tính ( hiển thị Nhiệt độ )
Hình 10 Thử nghiệm mạch giao tiếp với máy tính ( hiển thị Độ ẩm )
Trang 19Phụ Lục Code chương trình :
/// Bien toan cuc
unsigned int tanso;
unsigned int xung,dem;
unsigned char doam;
// Ham gui lenh cho LCD
void Lcd_Cmd(unsigned char cmd)
{
LCD_RS = 0;
LCD_DATA = cmd;
LCD_EN = 0;
Trang 20//Xuat ra man hinh LCD 1 ky tu, ngay tai vi tri dong row, cot col
void Lcd_Chr(unsigned char row, unsigned char col, char c)
Trang 22Lcd_Cmd(0x38); // So dong hien thi la 2, font 5x8
Lcd_Cmd(0x01); // Xoa noi dung hien thi
Lcd_Cmd(0x0C); // Bat hien thi va tat con tro
Trang 237099,7086,7072,7059,7046,7033,7020,7007,6995,6982,
6969,6957,6945,6932,6920,6908,6896,6884,6872,6860,
6848,6836,6824,6812,6800,6788,6776,6764,6752,6740,
6728,6716,6704,6692,6680,6668,6656,6643,6631,6619,
6606,6594,6581,6568,6556,6543,6530,6517,6504,6491,
6477,6464,6450,6437,6423,6409,6395,6381,6367,6352,
6338,6323,6309,6294,6279,6264,6248,6233,6217,6202,
6186,6170,6154,6137,6121,6104,6087,6053,6036,6019};
void ngat0(void) interrupt 0 // Ngat ngoai 0
Trang 24// Khoi tao UART o mode 1, 9600 baud
SM0 = 0; SM1 = 1; // Chon UART mode 1
TMOD &= 0x0F; // 0010 xxxx - Timer1 hoat dong o che do 8bit tu dong nap lai
TMOD |= 0x20;
Trang 26{
if(t<10)
{
Trang 27{ Uart_Write_Text("Nhiet Do : ");
Uart_Write(t/10+0x30);
Uart_Write(t%10+0x30);
Uart_Write_Text("\r\n") ; }
else { Lcd_Chr_Cp('C');
} break;
case'D':
{ if(doam<10)
{
Trang 28Uart_Write_Text("Do Am : ");
Uart_Write(doam+0x30);
Uart_Write_Text("\r\n");
} else if(doam<100)
{ Lcd_Chr_Cp(0x10);
Uart_Write_Text("Do Am : ");
Uart_Write(doam/10+0x30);
Uart_Write(doam%10+0x30);
Uart_Write_Text("\r\n") ; }
else
{ Uart_Write_Text("Do Am : ");
Uart_Write(doam/100+0x30);
Uart_Write(doam%100/10+0x30);
Uart_Write(doam%10+0x30);
Uart_Write_Text("\r\n") ; }
} break;
} }
// Hien Thi Nhiet Do
Trang 29{ Lcd_Chr(1,10,t/100+0x30);
Trang 30Delay_ms(100);
if(doam<10)
{ Lcd_Chr(2,9,doam+0x30);
Lcd_Chr_Cp(0x25);
Lcd_Chr_Cp(0x10);
Lcd_Chr_Cp(0x10);
} else
{ Lcd_Chr(2,9,doam/100+0x30);
Lcd_Chr_Cp(doam%100/10+0x30);
Lcd_Chr_Cp(doam%10+0x30);
Lcd_Chr_Cp(0x25);
} Delay_ms(200);
}
}