Đề tài Thiết kế bộ đo và khống chế nhiệt độ hiển thị lên màn hình máy vi tính

Kỹ thuật vi điều khiển hiện nay rất phát triển, nó đƣợc ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa. So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó đƣợc tích hợp lại và có khả năng lập trình đƣợc để điều khiển. Nên rất tiện dụng và cơ động. Với tính ƣu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, em chỉ dùng vdk để đo và khống chế nhiệt độ, đồng thời cho hiển thị lên màn hình máy vi tính. Mục đích của đề tài hƣớng đến: tạo ra bƣớc đầu cho sinh viên thử nghiệm những ứng dụng của vdk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến. Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì vậy nhóm rất mong đƣợc sự góp ý của thầy cô và các bạn.

pdf17 trang | Chia sẻ: lvbuiluyen | Lượt xem: 2578 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Đề tài Thiết kế bộ đo và khống chế nhiệt độ hiển thị lên màn hình máy vi tính, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Dt2-k9 Minh – Thế 1 BỘ CÔNG THƢƠNG TRƢỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA : ĐIỆN TỬ ĐỒ ÁN MÔN HỌC ĐỀ TÀI: THIẾT KẾ BỘ ĐO VÀ KHỐNG CHẾ NHIỆT ĐỘ HIỂN THỊ LÊN MÀN HÌNH MÁY VI TÍNH . “Nhiệt độ khống chế được đặt bằng phím nhấn, thao tác khống chế được mô phỏng bằng 3led với 3 màu khác nhau, sai số cho phép là ± 10C”. Giáo viên hướng dẫn: Nguyễn Anh Dũng Sinh viên thực hiện: 1.Mai Xuân Minh 2.Tạ Xuân Thế Dt2-k9 Minh – Thế 2 LỜI NÓI ĐẦU Kỹ thuật vi điều khiển hiện nay rất phát triển, nó đƣợc ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa. So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó đƣợc tích hợp lại và có khả năng lập trình đƣợc để điều khiển. Nên rất tiện dụng và cơ động. Với tính ƣu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, em chỉ dùng vdk để đo và khống chế nhiệt độ, đồng thời cho hiển thị lên màn hình máy vi tính. Mục đích của đề tài hƣớng đến: tạo ra bƣớc đầu cho sinh viên thử nghiệm những ứng dụng của vdk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến. Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì vậy nhóm rất mong đƣợc sự góp ý của thầy cô và các bạn. Dt2-k9 Minh – Thế 3 Mục lục trang Lời nói đầu. ................................................................................................................2 Mục lục. ......................................................................................................................3 Chƣơng I>Tổng quan thiết kế phần cứng cho đồ án. ......................................4 I. sơ đồ khối tổng quát . ..........................................................................4 II. Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động từng khối. ......................................... ............................................5 Chƣơng II >Lập trình cho vi điều khiển. ..........................................................14 1. sơ đồ giải thuật................................................................................... ..14 2. code lập trình. ....................................................................................... Dt2-k9 Minh – Thế 4 CHƢƠNG 1:TỔNG QUAN THIẾT KẾ PHẦN CỨNG CHO ĐỒ ÁN I. SƠ ĐỒ KHỐI TỔNG QUÁT 1.sơ đồ KHỐI CHUYỂN ĐỒI TƢƠNG TỰ => SỐ KHỐI XỬ LÝ TRUNG TÂM: 8051 KHỐI HIỂN THỊ:MVT KHỐI ĐIỀU KHIỂN (khống chế) KHỐI CẢM BIẾN ĐẦU RA ỨNG DỤNG (điều khiển lò nhiệt, cảnh báo,…) Dt2-k9 Minh – Thế 5 2> sơ đồ nguyên lý. II. CÁC VI MẠCH CHÍNH SỬ DỤNG TRONG ĐỒ ÁN 1.trong khối cảm biến: có LM35; 2.Trong khối chuyển đổi: ADC 0804; 3.Trong khối xử lý trung tâm: AT89C52; 4.khối hiển thị : màn hình máy tính. 5.Khối điều khiển (khống chế): hệ thống các phím nhấn. 6.đầu ra ứng dụng: (đơn giản) là các led hiển thị. III. CẤU TẠO VÀ NGUYÊN LÝ HOẠT ĐỘNG CƠ BẢN CỦA TỪNG VI MẠCH. 1> Cảm biến nhiệt LM35. 1.1 Nguyên lý hoạt động chung của IC đo nhiệt độ. Dt2-k9 Minh – Thế 6 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 hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối. Đo tín hiệu điện ta biết đƣợc giá trị của nhiệt độ cần đo. Sự tác động của nhiệt độ tạo ra điện tích tự do và các lỗ trống trong chất bán dẫn. Bằng sự phá vỡ các phân Dt2-k9 Minh – Thế 7 tử, bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất hiện các lỗ trống. Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo quy luật hàm mũ với nhiệt độ. +LM135, LM35 Ngõ ra là điện áp. Độ nhạy 10mv/10C Sai số cực đại 1,50C khi nhiệt độ lớn hơn 1000C. Phạm vi sử dụng :00 C=>1000 C 3> bộ chuyển đổi tƣơng tự-số: ADC 0804; a, cấu tạo ADC 0804 là một bộ chuyển đổi tƣơng tự số. Gồm có 20 chân. DB0-DB7: là 8 chân ra dữ liệu. RD: lối vào đọc WR :lối vào ghi. INTR: lối ra ngắt. CLKR/CLKIN: các lối vào điều khiển xung nhịp. VIN: lối vào analog dƣơng b, sơ đồ c, tính toán và cân chỉnh. Chọn điện trở R6 và tụ C1 cho bộ dao động của ADC0804. R6=10k Ω và C1=15pf. Có đầu ra số: N= 256 xVin.; 5 d, nguyên lý hoạt động ¾ DB0- DB7: các lối ra số, dữ liệu chuyển đổi xuất hiện trên 8bit này. Bộ biến đổi có độ phân giải là 5/256 ¾ RD :là chân điều khiển đọc dữ liệu. RD=0: có dữ liệu lối ra. RD=1: không có dữ liệu lối ra. ¾ WR: bình thƣờng ở mức logic cao, và lối vào này sẽ đƣợc kéo xuống mức thấp, sau đó lại trở về mức cao để bắt đầu quá trình chuyển đổi. Dt2-k9 Minh – Thế 8 ¾ INTR: là lối ra ngắt của bộ biến đổi A/D. 1 sƣờn xung âm đƣợc tạo lên chân này khi quá trình chuyển đổi kết thúc. Lối ra này thƣờng đƣợc sử dụng để tạo ra một ngắt trong vi điều khiển sao cho dữ liệu đã chuyển đổi có thể đƣợc đọc. ¾ ADC 0804 chứa một bộ dao động bên trong và cần có 1 tụ điện và 1điện trở bên ngoài nối chân CLKR và CLKIN để khởi động bộ dao động. ¾ VIN là chân lối vào của điện áp tƣơng tự. ¾ Bít 0 và 1 của ADC phải có điện trở kéo lên, do lối ra bộ điều khiển tại những chân này không có sẵn điện trở kéo lên. Khối giao tiếp với máy tính qua max232. Chức năng truyền dữ liệu biến đổi đƣợc lên máy tính thông qua max232 CÁC BƢỚC CỦA QUÁ TRÌNH CHUYỂN ĐỔI. Đặt WR =RD=0; Bắt đầu biến đổi. Đặt WR=1, trễ( )ms. Phát hiện điểm kết thúc của quá trình biến đổi khi INTR xuống mức thấp. Đọc dữ liệu từ DB0=>DB7. 4> vi điều khiển AT89C52; a, cấu tạo và chức năng các khối của AT89S52. • CPU( CPU centralprocessing unit) bao gồm: 9 Thanh ghi tích lũy A; 9 Thanh ghi tích lũy phụ B; 9 Đơn vị logic học (ALU); 9 Thanh ghi từ trạng thái chƣơng trình; Dt2-k9 Minh – Thế 9 9 Bốn băng thanh ghi; 9 Con trỏ ngăn xếp • Bộ nhớ chƣơng trình( ROM) gồm 8Kbyte Flash. • Bộ nhớ dữ liệu( RAM) gồm 256 byte. • Bộ UART, có chức năng truyền nhận nối tiếp. • 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện. • Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong. • Bộ lập trình( ghi chƣơng trình lên Flash ROM) cho phép ngƣời sử dụng có thể nạp các chƣơng trình cho chíp mà không cần các bộ nạp chuyên dụng. • Bộ chia tần số với hệ số chia là 12. • 4 cổng xuất nhập với 32 chân. b, chức năng các chân của AT89C52 ™ Port 0( P0.0=>P0.7) Port 0 gồm 8 chân, ngoài chức năng xuất nhập, port 0 còn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7), chức năng này sẽ đƣợc sử dụng khi 89c52 giao tiếp với các thiết bị ngoài có kiến trúc Bus nhƣ các vi mạch nhớ, mạch PIO… ™ Port 1( P1.0=>P1.7) Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng nhƣ các Port khác. Port1 có thể xuất nhập theo bit và theo byte. ™ Port 2( P2.0=>P2.7) Port 2 ngoài chức năng là cổng vào/ra nhƣ Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài. Dt2-k9 Minh – Thế 10 ™ Port 3 Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể nhƣ sau: 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 ngoài 0 P3.3 INT1 Ngắt ngoài 1 P3.4 TO Ngõ vào của Timer/counter0 P3.5 T1 Ngõ vào của Timer/counter1 P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài. P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài. ™ Chân /PSEN : là chân điều khiển đọc chƣơng trình ở bộ nhớ ngoài. ™ Chân ALE. ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển. Tín hiệu ALE đƣợc dùng để cho phép vi mạch chốt bên ngoài nhƣ 7473. ™ Chân /EA. Tín hiệu /EA cho phép chọn bộ nhớ chƣơng trình là bộ nhớ trong hay ngoài. EA=1 thì thực hiện chƣơng trình trong RAM nội. EA=0 thực hiện ở RAM ngoài. ™ RST( reset) Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ đƣợc khởi động lại thiết lập ban đầu. ™ XTAL1, XTAL2 2 chân này đƣợc nối song song với thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều khiển. ™ Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển. cấp qua chân 20 và 40. c, sơ đồ AT89C52 trong mạch Dt2-k9 Minh – Thế 11 d, nguyên lý hoạt động +Chân 9 đƣợc nối với mạch reset. Khi nhấn SW1 thì bộ vi điều khiển sẽ đƣợc khởi động lại từ đầu. +điện trở băng: có tác dụng làm điện trở kéo lên nguồn. + chân 18-19 đƣợc nối // với thạch anh 12Mhz. mạch có nhiệm vụ tạo dao động cho vi điều khiển. +chân P2.4=>P2.7 điều khiển led. Khi nhiệt độ đo đƣợc vƣợt qua khoảng nhiệt độ khống chế thì 1 trong 4 đèn led này sẽ sáng. + chân P1.0=>P1.7. giao tiếp với ADC0804. Cổng P0 này có nhiệm vụ đọc nhiệt độ thu đƣợc từ bộ chuyển đổi. +P3.0=>P3.1. giao tiếp với max232 để truyền dữ liệu hiển thị lên máy tính. +P3.5, P3.7 lần lƣợt nối với INTR /RD và /WR của ADC0804. Nhiệm vụ điều khiển hoạt động của bộ chuyển đổi số - tƣơng tự. +P3.2=> P3.3 dùng để nối với các phím nhấn. Có tác dụng để thực hiện các thao tác khống chế nhiệt độ cần đo. Dt2-k9 Minh – Thế 12 6> bộ phím nhấn điều khiển (khống chế) a, sơ đồ mạch b, chức năng: dùng để thiết lập nhiệt độ khống chế. SW2 (đƣợc nối với INT0 ) là phím dùng để đặt nhiệt độ khống chế. SW3 (đƣợc nối với INT1) là phím dùng để tăng giảm nhiệt độ khống chế. SW1 (đƣợc nối với 9) là phím dùng để làm phím reset 7> ứng dụng điều khiển a, sơ đồ mạch b, chức năng: hiển thị khi nhiệt độ đo đƣợc so sánh với nhiệt độ khống chế. Nếu t0 đo > t0khống chế max thì led 1 sáng. Nếu t0 đo<t0 khống chế min thì led 2 sáng. Nếu t0 kcmin< t0 đo< t0 kc max. thì led 3sáng. Đây chỉ là mạch điều khiển đơn giản sử dụng led. Còn trong thực tế có thể ứng dụng nhiều: nhƣ việc khống chế nhiệt độ của lò lung, máy lạnh,… Dt2-k9 Minh – Thế 13 I>sơ đồ giải thuật CHƢƠNG II>LẬP TRÌNH CHO VI ĐIỀU KHIỂN Chƣơng trình chính. START NẠP GIÁ TRỊ ĐẦU Tăng t0 đặt T 0 đo > t0 max Đọc ADC Giảm t0 đặt T 0 đo <t0 min Hiển thị cảnh báo Khối xử lý Hiển thị t0 đo đƣợc Hiển thị t0 đặt Dt2-k9 Minh – Thế 14 II> code chƣơng trình. #include #include sbit led0=P2^0; sbit led1=P2^1; sbit led2=P2^2; sbit led3=P2^3; sbit led_do=P2^4; // nhiet do moi truong < nhiet do khong che sbit led_vang=P2^5; // nhiet do moi truong = nhiet do khong che sbit led_xanh=P2^6; // nhiet do moi truong > nhiet do khong che sbit led_trang=P2^7; sbit adc_intr=P3^5; sbit adc_wr=P3^6; sbit adc_rd=P3^7; int ngat0,ngat1,tong; unsigned char chuc,donvi,nhiet_do,dien_ap,khong_che,i,k; unsigned char M[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; void delay(unsigned int n) // ham tre { unsigned int j; for(j=0;j<n;j++); } void bien_doi_adc(void) // bien doi adc { adc_rd=0; adc_wr=0; delay(2); adc_wr=1; while(!adc_intr); dien_ap=P0; nhiet_do=dien_ap/2; } void hien_thi(unsigned char nhiet_do) // hien thi nhiet do moi truong { if(nhiet_do>=0 && nhiet_do<10) Dt2-k9 Minh – Thế 15 { chuc = 0; donvi = nhiet_do; } if(nhiet_do>=10 && nhiet_do<100) { chuc = nhiet_do/10; donvi = nhiet_do%10; } while(!TI); SBUF=M[chuc]; TI=0; while(!TI); SBUF=M[donvi]; TI=0; while(!TI); SBUF=0x0D; TI=0; if(nhiet_do=100) { printf("ngoai dai do"); } } void main(void) // ham chính { IE=0x85; IT0=IT1=1; khong_che=20; SCON=0x52; // REN =1 DE CHO PHEP TRUYEN DU LIEU TMOD=0x20; // TIMER 1 LÀM VIEC O CHE DO 2 TH1=TL1=-3; // tao toc do baud la 9600 TR1=1; Dt2-k9 Minh – Thế 16 while(1) { tong=0; for (i=0;i<20;i++) { bien_doi_adc(); tong=tong+nhiet_do; } nhiet_do=tong/20; if(ngat0==0) { led_xanh=led_do=led_vang=1; printf("nhiet do moi truong la : "); hien_thi(nhiet_do); } if(ngat0==1||ngat0==2) { bien_doi_adc(); printf("nhiet do khong che la : "); hien_thi(khong_che); if(khong_che < nhiet_do) { led_do=led_vang=1; led_xanh=0; } if(khong_che > nhiet_do) { led_vang=led_xanh=1; led_do=0; } if(khong_che == nhiet_do) { led_do=led_xanh=1; led_vang=0; } } } Dt2-k9 Minh – Thế 17 } void khongche(void) interrupt 0 // khong che nhiet do o 20 do C { led_trang=1; if(ngat0<2) { ngat0++; if(ngat0==1) led_trang=0; else led_trang=1; } else ngat0=0; } void tang_giam(void) interrupt 2 // tang, giam nhiet do khong che { if(ngat0==1) { ngat1=khong_che++; } if(ngat0==2) { ngat1=khong_che--; } }