Đồ án Mạch điều khiển các thiết bị trong nhà

Thiết kế hệ thống điều khiển các thiết bị trong nhà(quạt, máy bơm nước, tivi, đèn) dùng vi điều khiển thông qua máy vi tính. Hệ thống bao gồm: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Khi tác động vào các nút ON hoặc OFF trên khối điều khiển thì tương ứng với nó là việc cấp hoặc ngắt nguồn cho các thiết bị sử dụng. Khi tín hiệu được truyền đi, sau một thời gian cảm biến sẽ nhận tác động và báo lại cho máy tính biết là vi điều khiển đã nhận được thông tin hay chưa. Nếu chưa nhận được máy tính sẽ truyền lại thông tin đó lần nữa, khi nào vi điều khiển nhận được mới thôi. Quy trình thực hiện ý tưởng Bước 1: Nghiên cứu & khảo sát PIC16F876A, tạo giao diện trên Visuabasic 6.0. Bước 2: Sau khi đã nghiên cứu và khảo sát xong chúng ta bắt đầu thực hiện xây dựng mạch theo đúng nhiệm vụ của đề tài. Xây dựng các khối: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Việc truyền và nhận dữ liệu từ máy tính và vi điều khiển như thế nào chính là vấn đề mà chúng ta cần quan tâm. Bước 3: Vẽ mạch thực hiện thiết kế mạch in (board) mục đích bố trí linh kiện hợp lý từ sơ đồ trải (sơ đồ nguyên lý ) mục đích giảm kích thước mô hình, đề tài được thực hiện trên phần mềm Eagle. Từ các bước trên ta có thể bắt đầu tiến hành thực hiện viết thuyết minh và thực hiện ý tưởng.

