đồ án thiết kế cảm biến độ ẩm dht11
Lời mở đầu Trong thời buổi công nghệ phát triển mạnh mẽ, ngày có nhiều sản phẩn đời với tính vượt bậc vơ đa dạng, phong phú đặc biệt thơng chứa đựng sản phẩm Khoa học phát triển làm cho ngành khác phát triển theo, kể đến điện tử, cơng nghệ thơng tin, viễn thơng, khí, chế tạo máy, … Các ngành khoa học ln có kết hợp chặt chẽ với từ khí, điện tử đến lập trình Ngành điện tử đời mà đỉnh cao loại rơ bốt thơng minh, máy móc thơng minh, … Nhờ có cảm biến, robot ngày phát triển để nhận biết hành động phức tạp, … Có nhiều loại cảm biến chế tạo sử dụng theo mục đích khác đời sống cảm biến cảm nhận nhiệt độ, ánh sáng, âm thanh, lực, dịng chảy, … Tùy theo loại cơng việc mà loại cảm biến có cách chế tạo khác Trong nhiệt độ độ ẩm yếu tố đề cập tới nhiều, mạch đo nhiệt độ độ ẩm đời tất yếu Với phát triển công nghệ việc sản xuất mạch đo nhiệt độ độ ẩm đơn giản mà độ xác cao điều đơn giản Việc áp dụng thực tế phổ biến nhiệt độ độ ẩm đóng vai trị lớn ảnh hưởng đến người, hàng hố, máy móc, độ bền … Vì nhiệt độ sử dụng hầu hết nhà máy sản xuất, kho chứa hàng hố, bảo quản máy móc điều kiện vận hành Trong y tế sử dụng rộng rãi phòng cách ly, phòng điều trị cho bệnh nhân áp dụng hầu hết dây chuyền công nghệ sản xuất tuỳ theo nhu cầu mà tuỳ biến thêm chức đề tài để phù hợp với nhu cầu trình hoạt động ngồi chức hiển thị nhiệt độ độ ẩm khu vực cần khảo sát nhiệt độ độ ẩm Có nhiều loại cảm biến thị trường nay, loại cảm biến thơng dụng cảm biến đo độ ẩm Độ ẩm đặc trưng quan trọng khí hậu có ý nghĩa quan trọng số q trình cơng nghệ Trong khí quyển, độ ẩm tồn phạm vi rộng (từ vài phần triệu ppm đến nước bão hòa 1000C), khoảng nhiệt độ lớn (từ -600 C đến 10000C), lẫn tạp chất hóa chất khác Vì lý vậy, nhóm em định thực đề tài tìm hiểu cảm biến đo độ ẩm khơng khí ứng dụng Chương I Tổng quan 1.1 Đặt vấn đề: Sự ảnh hưởng độ ẩm: Độ ẩm có mặt khắp nơi bầu khí độ ẩm có vai trị quan trọng thể sống Độ ẩm ảnh hưởng tới tuổi thọ linh kiện điện, điện tử nhiều q trình cơng nghệ địi hỏi trì độ ẩm thích hợp Khó khăn việc đo độ ẩm: Việc đo độ ẩm khó khăn việc đo đại lượng khác lưu lượng, nhiệt độ áp suất giới hạn độ ẩm rộng từ vài ppm( phần triệu) đến nước 100oC phép đo độ ẩm nằm khoảng nhiệt độ rộng( từ -60oc đến 1000oc) có phần ăn mịn hạt bẩn hóa chất Trong ứng dụng hàng ngày, nhu cầu theo dõi nhiệt độ độ ẩm trở nên phổ biến thiết thực, sử dụng trong: – Sản xuất chế biến nông nghiệp – Hiển thị thực thi điều khiển (quạt gió, điều hòa,…) – Theo dõi nhiệt độ độ ẩm phòng, nhà xưởng Đối tượng nghiên cứu: – Các phương án điều khiển xử lý tín hiệu LCD – Tìm hiểu vi điều khiển PLC AT89S52 – Tìm hiểu phương pháp lập trình C cho PLC – Giao tiếp cảm biến đo độ ẩm PLC Phạm vi đề tài: Đề tài nhóm em tìm hiểu vấn đề sau: – Dùng cảm biến độ ẩm DHT11 để đo độ ẩm – Hiển thị kết LCD – Lập trình phần mềm KEILC CHƯƠNG II: GIỚI THIỆU SƠ LƯỢC VỀ 8051 1.1: Tổng quan PIC a) PIC gì? PIC họ vi điều khiển RISC sản xuất cơng ty Microchip Technology Dịng PIC PIC1650 phát triển Microelectronics Division thuộc General Instrument PIC bắt nguồn chữ viết tắt "Programmable Intelligent Computer" sản phẩm hãng General Instrument đặt cho dòng sản phẩm họ PIC1650 Lúc này, PIC1650 dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16bit CP1600, vậy, người ta gọi PIC với tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi) CP1600 CPU tốt, lại hoạt động xuất nhập, PIC 8-bit phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt ROM, mặc dù, cụm từ RISC chưa sử dụng thời bây giờ, PIC thực vi điều khiển với kiến trúc RISC, chạy lệnh chu kỳ máy (4 chu kỳ dao động) Năm 1985 General Instrument bán phận vi điện tử họ, chủ sở hữu hủy bỏ hầu hết dự án - lúc lỗi thời Tuy nhiên PIC bổ sung EEPROM để tạo thành điều khiển vào khả trình Ngày nhiều dịng PIC xuất xưởng với hàng loạt module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với nhớ chương trình từ 512 Word đến 32K Word b) Tại phải dùng PIC? Họ vi điều khiển dễ tìm thấy thị trường việt nam, nha trang tiệm điện tử bán nhiều giá thành khơng q đắt Có đầy đủ tính vi điều khiển hoạt động độc lập, Nhiều người sử dụng họ vi điều khiển PIC Việt Nam, tạo nhiều thuận lợi như: số lượng tài liệu, số lượng ứng dụng mở phát triển thành công, dễ dàng trao đổi, học tập Bộ vi điều khiển viết tắt Micro-controller, mạch tích hợp chip lập trình được, dùng để điều khiển hoạt động hệ thống.Theo tập lệnh người lập trình, vi điều khiển tiến hành đọc, lưu trữ thông tin, đo thời gian tiến hành đóng mở cấu Trong thiết bị điện điện điện tử dân dụng, vi điều khiển, điều khiển hoạt đọng TV, máy giặt, đầu đọc laser, điện thoại, lò viba….Trong hệ thống sản xuất tự động, vi điều khiển sử dụng Robot, dây truyền tự động.Các hệ thống “thơng minh” vai trị hệ vi điều khiển quan trọng Hiện vi điều khiển bit đứng đầu họ 8051 có số lượng lớn nhà cung cấp đa dạng (nhiều nguồn).Nhà cung cấp có nghĩa nhà sản xuất bên cạnh nhà sáng chế vi điều khiển Trong trường hợp 8051 nhà sản xuất Intel, có nhiều hãng sản xuất (cũng trước sản xuất) 8051 xử lý bit có nghĩa CPU làm việc với bit liệu thời điểm.Dữ liệu lớn bit chia thành liệu bit xử lý.8051 có tất cổng vào – I/O cổng rộng bit.Các nhà sản xuất cho xuất xưởng với 4K byte ROM chíp 2.2: Vi điều khiển AT89s52 a) Vi điều khiển AT89s52 Bộ vi điều khiển AT89S52 gồm chức sau đây: • CPU (Centralprocessing unit) bao gồm : Thanh ghi tích lũy A Thanh ghi tích lũy B ,dùng cho phép nhân phép chia Đơn vị logic học (ALU : Arithmetic Logical Unit) Thanh ghi từ trạng thái chương trình (PSw : Program Status Word) Bốn băng ghi Con trỏ ngăn xếp • Bộ nhớ chương trình (bộ nhớ ROM)gồm 8kbyte Flash • Bộ nhớ liệu (bộ nhớ RAM) gồm 256 byte • Bộ UART (Universal Ansynchronous Receiver and Tranmistter) có chức truyền nhận nối tiếp, AT89S52 giao tiếp với cổng nối tiếp máy tính thơng qua UART • Timer/Counter 16 bit thực chức định thời đếm kiện • WDM (Watch Dog Timer): WDM dùng để phục hồi lại hoạt động của CPU bị treo nguyên nhân • Khối điều khiển ngắt với nguồn ngắt ngồi nguồn ngắt • Bộ lập trình (ghi chương trình lên Flash ROM) cho phép người sử dụng nạp chương trình cho chíp mà khơng cần đến nạp chun dụng • Bộ chia tần số với hệ số chia 12 • cổng xuất nhập với 32 chân - Port 0(P0.0 – P0.7) : Port gồm chân, chức xuất nhập, port bus liệu địa (AD0 – AD7), chức sử dụng 8051 giao tiếp với thiết bị ngồi có kiến trúc Bus vi mạch nhớ… - Port (P1.0 – P1.7): có chức xuất nhập theo bit theo byte Bên cạnh chân P1.5, P1.6, P1.7 dùng để nạp ROM theo chân ISP, chân P1.0 P1.1 dùng cho Timer - Port 2: cổng vào/ra byte cao bus địa sử dụng nhớ - Port 3: chức xuất nhập cịn có chức riêng Bit Tên Chức Năng P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho port nối tiếp P3.2 INT0 Ngắt bên P3.3 INT1 Ngắt bên P3.4 T0 Ngõ vào Timer/counter P3.5 T1 Ngõ vào Timer/counter P3.6 /WD Xung ghi nhớ liệu P3.7 /RD Xung đọc nhớ liệu - Chân /PSEN (Program Store Enable): chân điều khiển đọc chương trình nhớ ngồi, phép đọc byte mã lệnh ROM ngoài./PSEN mức thấp thời gian đọc mã lệnh.Mã lệnh đọc từ nhớ qua bus liệu (port 0) ghi lệnh để giải mã.khi thực chương trình ROM nội /PSEN mức cao - Chân ALE (Address Latch Enable) : ALE tín hiệu điều khiển chốt địa có tần số 1/6 tần số dao động vi điều khiển.Tín hiệu ALE dùng phép vimạch chốt bên 74373,74573 chốt byte địa thấp khỏi bus đa hợp địa chỉ/dữ liệu (Port 0) - Chân /EA(External Access) : tín hiệu cho phép chọn nhớ chương trình nhớ hay ngồi vi điều khiển.Nếu /EA mức cao (nối với VCC),thì vi điềukhiển thi hành chương trình ROM nội.Nếu /EA mức thấp(nối GND) vi điều khiển thi hành chương trình nhớ ngồi - XTAL1, XTAL2: AT89S52 có dao động chíp, thường nối với dao động thạch anh có tần số lớn 33MHz, thông thường 12MHz - VCC, GND: AT89S52 dùng nguồn chiều có dải điện áp từ 4V đến 5,5V cấp qua chân 40 20 b) Cấu trúc bên AT89S52: c) Hoạt động định thời AT89S52 Vi điều khiển AT89S52 có định thời 16 bit timer có chế độ hoạt động, timer có chế độ hoạt động.Các định thời dùng để định khoảng thời gian (hẹn giờ), đếm kiện xảy bên vi điều khiển tạo tốc độ baud cho công nối tiếp vi điều khiển Các ghi định thời: • Các ghi Timer Timer • Thanh ghi chế độ định thời (TMOD) • Thanh ghi TMOD chứa nhóm bit dùng để đặt chế độ làm việc cho Timer Timer Thanh ghi TMOD: GATE C/#T1 M1 M0 GATE0 C/#T M1 Bit Ký hiệu Chức GATE1 Bit điều khiển cổng.Khi set lên 1,bộ định thời hoạt động INT1 mức cao C/#T1 Bit chọn chức đếm định thời 1=đếm kiện 0=định thời khoảng thời gian M1 Bit chọn chế độ thứ M0 Bit chọn chế độ thứ 00 chế độ – Timer 13 bit 01 chế độ – Timer 16 bit 10 chế độ – bit tự động nạp lại 11 chế độ – tách Timer GATE0 Bit điều khiển cổng cho định thời C/#T0 Bit chọn chức đếm định thời cho định thời M0 Cảm biến độ ẩm dht11: Chức năng: dùng để cảm nhận độ ẩm, biến đổi đại lượng vật lý đại lượng khơng có tính chất điện để chuyển thành đại lượng xử lý Hình : Cảm biến độ ẩm Phương pháp nghiên cứu: Sơ đồ khối: KHỐI CẢM BIẾN KHỐI XỬ LÝ KHỐI NGUỒN KHỐI HIỂN THỊ Sơ đồ nguyên lý: Nguyên lí hoạt động Thiết kế hình, với nguyên lý hoạt động đơn giản.Các khối nguồn mạch tạo xung hoạt động cấp nguồn 5V để giúp linh kiện mạch hoạt động đặt biệt vi điều khiển Mạch hoạt động dựa ngun lý: Khi có nguồn ni mạch, vi điều khiển xuất liệu đến cảm biến tương tác với cảm biến sau cảm biến gửi liệu qua vi điều khiển va vi điều khiển xử lý mã hóa sau xuất tín hiệu đến hình LCD Một số hình ảnh sản phẩm: Code chương trình: #include #include sbit lcd_en=P2^6; sbit lcd_rs=P2^7; sbit lcd_d4=P2^5; sbit lcd_d5=P2^4; sbit lcd_d6=P2^3; sbit lcd_d7=P2^2; sbit CTR_DHT11=P3^7; int I_Temp,D_Temp,CheckSum; void delay_us(unsigned int time) { unsigned int i; for(i=0;i>2)&1; lcd_d7=(sudung4bit>>3)&1; } void lcd_guilenh( unsigned char guilenh) { lcd_sudung4bit(guilenh>>4); lcd_hienthi(); lcd_sudung4bit(guilenh); lcd_hienthi(); } void lcd_clear() { lcd_guilenh(0x01); delay_us(10); } void lcd_khoitaoham() { lcd_sudung4bit(0x00); delay_ms(20); lcd_rs=0; lcd_sudung4bit(0x03); lcd_hienthi(); delay_ms(5); lcd_hienthi(); delay_us(100); lcd_hienthi(); lcd_sudung4bit(0x02); lcd_hienthi(); lcd_guilenh(0x28); lcd_guilenh(0x0c); lcd_guilenh(0x06); lcd_clear(); delay_ms(20); } void lcd_vitritro(unsigned char hang, unsigned char cot) { unsigned char vitri; if (!cot) vitri = (0x80 + hang); else vitri = (0xC0 + hang); delay_us(1000); lcd_guilenh(vitri); delay_us(50); } void lcd_kitu(unsigned char kitu) { lcd_rs=1; lcd_guilenh(kitu); lcd_rs=0; } void lcd_chuoikitu(char *s) { while(*s) { lcd_kitu(*s); s++; } } void CTR_Response() { while(CTR_DHT11==1); while(CTR_DHT11==0); while(CTR_DHT11==1); } int CTR_Receive_data() { int i,CTR_dat=0; for (i=0; i