Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 110 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
110
Dung lượng
2,6 MB
Nội dung
ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé CHƯƠNG DẪN NHẬP I Đặt vấn đề: Ngày với phát triển công nghiệp vi điện tử, kỹ thuật số hệ thống điều khiển dần tự động hóa.Với kỹ thuật tiên tiến vi xử lý, vi mạch số…được ứng dụng vào lãnh vực điều khiển, hệ thống điều khiển khí thô sơ, với tốc độ xử lý chậm chạm xác thay hệ thống điều khiển tự động với lệnh chương trình thiết lập trước Sau thời gian học tập môn vi xử lý, với dẫn tận tình Thầy, Cô Được đồng ý khoa Điện Tử - Tin Học Trường Cao Đẳng Kỹ Thuật Cao Thắng nhằm ứng ứng kiến thức học vào thực tế qua đồán tốt nghiệp mình,nhóm chúng em định làm đề tài “ NGÔINHÀ TỰ ĐỘNG” II Giới hạn đề tài: Với thời gian gần năm tuần thực đề tài trình độ chuyên môn có hạn, chúng em cố gắng để hoàn thành đồán giải vấn đề sau: Hệ Thống Cửa Tự Động Đo nhiệt độ phòng hiên thị LCD, điều khiển thiết bị cảnh báo Tự động bật đèn sân trời tối III Mục đích nghiên cứu : Mục đích trước hết thực đề tài để hoàn tất chương trình môn học để đủ điều kiện trường Cụ thể nghiên cứu đề tài chúng em muốn phát huy thành ứng dụng vi điều khiển để váo mạch thực tế Nó tập tài liệu tham khảo cho bạn sinh viên khóa sau Ngoài trình thực đề tài hội để chúng em tự kiểm tra lại kiến thức học trường Đồng thời phát huy tính sáng tạo, khả giải vấn đề nhu cầu đặt IV.Đối tượng nghiên cứu - Các phương án điều khiển xử lý liệu cho hệ thống cửa tự động -Tìm hiểu vi xử lý PIC16F877A - Tìm hiểu phương pháp lập trình CCS - Tìm hiểu cảm biến nhiệt độ LM35 SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé CHƯƠNG II : VI ĐIỀU KHIỂN PIC16F877A • • • • • • I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A II : BỘ ĐỊNH THỜI III : MODULE CCP (Capture – Compare – PWM) IV : BỘ BIẾN ĐỔI ADC 10 BIT V : ĐIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO SÁNH ĐIỆN VI: TRÌNH BIÊN DỊCH PCWH 3.227 NGÔN NGỮ LẬP TRÌNH C (CCSC): I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A 21.1 Sơ lược vi điều khiển PIC16F877A: PIC 16F877A dòng PIC phổ biến (đủ mạnh tính năng, 40 chân, nhớ đủ cho hầu hết ứng dụng thông thường) Cấu trúc tổng quát PIC 16F877A sau: - K Flash ROM - 368 Bytes RAM - 256 Bytes EEPROM - ports (A, B, C, D, E) vào với tín hiệu điều khiển độc lập - định thời bits (Timer Timer 2) - Một định thời 16 bits (Timer 1) hoạt động chế độ tiết kiệm lượng (SLEEP MODE) với nguồn xung Clock - bô CCP( Capture / Compare/ PWM) - biến đổi AD 10 bits, ngõ vào - so sánh tương tự (Compartor) - định thời giám sát (WatchDog Timer) 10 - Một cổng song song bits với tín hiệu điều khiển 11 - Một cổng nối tiếp 12 - 15 nguồn ngắt 13 - Có chế độ tiết kiệm lượng 14 - Nạp chương trình cổng nối tiếp ICSP(In-Circuit Serial Programming) 15 - Được chế tạo công nghệ CMOS SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 16 - 35 tập lệnh có độ dài 14 bits 17 - Tần số hoạt động tối đa 20MHz 18 Sơ lược chân PIC 16f877A SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang ĐồÁn Tốt Nghiệp Khóa 2006-2009 SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý GVHD: Thầy Thượng Văn Bé Trang ĐồÁn Tốt Nghiệp Khóa 2006-2009 SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý GVHD: Thầy Thượng Văn Bé Trang ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé PIC16F877A họ vi điều khiển có 40 chân, chân có chức khác nhau.Trong có số chân đa công dụng: chân hoạt động đường xuất nhập chân chức đặc biệt dùng để giao tiếp với thiết bị ngoại vi SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 10 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé Sơ đồ Khối PIC SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 11 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 1.2 Một số điểm đặc biệt CPU: 1.3.1 Dao động: PIC16F877A hoạt động bốn chế độ dao động khác nhau: Trong chế độ LP, XT HS sử dụng thạch anh dao động nối vào chân OSC1 OSC2 để tạo dao động Việc lựa chọn tụ dao động thạch anh dựa vào bảng sau: Lưu ý: Tụ có giá trị lớn tăng tính ổn định dao động làm tăng thời gian khởi động Chế độ dao động RC sử dụng giải pháp tiết kiệm ứng dụng không cần xác thời gian * Cách tính chu kì máy: Ví dụ ta sử dụng thạch anh 10Mhz Khi đó: Tần số dao động thạch anh Fosc = 10Mhz →ChukỳdaođộngcủathạchanhlàTosc=1/Tosc=1/10*106 (s) SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 12 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé Chu kỳ máy: T_instruction = 4*Tosc = 4/10*106(s) = 0.4 µs = 400 ns 1.3.2 Reset: PIC16F877A bị reset nhiều nguyên nhân khác như: 1.3.3 : MCRL PIC16F877A có lọc nhiễu phần Bộ lọc nhiễu phát bỏ qua tín hiệu nhiễu Ngõ vào chân PIC16F877A Khi đưa chân xuống thấp ghi bên VĐK tải giá trị thích hợp để khởi động lại hệ thống (Lưu ý: Reset WDT không làm chân xuống mức thấp) SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 13 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 1.3.4 Interrupts: PIC16F877A có nhiều nguồn ngắt khác Đây số ngắt tiêu biểu : 1- Ngắt xảy chân INT 2- Ngắt Timer0 3- Ngắt Timer1 4- Ngắt Timer2 5- Ngắt thay đổi trạng thái chân PortB 6- Ngắt so sánh điện 7- Ngắt Port song song 8- Ngắt USART 9- Ngắt nhận liệu 10- Ngắt truyền liệu 11- Ngắt chuyển đổi ADC 12- Ngắt hình LCD 13- Ngắt hoàn tất ghi EEPROM 14- Ngắt module CCP 15- Ngắt Module SSP * Các ghi chức ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các ghi nghiên cứu phần sau) SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 14 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé LƯU ĐỒ GIẢI THUẬT SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 100 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé BẮT ĐẦU A2=0,A1=0, A0=1 M1=1, M2=0 A2=0,A1=1, A0=0 M1=0,M2=0 A2=0,A1=1, A0=1 SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý DL=2,M1=0,M2=1 Trang 101 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 5.1.2.4 CHƯƠNG TRÌNH CHO PIC VIẾT BẰNG C: //*******HE THONG CUA TU DONG************** #include #fuses xt,nowdt #use delay(clock=4000000) #use fast_io(a) #use fast_io(e) #use fast_io(d) void main() { set_tris_d(0);output_d(0); set_tris_e(0);output_e(0); set_tris_a(0b111111); while(true) { if((input(PIN_A1)==1)&&(input(PIN_A0)==0)&&(input(PIN_A2)==0)) {output_e(0b00);} if((input(PIN_A1)==0)&&(input(PIN_A0)==0)&&(input(PIN_A2)==1)) {output_e(0b01); output_d(1);} if((input(PIN_A1)==0)&&(input(PIN_A0)==0)&&(input(PIN_A2)==0)) {output_e(0b01);} if((input(PIN_A1)==1)&&(input(PIN_A0)==1)&&(input(PIN_A2)==0)) { delay_ms(2000); output_e(0b10);} if((input(PIN_A1)==0)&&(input(PIN_A0)==1)&&(input(PIN_A2)==0)) { delay_ms(1500); output_e(0b10);} if((input(PIN_A1)==0)&&(input(PIN_A0)==1)&&(input(PIN_A2)==1)) { output_e(0b00);} } } 6.2 MẠCH HIỂN THỊ NHIỆT ĐỘ ĐIỀU KHIỂN QUẠT VÀ CẢNH BÁO CHÁY 6.1 Ứng Dụng Module ADC 6.1.1 Cơ ADC Trong sống chúng ta, tín hiệu mà thường tiếp cận tín hiệu tương tự , ví dụ tiếng nói, dung điện thoại, vv Nếu xử lý SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 102 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé trực tiếp tín hiệu tương tự khó, cần thiết phải chuyển đổi chúng sang dạng số Biến đổi tương tự – số (analog – digital) thành phần cần thiết việc xử lý Dung tin cách điều khiển sử dụng phương pháp số Tín hiệu thực Analog Một hệ thống tiếp nhận liệu phải có phận giao tiếp Analog – Digital (A/D) Các chuyển đổi tương tự số, viết tắt ADC thực hai chức lượng tử hóa mã hóa Lượng tử hóa gán cho mã nhị phân cho giá trị rời rạc sinh trình lượng tử hóa Biến đổi AD có tính chất tỉ lệ Tín hiệu vào Analog biến đổi thành phân số X cách so sánh với tín hiệu tham chiếu Vref Đầu ADC mã phân số Bất kỳ sai số tín hiệu Vref dẫn đến sai số mức ra, người ta cố gắn giữ cho Vref ổn định tốt Nếu ADC xuất mã gồm n bit số mức rời rạc n Đối với quan hệ tuyến tính, tần vào lượng tử hóa theo mức Mỗi mức tín hiệu Analog phân biệt với hai mã nhau, kích thước LSB (Least Significant Bit) Q=LSB= Trong : Q : Lượng tử LSB : Bit có trọng số thấp FS : Giá trị toàn thang Tất giá trị Analog lượng tử Q biểu diễn mã số, mà mã tương ứng với giá trị trung bình lượng tử (có thể hiểu khoảng LSB) gọi mức ngưỡng Các giá trị Analog nằm khoảng từ mức ngưỡng sai biệt ± ½ LSB thể mã, sai số lượng tử hóa Sai số giảm cách tăng số bit mã ADC Sau trình bày nguyên tắc chuyển đổi: 6.1.2 Bước : Lấy mẫu tí hiệu n tương tự ( tức rời rạc hóa tín hiệu tương tự ) cụ thể điều chế biên độ pha (PWM) ADOUTPUT_a(0B111110);C SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 103 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé Tần số lẫy mẫu cao độ xác rời rạc hóa cao ngược lại, tần số lấy mẫu lớn cần lượng liệu lớn cần nhớ lớn xử lý phức tạp Tần số lẫy mẫu >= lần tần số cao tín hiệu ( tránh tượng gập phổ ) – Bước : Lượng tử hóa xung lấy mẫu ( mã hóa ) tức điều chế xung PCM Lượng tử hóa có nghĩa 104ung thước đo với k bậc nhị phân ( tức 2^k khoảng ) để đo xung lấy mẫu ví dụ Từ ta số tương ứng với xung thể qua số nhị phân ví dụ với k = ( tức biểu diễn số dựa vào 8bit ) ta muốn biểu diễn số số nhị phân tương ứng là: 0 0 0 bít MSB làm dấu Máy tính thu nhận giá trị thực việc lưu trữ , xử lý 6.1.3 ADC PIC 16F877A Trên VĐK có biến đổi ADC 10bit, ngõ vào Analog, ngõ vào nối với ngõ vào chuyển đổi Sau chuyển đổi tạo kết 10 bit tương ứng với giá trị Ananlog đầu vào Điện tham chiếu đầu vào lựa chọn phần mềm (từ Vdd, Vss chân AN2, AN3 Module ADC module có khả hoạt động chế độ ngủ Để hoạt động chế độ ngủ Sleep, xung clock cung cấp cho ADC phải nhận từ dao động nội RC ADC Một ADC gồm có: 1• Ngõ vào VIN 2• Điện áp chuẩn VREF 3• Các bit ngõ Quan hệ đại lượng mô tả sau: N=(VIN / VREF).NMax Với: N : Chuyển đổi thập phân bit ngõ NMax :Giá trị thập phân lớn nhât ngõ Nmax phụ thuộc vào số lượng bit ngõ ADC SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 104 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé Ví dụ :sử dụng ADC bit giá trị Nmax =28 – =255 Khi : N=(VIN / VREF).255 6.2 Sơ đồ nguyên lý: VớiVcc=5V.BiếntrởVR=10k SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 105 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 6.2.1 Mạch nguyên lý U2 LC D LM 162ABC HI LCD LMB 162ABC HI R8 3 10 11 12 13 14 15 16 R3 10K Vdd Vee Vss RS RW E RB0 RB1 RB2 R B3 RB4 RB5 RB6 RB7 BLA BLK 5K 1 VS+ 15 16 17 18 23 24 25 26 LM 35 DZ C 33P 13 O S C /C L K IN M H z 14 33P O S C /C L K O U T 12 31 VSS VSS R D /P S P R D /P S P R D /P S P R D /P S P R D /P S P R D /P S P R D /P S P R D /P S P 19 20 21 22 27 28 29 30 K SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Q U A T (5 V ) LS2 R7 100 D3 4148 R5 MACH NHIÊT ÐÔ ÐIÊU KHIÊN & CANH BAO Q1 C 1815 11 VD D 32 VDD P IC F 7 A D2 4148 R4 R E /R D * /A N R E /W R * /A N R E /C S * /A N LS1 R6 100 HI C2 Y1 R C /T O S O /T C K I R C /T O S I/C O U T R C /C C P R C /S C K /S C L R C /S D I/S D A R C /S D O R C /T X/C K R C /R X/D T HI GND VOUT R B /IN T RB1 R A /A N RB2 R A /A N R B /P G M R A /A N /V R E F -/C V R E F R B R A /A N /V R E F + RB5 R A /T O C K I/C O U T R B R B /P G C R A /A N /S S */C O U T R B /P S P 7 SW RESET M C L R */V P P 0 HI U3 33 34 35 36 37 38 39 40 HI U1 Q2 C 1815 K B A O _ Ð O N G (5 V ) Trang 106 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 6.2.2 Nguyên lý hoạt động Mạch sử dụng cảm biến nhiệt độ LM35 DZ, khoảng nhiệt đo từ -55 độC đến 100 độC Đáp ứng ngõ cảm biến điện áp, Lm 35DZ phân cực ngõ 10 mV/ 1độC tương ứng với nhiệt độ môi trường Mạch sử dụng ADC 10 bit PIC 16f877A: ADC ( Analog digital convert ) chuyển đổi tín hiệu tương tự sang tín hiệu số ADC có nhiều độ phân giải khác nhau, tuỳ thuộc vào số bít số mà biến đổi sang digital mà ta có ADC 8bit, ADC 10bit… số bít lớn độ phân giải cao , tín hiệu chuyển đổi xác ADC thường sử dụng 8bit 10 bit Cách chuyển đổi: mạch sử dụng ADC 10 bit mã hoá 1023 khoảng lượng tử.giá trị bậc lượng tử phụ thu6ộc vào điện áp tham chiếu.Trong mạch sử dụng điện áp tham chiếu 5V, nên giá trị bậc 1023/5=5mV Vậy ứng với nhiệt độ tặng 1độ C ADC tăng bậc lượng tử Giá trị nhiệt môi trường cảm biến LM35DZ chuyển thành tín hiệu điện tương ứng dạng tương tự chuyển thành tín hiệu số qua chuyển đổi ADC tín hiệu ngõ hiển thi len hình LCD Với việc đặt trước giá trị cho ADC ( tương ứng với nhiệt độ ) để PIC xuất tín hiệu điều khiển quạt cảch báo.Trong mạch đặt giá trị nhiệt độ 60độ C thí phát tín hiệu cảch báo,Nhiệt độ từ 39 độC đến 60 độC bật quạt SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 107 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 6.2.3 LƯU ĐỒ GIẢI THUẬT BẮT ĐẦU CẶP NHẬT NHIỆT ĐỘ HIỂN THỊ LCD NHIỆT ĐỘ ĐẶT TRƯỚC ĐIỀU KHIỂN THIẾT BỊ SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 108 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé 6.2.4 CHƯƠNG TRÌNH VIẾT CHO MẠCH: //*****************HIEN THI LCD************************* //***PORTB DU LIEU,PORTE DIEU KHIEN,AN0 LAY MAU*** //******************************************************** #include #fuses xt,nowdt #device *=16 adc =10 #use delay (clock=4000000) #use fast_io(e) #use fast_io(b) #use fast_io(d) #bit rs = 0x09.0 #bit rw = 0x09.1 #bit e = 0x09.2 #byte LCD = 0X06 const char line_1[ ]="NHIET DO TRONG PHONG #"; const char line_2[ ]="0123456789"; const char line_3[]="HIEN CO:#"; const char line_4[]=" DO C#"; int i,b,a,d,c,adc; //********************************************** void command() { rs = 0; rw =0; e=1; e=0; delay_ms(1); } //********************************************** void write_data() { rs =1; RW = 0; e=1; e=0; delay_ms(1); } //********************************************** void dislay() { adc=read_adc(); SVTH: Nguyễn Thanh Huy & Hoàng Cao Quý Trang 109 ĐồÁn Tốt Nghiệp Khóa 2006-2009 GVHD: Thầy Thượng Văn Bé adc=adc/2; d=adc%10;//hang don vi c=adc/10; c=c%10;//hang chuc lcd=0xc9; command(); lcd = line_2[c]; write_data(); delay_us(50); lcd=line_2[d]; write_data(); delay_us(50); } void dieu_khien() { adc=read_adc (); adc=adc/2; if((adc>39)&&(adc=60) {output_d(0b00000010);} if((adc=25)) {output_d(0b00000000);} if(adc