Đồ án Điều khiển hệ thống điện từ xa dùng hồng ngoại

Với yêu cầu thiết kế bộ điều khiển từ xa cho hệ thống điện, chúng em chúng em chọn phương thức thiết kế dùng vi điều khiển để thu tín hiệu hồng ngoại từ điều khiển từ xa dung cho tivi, ở đây chúng em sử dụng điều khiển tivi do no rất rễ sử dụng,rẻ tiền và ít nhiễu so với ta tự thiết kế. Cụ thể ở đây là dùng vi điều khiển PIC16f877A để thu tín hiệu từ điều khiển từ xa của hãng SONY. Do ta phải giải mã tín hiệu của điều khiển từ xa do đó chung em thiết kế thêm module giao tiếp với máy tính để thuận tiện cho quá trình giải mã.

doc16 trang | Chia sẻ: ngtr9097 | Lượt xem: 2235 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Đồ án Điều khiển hệ thống điện từ xa dùng hồng ngoại, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
NỘI DUNG I. ,Đặt vấn đề 4 II. ,Mô tả mạch. 4 III. Giới thiệu các linh kiện sử dụng trong mạch 4 1) Tổng quan PIC16f877A 4 2) Điều khiển từ xa. 5 3) Mắt thu hồng ngoại 6 4) MAX232. 7 IV. Thiết kế mạch 8 1) Mạch nguồn 8 2) mạch nhận 8 4) Mạch điều khiển. 9 5) Mạch giao tiếp máy tính 10 6) Sơ đồ mạch in 11 V. Ngôn ngữ lập trình. 12 VI. Xây dựng chương trình điều khiển 12 1) Sơ đồ thuật toán. 12 2) Chương trình điều khiển 14 VII. Nhận xét 16 VIII. Tài liệu tham khảo: 16 Báo cáo: ĐỒ ÁN VI XỬ LÍ Đề tài: Điều khiển hệ thống điện từ xa dùng hồng ngoại GVHD:Nguyễn tiến Duy SVTH :Đỗ văn Nghĩa Ngô hải Dương Giới Thiệu Do yêu cầu về lĩnh vực tự động hóa trong sinh hoạt ngay càng cao. Các thiết bị sinh hoạt ngày càng hiện đại, do đó việc điều khiển từ xa ngày càng trở lên cần thiết và là một yêu cầu không thể thiếu trong xã hội hiện đại. Do đó chúng em chọn đề tài thiết kế điều khiển hệ thống điện từ xa cho đồ án của mình. Đuợc sự hướng dẫn tận tình của thầy “Nguyễn tiến Duy “ và các thầy trong bộ môn “Kỹ Thuật Máy Tính” chúng em đã hoàn thành đồ án này.Do thời gian và khả năng có hạn do đó khó trãnh khỏi các sai sót khi thiết kế,vì vậy chúng em mong được sự góp ý của các Thầy. Chúng em xin chân thành cảm ơn. ,Đặt vấn đề Với yêu cầu thiết kế bộ điều khiển từ xa cho hệ thống điện, chúng em chúng em chọn phương thức thiết kế dùng vi điều khiển để thu tín hiệu hồng ngoại từ điều khiển từ xa dung cho tivi, ở đây chúng em sử dụng điều khiển tivi do no rất rễ sử dụng,rẻ tiền và ít nhiễu so với ta tự thiết kế. Cụ thể ở đây là dùng vi điều khiển PIC16f877A để thu tín hiệu từ điều khiển từ xa của hãng SONY. Do ta phải giải mã tín hiệu của điều khiển từ xa do đó chung em thiết kế thêm module giao tiếp với máy tính để thuận tiện cho quá trình giải mã. ,Mô tả mạch.  Giới thiệu các linh kiện sử dụng trong mạch Các linh kiện sử dụng trong mạch gồm: PIC16f877A, MAX232,mắt thu hồng ngoại,điều khiển tivi, relay va một số lịnh kiện như điện trở, tụ điện. Tổng quan PIC16f877A  PIC16f877A trong mạch là loại DIP40 chân , 5 cổng vào ra là portA( RA0-RA5), portB(RB0-RB7), portC(RC0-RC7), portD(RD0-RD7), portE(RE0-RE2). Ba bộ định thời Timer0,Timer1,Timer2, 8k bộ nhớ chương trình flash, hỗ trợ giao tiép I2C, RS232, PSP,Có 15 loại ngắt khác nhau. Có 3 khối bộ nhớ trong PIC16f877A: bộ nhớ chương trình, bộ nhớ dữ liệu và khối bộ nhớ EEPROM.bộ nhớ chường trình và bộ nhớ dữ liệu có đường bus riêng vì vậy có thể truy cập tới từng bộ nhớ 1 cách riêng rẽ. Điều khiển từ xa. Điều khiển từ xa cho tivi của SONY Hình dưới đây là cấu trúc mã do điều khiển sony phát đi  Mắt thu hồng ngoại mạch thu được thiết kế với một mắt thu hồng ngoại sẵn có trên thị trường.mắt thu này được thiết kế với bộ lọc thồn một dải, chỉ cho phép tần số sấp sỉ 36KHz đi qua.Bình thường đầu ra của mắt thu ở mức cao, khi nhận được tìn hiệu hồng ngoại ở tần số ~36KHz truyền tới, đầu ra của mắt thu sẽ lập tức trở về về mức logic thấp(0V). Khi hết tín hiệu hồng ngoại đầu ra sẽ lập tức trở về mức logic cao( mức 1).nhờ vào việc đo thời gian ở mức thấp của đầu ra, chúng ta có thể biết được thời gian phát xung tương đương ở bên phát, từ đó suy ra mã được trưyền đi.  Sơ đồ nguyên lý mắt thu hồng ngoại ở mắt thu này chân 1 là (GND),chân 2(VCC), chân 3 la tin hiệu ra.  Sơ đồ kết nối mắt thu với vi điều khiển  MAX232.  Sơ đồ kết nối do nhà sản suât đưa ra   Do mức điện áp ở cổng RS232 là -12,+12 mà vi điều khiển lại làm việc ở mức điện áp 0v-5v do đo phải sử dụng MAX 232 để chuẩn hóa mức điện áp giữa máy tính và VĐK. Thiết kế mạch Phần mền sử dụng để vẽ mạch là orcad 10.0 Mạch nguồn Thiết kế mạch nguồn là một phần rất quan trọng trong thiết kế mạch điện . Vì mạch cần tín hiệu 5V cho VĐK và 12V để đóng mở Relay. Do thời gian có han chúng em sử dụng nguồn máy tính cho mạch. Ưu điểm của nguồn máy tính là ổn định chất lượn tốt, nhưng giá thành thi cao lên không phù hợp với những mạch co quy mô nhỏ. Dưới đây là mạch nguồn 5V đầu vào điện áp 220V rất tiện cho các mạch VDK.  mạch nhận  Mắt nhận rẩt rễ bị nhiễu do nguồn nuôi do đó chúng em thiết thêm mạch lọc RC để lọc những thành phần sóng hài. Ngoài ra ở chân data đưa về PIC mắc thêm tụ 104p để lọc các xung kim. Mạch đóng cắt dung relay  Mạch đóng cắt sử dụng relay sử dụng c1815 mắc kết hợp với TIP41 để kích mở quận hút. Mạch điều khiển.  Mạch điều khiển sử dụng cổng D để đóng cắt các relay (dk1->dk8) hai đường hai chân C6,C7 nối với MAX2323 để giao tiếp máy tính(R_PIC, T_PIC), tín hiệu ra của mắt thu hồng ngoại được đưa vào chân B0. Mạch giao tiếp máy tính Mạch giao tiếp máy tính nối chân R1OUT va T1IN vè RX va TX của PIC. T1OUT và R1IN nối với RX và TX của cổng COM máy tính. Một điểm rất quan trong la chân GND cuả PIC và GND của máy tính phải được nối với nhau và nối vỏ máy.  Sơ đồ mạch in Mạch in được thiết kế một lớp và được làm thủ công.  Ngôn ngữ lập trình. Ngôn ngữ chúng em dùng là CCS để biên dịch. Đây là ngôn ngữ biên dịch C cho PIC ,nó hỗ trợ cho nguời lập trình C rất nhiều thư viện đã xây dựng sẵn. Xây dựng chương trình điều khiển Bảng giá trị của 5 xung âm đầu tiên do điều khiển phát đi.Do độ rộng này sẽ thay đổi do nhiễu mối trường do đó ta chỉ lấy phần giá trị cao mã  0  1  2  3  4  5   1  2  4  2  4  2  4   2  2  2  4  4  2  2   3  2  2  2  2  4  4   4  2  2  2  2  2  2   Sơ đồ thuật toán. Thuật toán điều khiển của chúng em là đo đo rộng của các xung âm của tín hiệu điều khiển phát đi và gán độ rộng của mỗi xung này vào một mảng. nhờ vào việc so sánh giá trị của mảng sau với các gia trị đã có ta sẽ phân biệt được các mã khác nhau.  Chương trình điều khiển #include #use delay(clock=12000000) #fuses HS,NOWDT,NOPROTECT,NOLVP #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #include #bit mode d1.0 int8 count,i,kt,ok,value_h[20]; int16 value[20]; void init(){ setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); set_timer1(0); enable_interrupts(INT_EXT); ext_int_edge(h_TO_l); enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); printf("nghia"); setb=0x01; setd=0x00; for(i=0;i<=6;i++){value[i]=0,value_h[i]=0;} i=0; } void print_code (){ for(i=0;i<=6;i++){ value_h[i]=value[i]>>8; printf("%2u :%2u\n\r",i,value_h[i]); value_h[i]=0; } i=0; delay_ms(3000); } void control(){ for(i=0;i<=8;i++){ value_h[i]=value[i]>>8; } if((value_h[1]==2)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)){printf("%2u\n\r",0);}//buttom1 else if((value_h[1]==4)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)){printf("%2u\n\r",1);}//buttom2 else if((value_h[1]==2)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)){printf("%2u\n\r",2);}//buttom3 else if((value_h[1]==4)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)){printf("%2u\n\r",3);}//buttom4 else if((value_h[1]==2)&&(value_h[2]==2)&&(value_h[3]==4)&&(value_h[4]==2)){printf("%2u\n\r",4);}//buttom5 else if((value_h[1]==4)&&(value_h[2]==2)&&(value_h[3]==4)&&(value_h[4]==2)){printf("%2u\n\r",5);}//buttom6 else if((value_h[1]==2)&&(value_h[2]==4)&&(value_h[3]==4)&&(value_h[4]==2)){printf("%2u\n\r",6);}//buttom7 else if((value_h[1]==4)&&(value_h[2]==4)&&(value_h[3]==4)&&(value_h[4]==2)){printf("%2u\n\r",7);}//buttom8 else if((value_h[1]==2)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==4)){printf("%2u\n\r",8);}//buttom9 else if((value_h[1]==2)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==4)&&(value_h[5]==4)){printf("%2u\n\r",9);}//vol+ else if((value_h[1]==4)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==4)&&(value_h[5]==4)){printf("%2u\n\r",10);}//vol- i=0; delay_ms(500); } #INT_EXT void width(){ disable_interrupts(int_ext); while(i<=6){ while(b0);//cho muc 0 set_timer1(0); while(!b0);//cho muc 1 value[i]= get_timer1(); i++; } control(); enable_interrupts(int_ext); } void main(){ init(); while(1)sleep();//che do tiet kiem nguon } Nhận xét Ưu điểm: Mạch chạy tương đối ổn định, có thể ghếp nối với máy tính để mởi rộng ứng dụng. Nhược điểm: Mạch đóng ngắt dùng relay lên mạch cồng kềnh, cần sử dụng cả điện áp 12V cho mạch. Dùng nguồn máy tính tốn kém cho thiết kế Hướng phát triển: Thiết kế điều khiển đóng ngắt dùng triac.thiết kế mạch in 2 lớp cho bộ điều khiển nhỏ gọn. Dùng sóng Radio để điều khiển. Tài liệu tham khảo: Kỹ thuật ghép nối máy vi tính ( Ngô Diện Tập) Vi xử lý 8051 (Tống Văn On) Các website: www.microchip.com www.PICvietnam.com.vn www.Dientuvietnam.net