Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
4,42 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUÂT ̣ MÁY TÍNH XÂY DỰNG MƠ HÌNH LỊ ẤP TRỨNG GVHD: ThS HUỲNH HOÀNG HÀ SVTH : MAI SƠN MSSV : 11119080 SKL 0 4 Tp Hồ Chí Minh, tháng năm 2017 an TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG MƠ HÌNH LỊ ẤP TRỨNG SVTH : MSSV : Khố : Ngành : GVHD: MAI SƠN 11119080 2011-2015 CƠNG NGHỆ KỸ TḤT MÁY TÍNH Th.S HUỲNH HỒNG HÀ Tp Hồ Chí Minh, tháng năm 2017 an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* Tp Hồ Chí Minh, ngày 13 tháng năm 2017 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: MAI SƠN Ngành: CÔNG NGHỆ KỸ THUẬT MÁY TÍNH Giảng viên hƣớng dẫn: Th.S HUỲNH HOÀNG HÀ Ngày nhận đề tài: 21.09.2016 MSSV: 11119080 Lớp: 11119CL1 ĐT: 01669112980 Ngày nộp đề tài: 13.02.2017 Tên đề tài: XÂY DỰNG MƠ HÌNH LỊ ẤP TRỨNG Các số liệu, tài liệu ban đầu: - Giáo trình Vi xử lý, giáo trình thực thành Vi xử lý trƣờng Đại học sƣ phạm kỹ thuật Tp Hồ Chí Minh - Thu thập số liệu từ hệ thống lò ấp trứng thực tế Nội dung thực đề tài: - Thiết kế hệ thống điều khiển lò ấp trứng - Thiết kế hệ thống đo nhiệt độ, độ ẩm DHT11 hiển thị LCD Sản phẩm: Mơ hình lị ấp trứng TRƢỞNG NGÀNH GIẢNG VIÊN HƢỚNG DẪN i an LỜI CÁM ƠN Khơng có thành công mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp ngƣời khác Trong suốt thời gian từ bắt đầu học tập đại học đến nay, em nhận đƣợc nhiều quan tâm, giúp đỡ q Thầy Cơ, gia đình, anh bạn bè khóa anh chị khóa trƣớc Em xin gửi lời cảm ơn đến Thầy Cô Khoa Điện Điện Tử Trƣờng Đại Học Sƣ Phạm Kỹ Thuật Tp HCM với tri thức tâm huyết để truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trƣờng Trong học kỳ này, Khoa tổ chức cho chúng em làm “Đồ Án Tốt Nghiệp” Với hƣớng dẫn bảo tận tình thầy Huỳnh Hoàng Hà, thầy tận tâm hƣớng dẫn chúng em qua buổi học lớp nhƣ buổi nói chuyện, thảo luận mơn học, báo cáo mạch thực tế em hoàn thành xong Để đạt đƣợc kết nhƣ hơm có sƣ định hƣớng , giúp đỡ thầy cho đề tài em nhiều Vì em xin gửi lời cảm ơn chân thành em đến thầy, ngƣời giúp đỡ, hỗ trợ kết báo cáo em ngày hơm ii an TĨM TẮT BẰNG TIẾNG VIỆT Kỹ thuật vi điều khiển phát triển, đƣợc ứng dụng vào nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, đời sống cịn nhiều lĩnh vực khác tạo nhiều bƣớc tiến nhiều lĩnh vực xa hội Ngay trồng trọt, chăn nuôi áp dụng khoa học công nghệ để đạt kết cao So với kỹ thuật số kỹ thuật vi điều khiển nhỏ gọn nhiều đƣợc tích hợp lại có khả lập trình để đƣợc điều khiển nên tiện dụng động Trong nghành cơng nghiệp chăn ni gà ấp trứng gà giống để gà tăng trƣởng tốt trứng nở phụ thuộc nhiều vào nhiệt độ độ ẩm để ấp giống tốt Ngƣời thực đề tài sử dụng DHT 11 đo nhiệt độ độ ẩm hiển thị LCD, điều chỉnh độ ẩm lý tƣởng 37 đến 38 °C độ ẩm 50% Đề tài tạo điều kiện thuận lợi cho ngƣời dùng việc giám sát điều khiển nhiệt độ, độ ẩm trang trại chăn ni Hệ thống thực chức đo nhiệt độ, độ ẩm hiển thị lên hình LCD cho phép ngƣời dùng giám sát điều khiển đƣợc nhiệt độ, độ ẩm lò ấp trứng Để giải vấn đề em nghiên cứu PIC 18F4550, cách viết code kết nói linh kiện với hiển thị kết nghiên cứu LCD Sau thời gian nghiên cứu thực hiện, mạch chạy ổn định nhiệt độ 37 °C đến 38 °C, đèn sáng mờ, động thay đổi theo độ ẩm, sử dụng ngày ứng dụng làm lò ấp trứng khu cơng nghiệp iii an TĨM TẮT BẰNG TIẾNG ANH The current microcontroller technique are very developed, it was applied too many fields of industrial production, automation, life and many other fields have made progress in many areas far from the Assembly Even in the cultivation, livestock also apply science and technology to achieve the highest results In comparison with digital then the microcontroller technique a lot more compact due to integrated and capable of programming to be controlled should be very handy and portable In which the chicken breeding industry or hatching eggs of chickens like to good growth depends very much on the temperature and humidity to the best breed out hamlet The team made the subject using DHT 11 measure temperature and humidity are shown on the LCD, adjustable humidity ideal 37 or 38 poison and humidity of 50% Create favorable conditions for the user in the control temperature monitoring, humidity of farm animals The system can perform the function of measuring the temperature, moisture present show up the LCD screen allows users to monitor and control the temperature and humidity of incubator To solve the problem of the research group on the PIC 18F4550, writing the code says the components together and show the results of research on LCD After a period of research and implementation, veins run stable temperature in the 37° C to 38° C, lamp lights, the engine change according to humidity, circuit can use every day and the application the oven incubators in industrial iv an MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỜI CÁM ƠN ii TÓM TẮT BẰNG TIẾNG VIỆT .iii TÓM TẮT BẰNG TIẾNG ANH iv MỤC LỤC v DANH MỤC CÁC TỪ VIẾT TẮT vvii DANH MỤC CÁC BẢNG BIỂU .viii DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH iix CHƢƠNG 1: TỔNG QUAN 1.1 Giới thiệu tình hình nghiên cứu 1.2 Mơ hình thực tế: 1.2.1 Lị ấp trứng thủ cơng 1.2.2 Lị ấp trứng bán thủ cơng 1.2.3 Lị ấp trứng cơng nghiệp: 1.3 Tính cấp thiết đề tài: 1.4 Mục tiêu nghiên cứu 1.5 Nhiệm vụ nghiên cứu 1.6 Đối tƣợng phạm vi nghiên cứu 1.7 Phƣơng pháp nghiên cứu 1.8 Bố cục Đồ án CHƢƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN 2.1 Vi điều khiển PIC 18F4550 2.1.1 Sơ lƣợc vi điều khiển PIC 18f4550 2.1.2 Giới thiệu module USB PIC 18f4550 2.1.3 Giới thiệu module ADC 10bit PIC 18f4550 2.2 Cảm biến nhiệt độ, độ ẩm DHT11 10 2.2.1 Giới thiệu: 10 2.2.2 Nguyên lý hoạt động: 11 2.3 LCD 16x2 12 2.4 Động DC 14 2.5 IC 7805 15 2.6 Biến áp 15 2.6.1 Cấu tạo biến áp: 15 2.6.2 Nguyên lý hoạt động: 16 2.6.4 Phân loại: 17 2.7 Relay 17 2.8 Các linh kiện khác: 18 CHƢƠNG 3: THIẾT KẾ PHẦN CỨNG 19 3.1 Sơ đồ khối hệ thống 19 3.1.1 Yêu cầu hệ thống 19 3.1.2 Sơ đồ khối chức khối 19 3.1.3 Hoạt động hệ thống 20 3.2 Thiết kế, tính tốn hệ thống 20 3.2.1 Khối xử lý trung tâm: 20 3.2.2 Khối cảm biến: 20 v an 3.2.3 Khối hiển thị: 20 3.2.4 Khối điều khiển: 20 3.2.5 Khối nguồn: 21 3.3 Lƣu đồ giải thuật: 21 3.4 Sơ đồ mạch nguyên lý: 23 CHƢƠNG 4: KẾT QUẢ, SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH, TỔNG HỢP 24 4.1 Hình ảnh phần cứng: 24 4.2 Kết phần cứng: 25 4.3 Nhận xét: 27 CHƢƠNG 5: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 28 5.1 Kết luận: 28 5.2 Hƣớng phát triển: 28 TÀI LIỆU THAM KHẢO 29 PHỤ LỤC 30 Chƣơng trình chính: 30 Thƣ viện DHT 11: 34 Thƣ viện LCD: 36 vi an DANH MỤC CÁC TỪ VIẾT TẮT VĐK: vi điều khiển vii an DANH MỤC CÁC BẢNG BIỂU Bảng 2.1: Bảng cấu hình chân Input Output Bảng 2.2: Chức chân LCD 11 viii an } } else { lcd_putc('\f'); lcd_gotoxy(3, 1); lcd_putc("No response"); lcd_gotoxy(1, 2); lcd_putc("from the sensor"); output_low(out); Output_pin = 1; enable_interrupts(INT_EXT); } chu_ky = 0; } void main() { setup_adc_ports(NO_ANALOGS); setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2); enable_interrupts(INT_EXT); ext_int_edge(L_TO_H); enable_interrupts(GLOBAL); DC_pin = 0; SET_TRIS_C (0x00); Output_pin = ; lcd_init(); Output_pin = 0; cap_nhat(); while(TRUE) { if (chu_ky>100) { cap_nhat(); } } 33 an } #int_ext void ISR() { delay_us(value); output_high(out); delay_us(1000); output_low(out); chu_ky++; } Thư iện DHT 11: #use fast_io (D) // Connection pin between PIC18F4550 and DHT11 sensor #BIT Data_Pin = 0xF84.2 // #BIT Data_Pin_Direction = 0xF96.2 // char message1[] = "Temp = 00.00 C"; char message2[] = "RH = 00.00 %"; short Time_out; unsigned int8 T_byte1, T_byte2, RH_byte1, RH_byte2, CheckSum ; void start_signal(){ Data_Pin_Direction = 0; Data_Pin = 0; delay_ms(18); Data_Pin = 1; delay_us(30); Data_Pin_Direction = 1; } short check_response(){ delay_us(40); if(!Data_Pin){ // Configure connection pin as output // Connection pin output low // Connection pin output high // Configure connection pin as input // Read and test if connection pin is low 34 an delay_us(80); if(Data_Pin){ delay_us(50); return 1; } // Read and test if connection pin is high } } unsigned int8 Read_Data(){ unsigned int8 i, k, _data = 0; // k is used to count bit reading duration if(Time_out) break; for(i = 0; i < 8; i++){ k = 0; while(!Data_Pin){ // Wait until pin goes high k++; if (k > 254) {Time_out = 1; break;} delay_us(1); } delay_us(30); if(!Data_Pin) bit_clear(_data, (7 - i)); // Clear bit (7 - i) else{ bit_set(_data, (7 - i)); // Set bit (7 - i) while(Data_Pin){ // Wait until pin goes low k++; if (k > 254) {Time_out = 1; break;} delay_us(1); } } } return _data; } 35 an Thư iện LCD: #ifndef LCD_C #define LCD_C typedef struct { // This structure is overlayed int1 enable; // on to an I/O port to gain int1 rs; // access to the LCD pins int1 rw; // The bits are allocated from int1 unused; // low order up ENABLE will unsigned int data : 4; // be LSB pin of that port #if defined( PCD ) // The port used will be LCD_DATA_PORT unsigned int reserved: 8; #endif } LCD_PIN_MAP; #if ((defined(use_portb_lcd)) && (use_portb_lcd==TRUE)) #define LCD_DATA_PORT getenv("SFR:PORTB") #endif #if defined( PCB ) /* EN, RS, RW, UNUSED, DATA */ const LCD_PIN_MAP = {0, 0, 0, 0, 0}; const LCD_PIN_MAP LCD_INPUT_MAP = {0, 0, 0, #endif 0, 0xF}; ////////////////////// END CONFIGURATION /////////////////////////////////// #ifndef LCD_ENABLE_PIN #define lcd_output_enable(x) lcdlat.enable=x #define lcd_enable_tris() lcdtris.enable=0 #else #define lcd_output_enable(x) output_bit(LCD_ENABLE_PIN, x) #define lcd_enable_tris() output_drive(LCD_ENABLE_PIN) 36 an #endif #ifndef LCD_RS_PIN #define lcd_output_rs(x) lcdlat.rs=x #define lcd_rs_tris() lcdtris.rs=0 #else #define lcd_output_rs(x) output_bit(LCD_RS_PIN, x) #define lcd_rs_tris() output_drive(LCD_RS_PIN) #endif #ifndef LCD_RW_PIN #define lcd_output_rw(x) lcdlat.rw=x #define lcd_rw_tris() lcdtris.rw=0 #else #define lcd_output_rw(x) output_bit(LCD_RW_PIN, x) #define lcd_rw_tris() output_drive(LCD_RW_PIN) #endif // original version of this library incorrectly labeled LCD_DATA0 as LCD_DATA4, // LCD_DATA1 as LCD_DATA5, and so on this block of code makes the driver // compatible with any code written for the original library #if (defined(LCD_DATA0) && defined(LCD_DATA1) && defined(LCD_DATA2) && defined(LCD_DATA3) && !defined(LCD_DATA4) && !defined(LCD_DATA5) && !defined(LCD_DATA6) && !defined(LCD_DATA7)) #define LCD_DATA4 LCD_DATA0 #define LCD_DATA5 LCD_DATA1 #define LCD_DATA6 LCD_DATA2 #define LCD_DATA7 LCD_DATA3 #endif #ifndef LCD_DATA4 #ifndef LCD_DATA_PORT #if defined( PCB ) #define LCD_DATA_PORT 0x06 //portb 37 an #define set_tris_lcd(x) set_tris_b(x) #else #if defined(PIN_D0) #define LCD_DATA_PORT getenv("SFR:PORTD") #else #define LCD_DATA_PORT getenv("SFR:PORTB") #endif #endif #endif //portd //portb #if defined( PCB ) LCD_PIN_MAP lcd, lcdlat; #byte lcd = LCD_DATA_PORT #byte lcdlat = LCD_DATA_PORT #elif defined( PCM ) LCD_PIN_MAP lcd, lcdlat, lcdtris; #byte lcd = LCD_DATA_PORT #byte lcdlat = LCD_DATA_PORT #byte lcdtris = LCD_DATA_PORT+0x80 #elif defined( PCH ) LCD_PIN_MAP lcd, lcdlat, lcdtris; #byte lcd = LCD_DATA_PORT #byte lcdlat = LCD_DATA_PORT+9 #byte lcdtris = LCD_DATA_PORT+0x12 #elif defined( PCD ) LCD_PIN_MAP lcd, lcdlat, lcdtris; #word lcd = LCD_DATA_PORT #word lcdlat = LCD_DATA_PORT+2 #word lcdtris = LCD_DATA_PORT-0x02 #endif #endif //LCD_DATA4 not defined #ifndef LCD_TYPE #define LCD_TYPE #endif // 0=5x7, 1=5x10, 2=2 lines 38 an #ifndef LCD_LINE_TWO #define LCD_LINE_TWO 0x40 #endif // LCD RAM address for the second line #ifndef LCD_LINE_LENGTH #define LCD_LINE_LENGTH 20 #endif unsigned int8 const LCD_INIT_STRING[4] = {0x20 | (LCD_TYPE