doc41 trang | Chia sẻ: tuandn | Lượt xem: 3601 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án Mạch điều khiển các thiết bị trong nhà, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜI NÓI ĐẦU Khoa học kỹ thuật ngày càng phát triển mạnh mẽ, kỹ thuật điện tử cũng được chú trọng phát triển nhiều hơn. Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đời sống xã hội ngày càng phát triển dựa trên những ứng dụng của khoa học vào đời sống. Vì vậy mà công nghệ điện tử mang tính tự động ngày càng được ứng dụng rộng rãi. Sự phát triển của máy tính đã mở rộng các ứng dụng của vi điều khiển. Các bộ vi điều khiển với đa tính năng đang đựơc ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị được điều khiển tự động, từ các thiết bị văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiện nghi cho con người trong thời đại công nghiệp hoá, hiện đại hoá. Vì vậy việc ghép nối giữa máy tính và vi điều khiển ngày càng trở lên quan trọng. Để ứng dụng môn Ghép nối máy tính và giao diện vào thực tế, sau một thời gian nghiên cứu học tập dưới sự giảng dạy của các thầy cô giáo trong khoa về kiến thức chuyên ngành, đồng thời cùng với sự giúp đỡ nhiệt tình của thầy Phạm Ngọc Hưng, chúng em đã tiến hành thiết kế và hoàn thành đề tài: “Mạch điều khiển các thiết bị trong nhà”. Với sự lỗ lực của bản thân nhưng do thời gian, kiến thức và kinh nghiệm của chúng em còn hạn chế nên không thể tránh khỏi những sai xót. Chúng em rất mong nhận được sự giúp đỡ và đóng góp ý kiến của thầy cô cùng các bạn để đồ án được hoàn thiện hơn. Chúng em xin chân thành cảm ơn! Hưng Yên, tháng 12 năm 2008 Nhóm sinh viên thực hiện: 1. Trần Thị Hạt 2. Nguyễn Thị Thắm 3. Bùi Quyết Thắng 4. Phạm Thị Xoa NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Hưng Yên,tháng 12 năm 2008 Giáo viên hướng dẫn ................................ MỤC LỤC Phần I: Lý thuyết tổng quan................................................................................................5 I.Tổng quan về VĐK PIC16F876A.........................................................................5 1. Giới thiệu họ vi điều khiển PIC................................................................5 2. Vi điều khiển PIC 16F876A.....................................................................5 II.Giao tiếp cổng nối tiếp ......................................................................................19 1. Cấu trúc cổng nối tiếp.............................................................................19 2. Truyền thông giữa hai nút.......................................................................22 3. Truy xuất trực tiếp thông qua cổng..........................................................24 Phần II. Thiết kế phần cứng .............................................................................................28 I.Sơ đồ khối và chức năng các khối......................................................................28 1. Sơ đồ khối..............................................................................................28 2. Chức năng các khối................................................................................28 II.Sơ đồ nguyên lý..................................................................................................31 Kết luận.............................................................................................................................32 Ý TƯỞNG THIẾT KẾ Thiết kế hệ thống điều khiển các thiết bị trong nhà(quạt, máy bơm nước, tivi, đèn) dùng vi điều khiển thông qua máy vi tính. Hệ thống bao gồm: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Khi tác động vào các nút ON hoặc OFF trên khối điều khiển thì tương ứng với nó là việc cấp hoặc ngắt nguồn cho các thiết bị sử dụng. Khi tín hiệu được truyền đi, sau một thời gian cảm biến sẽ nhận tác động và báo lại cho máy tính biết là vi điều khiển đã nhận được thông tin hay chưa. Nếu chưa nhận được máy tính sẽ truyền lại thông tin đó lần nữa, khi nào vi điều khiển nhận được mới thôi. Quy trình thực hiện ý tưởng Bước 1: Nghiên cứu & khảo sát PIC16F876A, tạo giao diện trên Visuabasic 6.0. Bước 2: Sau khi đã nghiên cứu và khảo sát xong chúng ta bắt đầu thực hiện xây dựng mạch theo đúng nhiệm vụ của đề tài. Xây dựng các khối: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Việc truyền và nhận dữ liệu từ máy tính và vi điều khiển như thế nào chính là vấn đề mà chúng ta cần quan tâm. Bước 3: Vẽ mạch thực hiện thiết kế mạch in (board) mục đích bố trí linh kiện hợp lý từ sơ đồ trải (sơ đồ nguyên lý ) mục đích giảm kích thước mô hình, đề tài được thực hiện trên phần mềm Eagle. Từ các bước trên ta có thể bắt đầu tiến hành thực hiện viết thuyết minh và thực hiện ý tưởng. PHẦN I: LÝ THUYẾT TỔNG QUAN I. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 1. Giới thiệu họ vi điều khiển PIC PIC là viết tắt của” Programable Intelligent Computer”, tạm dịch là “ máy tính thông minh khả trình” của hãng Microchip. Hiện tại ở Việt Nam và trên thế giới sử dụng PIC khá rộng rãi. Các tính năng đa dạng họ vi điều khiển PIC cũng như các công cụ hỗ trợ lập trình cho họ vi điều khiển PIC không ngừng được cải tiến và phát triển đã tạo ra những ứng dụng vượt trội của PIC so với các họ vi điều khiển khác. Các kí hiệu của họ vi điều khiển PIC: PIC 12xxxx: độ dài lệnh 12 bit PIC 16xxxx: độ dài lệnh 14 bit PIC 18xxxx: độ dài lệnh 16 bit C: PIC có bộ nhớ EPROM ( chỉ có 16C84 là EEPROM) F: PIC có bộ nhớ Flash LF: PUC có bộ nhớ flash hoạt động ở điện áp thấp LV: tương tự như LF Bên cạnh đó có một số vi điều khiển có kí hiệu 16Fxxx là EEPROM, nếu có thêm chữ A ở cuối là flash (ví dụ 16F877 là EEPROM, 16F877A là flash). Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC. Ở Việt Nam phổ biến nhất là các họ Vi điều khiển PIC do hãng Microchip sản xuất. 2. Vi điều khiển PIC 16F876A 2.1. Mô tả cấu trúc PIC 16F876A thuộc họ 16F87x sử dụng công nghệ tích hợp cao RISC CPU, có thể lập trình với 35 câu lệnh đơn giản. Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ một số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh. Tốc độ hoạt động xung đồng hồ vào là DC-20MHz với chu kì lệnh thực hiện trong 200ns. Bộ nhớ chương trình Flash 8Kx14 words. Bộ nhớ Ram là 368x8 bytes, bộ nhớ dữ liệu EFPROM 256x8 bytes. Khả năng của bộ vi xử lí này : + Khả năng ngắt (lên tới 14 nguồn ngắt trong và ngắt ngoài) + Ngăn nhớ Stack được phân chia làm 8 mức + Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp. + Nguồn khởi động lại (POR). + Bộ tạo xung thời gian (PWRT) và bộ tạo dao động (OST) + Bộ đếm xung thời gian (WDT) với nguồn dao động trên chip (nguồn dao động RC) hoạt động đáng tin cậy. + Có mã chương trình bảo vệ. Có bảng lựa chọn dao động + Phương thức cất giữ SLEEP. + Công nghệ CMOS FLASH/EEPROM nguồn mức thấp, tốc độ cao. + Thiết kế hoàn toàn tĩnh. Mạch chương trình nối tiếp có hai chân. + Xử lý đọc/ghi tới bộ nhớ chương trình. + Dải điện thế hoạt động rộng: 2.0V ÷ 5.5V. Nguồn sử dụng hiện tại 25mA. + Dãy nhiệt độ công nghiệp và thuận lợi. + Công suất tiêu thụ thấp: < 0.6mA với 5V, 4MHz 20µA với 3V, 32 kHz < 1µA nguồn dự phòng. Các đặc tính nổi bật của thiết bị ngoại vi trên chip: + Timer0: 8 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước + Timer1:16 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước, có khả năng tăng trong khi ở chế độ Sleep qua xung đồng hồ được cung cấp bên ngoài. + Timer2: 8 bít của bộ định thời, bộ đếm với 8 bít của hệ số tỷ lệ trước, hệ số tỷ lệ sau. + Có 2 chế độ bắt giữ, so sánh, điều chế độ rộng xung (PWM) + Chế độ bắt giữ 16 bít, tốc độ 12,5 ns, chế độ so sánh với 16 bít, tốc độ giải quyết cực đại là 200ns, chế độ điều chế độ rộng xung với 10 bít. + Bộ chuyển đổi tín hiệu số sang tương tự với 10 bít. + Cổng truyền thông nối tiếp SSP với SPI phương thức chủ và I2C(chủ/phụ) + Bộ truyền nhận thông tin đồng bộ, dị bộ(USART/SCL) có khả năng phát hiện 9 bít địa chỉ. + Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR, và CS điều khiển. Sơ đồ các chân của PIC 16F876:  2.2. Sự tổ chức bộ nhớ PIC 16F876A PIC 16F87A có 3 khối bộ nhớ: bộ nhớ chương trình FLASH, bộ nhớ dữ liệu RAM, bộ nhớ EEPROM. a) Tổ chức bộ nhớ chương trình FLASH và Stack nhớ PIC 16F876 có một bộ đếm chương trình 13 bít và có 8Kx14 từ mã của bộ nhớ chương trình FLASH, được chia thành 4 trang mỗi trang 2Kx14 từ mã. Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, vectơ ngắt bắt đầu 0004h. Stack có 8 mức dùng để lưu địa chỉ lệnh thực hiện tiếp theo sau lệnh CALL và khi xảy ra ngắt. Bản đồ bộ nhớ chương trình và các ngăn xếp:  Sơ đồ khối chức năng của PIC 16F876:  b) Tổ chức bộ nhớ dữ liệu RAM RAM là bộ nhớ có thể đọc và ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ RAM của PIC 16F876A có 4 bank, mỗi bank có dải địa chỉ 0-7FH(128 byte) trên các bank những thanh ghi đa mục đích, hoạt động như một RAM tĩnh (General purpose register), và những thanh ghi chức năng đặc biệt (Special function registers) ở vùng địa chỉ thấp. Bít RP1(Status ) và bit RP0(Status ) dùng để lựa chọn bank làm việc. Các thanh ghi đa mục đích (General purpose register): các thanh ghi này được truy cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR, tổng cộng có 368 byte. Các thanh ghi chức năng đặc biệt: các thanh ghi này được dùng bởi CPU và các khối ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị. Sau đây là một số thanh ghi đặc biệt quan trọng: Các thanh ghi trạng thái STATUS: có 4 thanh ghi trạng thái trên 4 dãy, tại các địa chỉ 03h, 83h, 103h, 183h. Các thanh ghi này cho biết trạng thái của phần tử logic toán học ALU, trạng thái Reset, trạng thái của các bít lựa chọn dãy thanh ghi cho bộ nhớ dữ liệu Các thanh ghi lựa chọn OPTION_REG: có 2 thanh ghi lựa chọn tại các địa chỉ 81h và 181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều bit điều khiển khác nhau để xác định hệ số định trước TMR0/hệ số định sau WDT, ngắt ngoài INT, TMR0, các điện áp treo trên cổng B Các thanh ghi INTCON: có 4 thanh ghi INTCON tại các địa chỉ 0Bh, 8Bh, 10Bh, 18Bh. Các thanh ghi này có thể đọc và ghi, chứa đựng nhiều sự cho phép và các bit cờ cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB và chân các ngắt ngoài RB0/INT. Thanh ghi PIE1: Tại địa chỉ 8Ch, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi. Thanh ghi PIR1: Tại địa chỉ 0Ch, chứa đựng các bit cờ riêng lẻ cho các ngắt ngoại vi. Thanh ghi PIE2: Tại các địa chỉ 8Dh, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt động ngắt Thanh ghi PCON (Power Control): Chứa bit cờ cho phép phân biệt giữa việc Reset hệ thống để Reset MCLR ngoại với Reset WDT PCL và PCLATH: Chương trình đếm chỉ rõ địa chỉ của lệnh tiếp theo được thực hiện. PC có độ rộng 13 bit, byte thấp được gọi là thanh ghi PCL (có thể đọc hoặc ghi), byte cao được gọi là thanh ghi PCH . c) Các trang bộ nhớ chương trình PIC16F876A có 8Kx14 PLASH các lệnh CALL, GOTO chỉ cung cấp 11 bit địa chỉ cho phép rẽ nhánh được 2K của một trang bộ nhớ chương trình, 2 bit cao được cung cấp bởi 2 bit 3,4 của PCLATH do vậy tuỳ việc thiết lập các bit 3,4 của PCLATH trước khi lệnh CALL, GOTO thực hiện cho phép rẽ nhánh tới các trang bộ nhớ khác nhau Chú ý các lệnh RETURN, RETFIE không làm thay đổi PCLATH 2.3. Các cổng vào/ra PIC16F876A có 3 cổng vào/ra là Port A, Port B, Port C. Một số chân của cổng vào/ra được tích hợp với một số hàm có thể thay đổi để phù hợp với những thiết bị ngoại vi. a) Cổng A và thanh ghi TRISA Cổng A là cổng hai chiều với độ rộng đường truyền là 6 bit. Để điều khiển việc truy xuất dữ liệu người ta dùng thanh ghi TRISA. Nếu đặt bit TRISA = 1 thì cổng A sẽ tương ứng có các chân là chân vào. Nếu xoá bít TRISA = 0 thì cổng A sẽ tương ứng có các chân là chân ra. Việc đọc cổng A chính là đọc trạng thái của các chân, việc viết phải qua các chốt của cổng. Các chân của cổng A chủ yếu sử dụng nhận tín hiệu tương tự hoặc các chân vào/ra. Riêng chân RA4 có thể đa hợp với chân vào bộ Timer 0 và khi đó nó trở thành chân RA4/T0CKI. Chân này như một đầu vào của Trigger Schmitt và nó mở đầu ra. Các chân khác của cổng A là chân vào bộ TTL. Việc điều khiển các chân này thông qua việc đặt hay xoá các bít của thanh ghi ADCON1. Thanh ghi TRISA điều khiển trực tiếp các chân của cổng A, khi sử dụng các chân này để nhận tín hiệu tương tự vào ta phải chắc chắn rằng các bít của thanh ghi TRISA đã được đặt rồi. Sơ đồ khối chân RA3:RA0, chân RA5, và chân RA4/TOCK1 của cổng A  b) Cổng B và thanh ghi TRISB Cổng B là cổng hai chiều với độ rộng đường truyền là 8 bit. Tương ứng với nó để điều khiển trực tiếp dữ liệu ta sử dụng thanh ghi TRISB. Nếu đặt bít TRISB = 1 thì cổng B được định nghĩa là chân vào. Nếu xoá bít TRISB = 0 thì cổng B được định nghĩa là chân ra. Nội dung của chốt ra có thể chọn trên mỗi chân. Có 3 chân của cổng B có thể đa hợp với các chương trình vận hành bằng điện áp thấp. Đó là các chân sau: RB3/PGM, RB6/PGC, RB7/PGD. Sự thay đổi hoạt động của những chân này được miêu tả ở trong phần đặc tính nổi bật. Mỗi chân của cổng B có khả năng dừng bên trong nhưng yếu. Điều này được trình bày bởi việc xoá bit RBPU (bit 7 của thanh ghi OPTION_REG). Khả năng dừng này sẽ tự động tắt đi khi các chân của cổng được định nghĩa là chân ra. Khả năng dừng này sẽ tự động mất đi khi ta RESET. Bốn chân của cổng B, từ RB7÷ RB4 có đặc tính là ngắt khi thay đổi trạng thái. Chỉ những chân được định dạng là những chân vào thì ngắt này mới tồn tại. Một vài chân RB7:RB4 được định dạng như chân ra nó thi hành ngắt trên sự thay đổi so sánh. Chân vào RB7:RB4 được so sánh với giá trị cũ của chốt ở lần đọc cuối cùng của cổng B. Sự ghép đôi không khớp chân ra của RB7:RB4 bằng lệnh OR làm phát ra ngắt với cờ bit RBIF của thanh ghi INTCON. Ngắt này có thể khởi động thiết bị từ trạng thái SLEEP. Sơ đồ khối của chân RB3÷RB0, và chân RB7÷RB4 của cổng B:  c) Cổng C và thanh ghi TRISC Cổng C là cổng 2 chiều với độ rộng đường truyền là 8 bit. Tương ứng với việc điều khiển nó là thanh ghi TRISC. Nếu đặt bit TRISC=1 thì tương ứng với chân của cổng C là chân vào. Nếu xoá bit TRISC=0 thì tương ứng với chân của cổng C là chân ra. Đặt nội dung của chốt ra có thể đặt trên chân chọn. Cổng C đa hợp với việc vận hành thiết bị ngoại vi. Chân của cổng C thông qua bộ đệm Trigger Schmitt đầu vào. Khi chế độ I2C hoạt động, thì các chân cổng PORTC (4:3) có thể được sắp xếp với mức I2C thường hoặc với mức SMBUS bằng cách sử dụng bit CKE (SSPSTART) là bit 6 của thanh ghi SSPSTART. Khi vận hành các thiết bị ngoại vi bằng việc xác định bit TRIS của mỗi chân cổng C. Một số phần phụ có thể ghi đè lên bit TRISC làm cho chân này trở thành chân ra, trong khi đó thì một số phần phụ khác lại ghi đè lên bit TRIS làm cho nó trở thành chân vào. Từ khi những bit TRIS ghi đè thì trong việc tác động trong các thiết bị ngoại vi là có thể, những lệnh đọc-sửa–ghi (BSF, BCF, XORWF) với thanh ghi TRISC như là nơi gửi tới sẽ được tránh. Người sử dụng nên đề cập tới việc phân chia kết nối các thiết bị ngoại vi cho việc set chính xác các bit TRIS Sơ đồ khối chân RC RC và chân RC của cổng C  2.4. Các bộ Timer của chip Bộ vi điều khiển PIC 16F876 có 3 bộ Timer đó là: Timer 0, Timer 1, Timer2. a) Bộ Timer0 Là bộ định thời hoặc bộ đếm có những ưu điểm nổi bật sau: + 8 bit cho timer hoặc bộ đếm. + Có khả năng đọc và viết. + Có thể dùng đồng hồ bên trong hoặc bên ngoài. + Có thể chọn cạnh xung của xung đồng hồ. + Có hệ số chia cho xung đầu vào có thể lập trình lại bằng phần mềm. + Ngắt tràn. Hoạt động của bộ Timer0: Timer 0 có thể hoạt động như một bộ định thời hoặc một bộ đếm. Viêc chọn bộ định thời hoặc bộ đếm có thể được xác lập bằng việc xoá hoặc đặt bit TOSC của thanh ghi OPTION_REG. Nếu dùng hệ số chia xung đầu vào thì xoá bit PSA của thanh ghi OPTION_REG. Trong chế độ bộ định thời được lựa chọn bởi việc xoá bit T0CS (OPTION_REG), nó sẽ được tăng giá trị sau một chu kỳ lệnh nếu không chọn hệ số chia xung đầu vào. Và giá trị của nó được viết tới thanh ghi TMR0. Chế độ đếm được lựa chọn bởi việc set bit T0CS (OPTION_REG). Trong chế độ bộ đếm, nó sẽ được tăng ở xung đi xuống nếu xoá bit T0SE (OPTION_REG) hoặc ở xung đi lên nếu set bit T0SE. Và giá trị của nó được viết tới thanh ghi TMR0. Khi dùng xung clock bên ngoài cho bộ định thời Timer 0 và không dùng hệ số chia clock đầu vào Timer 0 thì phải đáp ứng các điều kiện cần thiết để có thể hoạt động đó là phải đảm bảo xung clock bên ngoài có thể đồng bộ với pha xung clock bên trong (TOSC). Các hệ số chia: Hệ số chia dùng cho Timer 0 hoặc bộ WDT. Các hệ số này không có khả năng đọc và khả năng viết. Để chọn hệ số chia xung vào Timer 0 hoặc cho bộ WDT ta tiến hành xoá hoặc đặt bit PSA của thanh ghi OPTION_REG. Những bit PS2, PS1, PS0 của thanh ghi OPTION_REG dùng để xác lập các hệ số chia. Ngắt của bộ Timer0: Ngắt của bộ Timer 0 được phát sinh ra khi thanh ghi TMR0 bị tràn tức từ FFh qu