MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) .................................. MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) .................................. MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) .................................. MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) .................................. MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) .................................. MẠCH đo mực nước DÙNG PIC (có code và sơ đồ mạch) ..................................
Đề tài: Mạch đo mực nước ĐỒ ÁN MẠCH ĐO MỰC NƯỚC DÙNG PIC Đề tài: Mạch đo mực nước MỤC LỤC Đề tài: Mạch đo mực nước DANH MỤC CÁC HÌNH VẼ Đề tài: Mạch đo mực nước DANH MỤC BẢNG BIỂU Bảng 2.2.1: Chức chân .9 Bảng 2.2.2-1:Sơ đồ chân SRF04 .12 Bảng 2.2.3: Sơ đồ chân LCD 14 Đề tài: Mạch đo mực nước CHƯƠNG 1: GIỚI THIỆU 1.1 Giới thiệu chung Ngày ta có cách thiết bị điều khiển bị động dựa vào tác động thay đổi bên ngồi Nhưng điều chưa đủ, Chúng ta cần có thiết bị tự chuẩn đoán, dự báo để điều khiển thiết bị cách thơng minh 1.2 Mục đích thực đề tài Bằng cách sử dụng sử dụng PIC16F877A linh kiện, gồm điện trở, tụ điện, LCD 16x02 cảm biến siêu âm SRF-04 Ta dễ dàng tạo thiết bị đo mực nước 1.3 Nhiệm vụ đề tài Thiết kế mạch đo mực nước Sử dụng PIC16F877A SRF-04 để đo khoảng cách xuất liệu LCD Xây dựng phần cứng hệ thống Đề tài: Mạch đo mực nước CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG 2.1 Thiết kế sơ đồ khối Hình 2.1: Sơ đồ khối mạch Khối SRF-04: có chức đo khoảng cách từ mạch tới vật cản đưa giá trị khối vi điều khiển Khối điều khiển: Có chứa vi điều khiển PIC16F877A Nhận tín hiệu từ khối cảm biến đưa về, cho hiển thị LCD Khối LCD: hiển thị thông tin từ khối khối điều khiển đưa tới Khối nguồn: có chức biến đổi dòng soay chiều 220v thành dòng chiều cung cấp cho khối hoạt động Nguyên lý hoạt động: Khi PÍC6F877A nhận tín hiệu từ SRF-04 đưa về, khối vi điều khiển xử lý tính tốn khoảng cách từ SRF-04 tới vật thể gửi tín hiệu cho LCD hiển thị 2.2 Giới thiệu linh kiện 2.2.1 Vi điều khiển PIC PIC16F877A có 40/44 chân với phân chia cấu trúc sau : + Có port xuất/nhập + Có kênh chuyển đổi A/D 10-bit + Có PWM + Có định thời: Timer0, timer1 timer2 Đề tài: Mạch đo mực nước + Có giao tiếp truyền nối tiếp: chuẩn RS 232, I2C… + Có giao tiếp LCD Hình 2.2.1: Sơ đồ chân hình dạng PIC 16F877A Bảng 2.2.1: chức chân Chân Tên Đề1tài: Mạch đo/V mực nước PP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI/C1OUT RA5/AN4/ RE0/ RE1/ /AN6 10 RE2/ /AN7 11 VDD 12 VSS 13 OSC1/CLKI 14 OSC2/CLKO 15 RC0/T1 OCO/T1CKI 16 RC1/T1OSI/CCP2 17 RC2/CCP1 /C2OUT /AN5 Chức : Hoạt động Reset mức thấp - VPP : ngõ vào áp lập trình - RA0 : xuất/nhập số - AN0 : ngõ vào tương tự - RA1 : xuất/nhập số - AN1 : ngõ vào tương tự - RA2 : xuất/nhập số - AN2 : ngõ vào tương tự - VREF -: ngõ vào điện áp chuẩn (thấp) A/D - RA3 : xuất/nhập số - AN3 : ngõ vào tương tự - VREF+ : ngõ vào điện áp chuẩn (cao) A/D - RA4 : xuất/nhập số - TOCKI : ngõ vào xung clock bên cho timer0 - C1 OUT : Ngõ so sánh - RA5 : xuất/nhập số - AN4 : ngõ vào tương tự - SS : ngõ vào chọn lựa SPI phụ - C2 OUT : ngõ so sánh - RE0 : xuất nhập số - RD : điều khiển việc đọc port nhánh song song - AN5 : ngõ vào tương tự - RE1 : xuất/nhập số - WR : điều khiển việc ghi port nhánh song song - AN6 : ngõ vào tương tự - RE2 : xuất/nhập số - CS : Chip lựa chọn điều khiển port nhánh song song - AN7 : ngõ vào tương tự Chân nguồn PIC Chân nối đất Ngõ vào dao động thạch anh xung clock bên - OSC1 : ngõ vào dao động thạch anh xung clock bên Ngõ vào Schmit trigger cấu tạo chế độ RC ; cách khác CMOS - CLKI : ngõ vào nguồn xung bên ngồi Ln kết hợp với chức OSC1 Ngõ vào dao động thạch anh xung clock - OSC2 : Ngõ dao động thạch anh Kết nối đến thạch anh cộng hưởng - CLKO : chế độ RC, ngõ OSC2, tần số OSC1 tốc độ chu kỳ lệnh - RC0 : xuất/nhập số - T1OCO : ngõ vào dao động Timer - T1CKI : ngõ vào xung clock bên Timer - RC1 : xuất/nhập số - T1OSI : ngõ vào dao động Timer compare 2, ngõ - CCP2 : ngõ vào Capture 2, ngõ ra PWM2 - RC2 : xuất/nhập số - CCP1 : ngõ vào Capture 1, ngõ compare 1, ngõ PWM1 Đề tài: Mạch đo mực nước 2.2.2 Cảm biến siêu âm SRF04 SRF04 cảm biến siêu âm dung để đo khoảng cách tới vật cản Khoảng cách đo: 3cm-4cm Ứng dụng: chống trộm, đo mực nước, robot dò đường…… Hình 2.2.2-1: SRF04 2.2.2.1 Thông số kĩ thuật SRF04 + Nguồn cung cấp: 5V DC + Dòng: 30mA (Max 50mA) + Tần số hoạt động: 40KHz + Khoảng cách lớn đo được: 6m + Khoảng cách nhỏ đo được: cm + Góc quét: 45 ° [3] Bảng 2.2.2chân 2.2.2.2 Sơ đồ chân Chân Vcc Trigger Echo GND Chức Nguồn 5V Chân kích phát song âm Chân phát song âm dội lại Nguồn GND 1: Sơ đồ SRF04 2.2.2.3 Giao tiếp với vi điều khiển • Đo khoảng cách cảm biến siêu âm SRF04 đo thời gian chân Echo mức cao • Để đo khoảng cách ta làm bước sau: + Kích chân Trigger: xuất mức chân Trigger delay tối thiểu 10ms + Sau đợi chân Echo lên mức cao + Khi chân Echo lên mức cao, kích hoạt Timer + Khi chân Echo xuống mức thấp (hoặc chương trình xử lý ngắt), dừng Timer tính tốn giá trị từ Timer, sau suy khoảng cách + Reset giá trị đếm cho Timer, chuẩn bị lần đo Đề tài: Mạch đo mực nước 2.2.2.4 Cách tính khoảng cách từ thời gian đo d Hình 2.2.2-2: Khoảng cách từ SRF04 tới vật Gọi S quãng đường song âm S= x d Gọi V vận tốc song âm V=344m/s = 34400cm/s V=0.0344m/us Gọi t thời gian truyền ta có: Như vậy: D = t/58 S=2xd=Vxt D = V x t/2 = 0.0344 x t/2 = (t/58) 2.2.3 LCD 16x02 Trong đồ án, khối hiển thị sử dụng LCD 16x02 LCD viết tắt từ Liquid Crystal Display nhiều thiết bị điện tử sử dụng Là loại hiển thị cấu tạo tế bào ( điểm ảnh) chứa tinh thể lỏng có khả thay đổi tính phân cực ánh sáng thay đổi cường độ ánh sáng truyền qua kết hợp với kính lọc phân cực Ưu điểm phẳng, cho hình ảnh sáng, chân thật tiết kiệm lượng Hình 2.2.3: LCD 16x02 10 Đề tài: Mạch đo mực nước Chức Số thứ tự chân Tên Ground Nguồn cho LCD Tương phản Vss(GND) Trạng Thái Logic - Vdd(Vcc) - 5V Vee RS RW E 10 11 12 13 14 D0 D1 D2 D3 D4 D5 D6 D7 1 Từ xuống 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0-Vdd D0-D7: Lệnh D0-D7:Dữ liệu Ghi (Từ IC vào LCD) Đọc (Từ LCD vào IC) Vơ hiệu hóa LCD LCD hoạt động Bắt đầu ghi/đọc Bit LSB Bit Bit Bit Bit Bit Bit Bit MSB Điều khiển LCD Dữ liệu/lệnh Bảng 2.2.3: Sơ đồ chân LCD 11 Mô Tả 0V Đề tài: Mạch đo mực nước CHƯƠNG 3: PHẦN MỀM 3.1 Lưu đồ hoạt động Hình 3.1: Lưu đồ hoạt động 12 Đề tài: Mạch đo mực nước 3.2 Mô Hình 3.2: Mạch mơ proteus 3.3 Thi cơng mạch Hình 3.3: Mạch in 13 Đề tài: Mạch đo mực nước CHƯƠNG 4: KẾT LUẬN 4.1 Kết luận Sau thời gian tìm hiểu, nghiên cứu, tham khảo nhiều tài liệu hướng dẫn thầy cô, em thực xong đề tài : ‘‘Mạch đo mực nước Việc hoàn thành đề tài với nội dung mục tiêu đề ban đầu đem lại cho em thực lượng kiến thức bổ ích, thiết thực có khả ứng dụng thực tế Sau thời gian thực đồ án, em hồn thành cơng việc sau : • Xây dựng, thiết kế thi cơng mạch • Tìm hiểu vầ thiết kế mạch 4.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI Đề tài ‘‘mạch đo mực nước” thực mơ hình thí nghiệm Để đưa đề tài vào áp dụng thực tiễn đời sống sản xuất cần phải nâng cấp mở rộng hệ thống Ngoài ra, dựa vào ứng dụng tầm khả hoạt động , phát triển thành đề tài khác hệ thống ổn định lò nhiệt, hệ thống ổn định áp suất…… 14 Đề tài: Mạch đo mực nước Tài liệu tham khảo [1] Giáo trình vi điều khiển: 123doc.org //document/1250977-giao-trinh-vi-dieu-khienpic-16f877a.htm [2] Vi điều khiển PIC16f877A: tailieu.tv/tai-lieu/vi-dieu-khien-pic16f877a-17967/ [3] http://mualinhkien.vn/san-pham/34/cam-bien-sieu-am-srf04.html [4] Hocavr.com 15 Đề tài: Mạch đo mực nước PHỤ LỤC #define LCD_EN #define LCD_RS PIN_D1 PIN_D0 #define LCD_D4 #define LCD_D5 #define LCD_D6 #define LCD_D7 PIN_D7 PIN_D6 PIN_D5 PIN_D4 // misc display defines#define Clear_Scr 0x01 // prototype statements #separate void LCD_khoitao (void); #separate void LCD_thietlap (unsigned int cX); #separate void LCD_VIETKITU (unsigned int cX); #separate void LCD_GUILENH (unsigned int cX); #separate void LCD_Kichhoatxung (void); #separate void LCD_SetData (unsigned int cX); #use standard_io (B) #use standard_io (A) //khoi tao LCD********************************************** #separate void LCD_khoitao (void) { LCD_SetData (0x00); delay_ms (200); output_low (LCD_RS); LCD_SetData (0x03); L CD_PulseEnable (); LCD_Kichhoatxung (); LCD_Kichhoatxung (); LCD_SetData (0x02); LCD_Kichhoatxung (); LCD_GUILENH (0x2C); LCD_GUILENH (0X0C); LCD_GUILENH (0x06); LCD_GUILENH (0x01); } 16 Đề tài: Mạch đo mực nước #separate void LCD_thietlap (unsigned int cX) { LCD_SetData (swap ( cX ) | 0x08); LCD_Kichhoatxung (); LCD_SetData (swap (cX)); LCD_Kichhoatxung (); } #separate void LCD_VIETKITU (unsigned int cX) { output_high (LCD_RS); LCD_GUILENH (cX); output_low (LCD_RS); } #separate void LCD_GUILENH (unsigned int cX) { LCD_SetData (swap (cX)); /* send high nibble */ LCD_Kichhoatxung (); LCD_SetData (swap (cX)); /* send low nibble */ LCD_Kichhoatxung (); } #separate void LCD_Kichhoatxung (void) { output_high (LCD_EN); delay_us (3); // was 10 output_low (LCD_EN); delay_ms (3); // was } #separate void LCD_SetData (unsigned int cX) { output_bit (LCD_D4, cX & 0x01); output_bit (LCD_D5, cX & 0x02); output_bit (LCD_D6, cX & 0x04); output_bit (LCD_D7, cX & 0x08); } #DEFINE #DEFINE TRIGGER PIN_C4 ECHO PIN_C5 FLOAT KC1, KC2; UNSIGNED INT32 I, GT_TRAN, K,KQ; 17 Đề tài: Mạch đo mực nước #int_timer1 void interrupt_timer1() { GT_TRAN++; } VOID TAO_XUNG_TRIGGER() // tao xung de day tin hieu ngoai { DELAY_MS(50); OUTPUT_HIGH(TRIGGER); DELAY_MS(1); OUTPUT_LOW(TRIGGER); // kich muc thap thi tao duoc xung SET_TIMER1(0); //chuong trinh ngat reset ve WHILE(!(INPUT(ECHO))); SETUP_TIMER_1(T1_INTERNAL); WHILE(INPUT(ECHO)); KC1 = GET_TIMER1(); SETUP_TIMER_1(T1_DISABLED); // khong cho doc gia tri timer } VOID SETUP_SRF04() { SETUP_TIMER_1(T1_DISABLED); ENABLE_INTERRUPTS(GLOBAL); ENABLE_INTERRUPTS(INT_TIMER1); K=1; } // cho phép ngat // cho phep ngat timer VOID DOC_SRF04() { KC2=0; // reset gia tri FOR(I=0;I