đồ án Kĩ Thuật Vi điều Khiển | Xemtailieu

logo xemtailieu Xemtailieu Tải về Đồ án kĩ thuật vi điều khiển
  • docx
  • 41 trang
Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Mục Lục Lời nói đầu............................................................................................................................................3 Chương1: Tổng quan về hệ thống..............................................................................................4 1.1. Giới thiệu đề tài........................................................................................................................4 1.1.1. Mục đích, yêu cầu của đề tài - Nhằm phục vụ cho việc cảnh báo cháy, hoặc rò rỉ khí gas tại hộ gia đình, truyền thông qua sóng điện thoại…thiết bị báo cháy phải đảm bảo các yêu cầu sau:.................................4 1.1.2. Giới hạn đề tài................................................................................................................4 1.1.3. Chọn phương án thực hiện đề tài.................................................................................4 1.2. Sơ lược về hệ thống báo cháy...............................................................................................5 1.2.1. Sơ đồ khối.......................................................................................................................5 1.2.2. Cách nhận biết và báo cháy..........................................................................................5 1.2.3. Các bộ phận chính.........................................................................................................5 Chương 2: Tìm hiểu và chọn linh kiện..............................................................................................8 2.1.Giới thiệu....................................................................................................................................8 2.2. Vi điều khiển Atmega16............................................................................................................8 2.2.1. Giới thiệu.............................................................................................................................8 2.2.2. Cấu trúc phần cứng..........................................................................................................11 2.2.3. Bộ định thời.......................................................................................................................16 2.3. Cảm biến nhiệt độ LM35........................................................................................................20 2.3.1. Giới thiệu...........................................................................................................................20 2.3.2. Tính toán nhiệt độ............................................................................................................21 2.4. Cảm biến khí Gas MQ2..........................................................................................................22 2.5. Module sim 900A....................................................................................................................23 2.5.1. Giới thiệu:.........................................................................................................................23 2.5.2. Đặc điểm:...........................................................................................................................23 2.6. LCD 16X2................................................................................................................................24 2.6.1. Giới thiệu...........................................................................................................................24 2.6.2. Sơ đồ chân.........................................................................................................................25 2.6.3. Thanh ghi và tổ chức bộ nhớ...........................................................................................26 2.6.4. Điều khiển hiển thị Text LCD..........................................................................................29 SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 1 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Chương 3: Thiết kế mạch..................................................................................................................33 3.1. Giới thiệu.................................................................................................................................33 3.2. Cảm biến nhiệt độ LM35........................................................................................................33 3.3. Khối điều khiển động cơ.........................................................................................................34 3.4. Mạch dò bắt điểm 0.................................................................................................................35 3.5. Mạch nguồn 5v........................................................................................................................36 3.6. Mạch vi điều khiển ATMEGA16...........................................................................................38 Chương 4: Lưu đồ thuật toán và chương trình..............................................................................40 4.1. Lưu đồ thuật toán...................................................................................................................40 SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 2 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Lời nói đầu Ngày nay, với sự phát triển vượt bậc của khoa học kỹ thuật, điện tử đã được ứng dụng ở rất nhiều lĩnh vực trong thực tế để phục vụ nhu cầu, chăm sóc sức khỏe, bảo vệ tính mạng và tài sản của con người. Qua tìm hiểu thực tế em đã thấy được rằng gần đây rất nhiều vụ nổ bình gas thương tâm đã xảy ra gây thiệt hại rất lớn về người và của. Mặt khác, nhiều vụ cháy lớn không được cảnh báo và phát hiện kịp thời đã thiêu trụi và phá hủy gần như toàn bộ tài sản và đe dọa đến tính mạng con người. Khi mà cuộc sống hiện đại ngày nay, bình gas là nhiên liệu đốt không thể thiếu trong mỗi gia đình, các nguy cơ cháy nổ luôn luôn thường trực, mối đe dọa về một thảm họa có thể xảy đến bất cứ lúc nào. Từ đó, em đã tìm hiểu và thiết kế hệ thống cảnh báo rò rỉ khí gas và báo cháy thông qua mạng điện thoại GSM rất phổ biến hiện nay để giảm thiểu tối đa hậu quả của chúng gây ra cho con người. Nguyên lý hoạt động của hệ thống : khi có rò rỉ khí gas hoặc nhiệt độ cao bất thường, các sensor cảm biến nồng độ khí gas và nhiệt độ sẽ phát hiện, gửi thông số điện áp tương ứng tới vi điều khiển. Vi điều khiển sẽ phân tích tín hiện nhận về, kích hoạt hệ thống phòng ngừa tương ứng và gửi tin nhắn tới điện thoại của người sử dụng. Hiện nay, do nhu cầu sử dụng các hệ thống, thiết bị tự động của người dân ngày càng tăng. Đồng thời, mạng điện thoại di động phát triển rộng khắp và các thiết bị điện thoại di động ngày càng có mức giá phù hợp với người dân. Đó là những mặt thuận lợi của việc hình thành ý tưởng. Xuất phát từ ý tưởng và tình hình thực tế nêu trên, em quyết định chọn đề tài “Thiết kế hệ thống báo cháy tự động truyền thông qua điện thoại”. Trong quá trình thực hiện đề tài, em đã tham khảo nhiều nguồn tài liệu khác nhau, cùng với sự hướng dẫn tận tình của thầy Lê Hoài Nam, em đã hoàn thành đồ án. Lần đầu tiên thực hiện đề tài, cũng như kiến thức còn hạn chế, khó tránh khỏi những thiếu sót, mong thầy thầy hướng dẫn. Em xin chân thành cảm ơn! Sinh viên thực hiện Nguyễn Văn Quốc SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 3 Đồ Án Kỹ Thuật Vi Điều Khiển Chương1: GVHD: Lê Hoài Nam Tổng quan về hệ thống 1.1. Giới thiệu đề tài Ngành công nghệ thông tin liên lạc đã phát triển nhanh chóng cùng với các ngành công nghệ khác, nhằm đáp ứng nhu cầu ngày càng cao của xã hội. Đặc biệt là song điện thoại, ngày nay được phủ hầu khắp mọi nơi…Vì vậy, với suy nghĩ là ứng dụng kiến thức đã học ở trường và tìm hiểu them sách vở, em quyết định chọn đề tài “Thiết kế hệ thống báo cháy tự động truyền thong qua song điện thoại” với mong muốn là sau khi thực hiện xong đề tài có thể ứng dụng vào thực tế. 1.1.1. Mục đích, yêu cầu của đề tài - Nhằm phục vụ cho việc cảnh báo cháy, hoặc rò rỉ khí gas tại hộ gia đình, truyền thông qua sóng điện thoại…thiết bị báo cháy phải đảm bảo các yêu cầu sau:  Sữ dụng tiện lợi và sữ dụng trên khắp cả nước mà không cần thay đổi phần cứng.  Báo động kịp thời các vụ cháy nhằm giảm nhẹ thiệt hại do cháy gây ra.  Tự động gửi tin nhắn cảnh báo, đồng thời báo động bằng chuông và phun nước khi có cháy. 1.1.2. Giới hạn đề tài Báo cháy và chống cháy có rất nhiều vấn đề cần bàn tới, tùy thuộc vào mức độ nghiêm trọng và nhiên liệu cháy mà có các cách chống cháy khác nhau. Vì vậy, có rất nhiều khó khăn trong lúc thực hiện đề tài. Với thời gian ngắn nhưng lại có nhiều vấn đề cần giải quyết, hơn nữa với kiến thức còn có hạn nên đồ án này em chỉ tập trung các vấn đề sau:  Gửi tin nhắn cảnh báo chủ nhân khi có cháy xảy ra.  Thực hiện được 2 chức năng là: + Bật chuông báo động khi có cháy. + Khởi động máy bơm để bơm nước.  Trong điều kiện bình thường, hiển thị nhiệt độ để chủ nhà có thể nắm bắt được nhiệt độ phòng. 1.1.3. Chọn phương án thực hiện đề tài Với những yêu cầu đặt ra ở trên, em đã xem xét và đưa ra 3 phương án như sau:  Sữ dụng kỹ thuật số.  Sữ dụng kỹ thuật vi xữ lý.  Sữ dụng kỹ thuật vi điều khiển. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 4 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Với những yêu cầu của đồ án, ta có thể đơn giản những hoạt động bằng kỹ thuật số. Nhưng tốn kém linh kiện và kích thước cồng kềnh, hơn nữa khó thay đổi phần mềm và không có khả nẵng mở rộng cho các hoạt động khác. Với kỹ thuật vi xử lý, có thể khắc phục những yếu điểm của mạch số, nhưng lại phức tạp trong việc thiết kế phần cứng. Nếu sữ dụng kỹ thuật vi điều khiển, giao tiếp theo xung với mạch thiết kế thuần chất điện tử thì giá thành hạ và chất lượng của thiết bị phụ thuộc nhiều vào phần mềm, vì vậy em quyết định đi theo hướng này. 1.2. Sơ lược về hệ thống báo cháy 1.2.1. Sơ đồ khối 1.2.2. Cách nhận biết và báo cháy Khi một đám cháy xảy ra, ở vùng cháy thường có những dấu hiệu sau: - Lửa, khói, vật liệu chổ cháy bị phá hủy. Nhiệt độ vùng cháy tăng lên cao. Không khí bị Ôxy hóa mạnh. Có mùi cháy, mùi khét. Để đề phòng cháy, chúng ta có thể dựa vào những dấu hiệu trên để đặtcác hệ thống cảm biến làm các thiết bị báo cháy. Kịp thời khống chế đám cháy ở giai đoạn đầu. Thiết bị báo cháy điện tử giúp chúng ta liên tục theo dõi để hạn chế các vụ cháy tai hại, tăng cường độ an tồn, bình yên cho mọi người. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 5 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam 1.2.3. Các bộ phận chính 1. Cảm biến: Cảm biến là bộ phận hết sức quan trọng, nó quyết định độ nhạy và sự chính xác của hệ thống. Cảm biến hoạt động dựa vào các đặt tính vật lý của vật liệu cấu tạo nên chúng. Cảm biến được dùng để chuyển đổi các túi hiệu vật lý sang tín hiệu điện. Các đặc tính của cảm biến: độ nhạy, độ ổn định, độ tuyến tính, Cảm biến nhiệt: Là loại cảm biến dùng để chuyển tín hiệu vật lý (nhiệt độ) thành túi hiệu điện, đây là loại cảm biến có độ nhạy tương đối cao và tuyến tính. Nguyên tắc làm việc của nó là dòng điện hay điện áp thay đổi khi nhiệt độ tại nơi đặt nó thay đổi. Tuy nhiên nó cũng dễ báo động nhàm khi nguồn điện bên ngồi tác động không theo ý muốn. Các loại cảm biến nhiệt: IC cảm biến: Là loại cảm biến bán dẫn được chế tạo thành các IC chuyên dụng với độ nhạy cao, điện áp ra thay đổi tỉ lệ thuận với nhiệt độ, một số loại IC được bán bên ngồi thị trương là: LM355, LM334, ... Thermistor: Thermistor là loại điện trở có độ nhạy nhiệt rất cao nhưng không tuyến tính và với hệ số nhiệt âm. Điện trở giảm phi tuyến với sự tăng của nhiệt độ. Vì bản thân là điện trở nên trong quá trình hoạt động Thermistor tạo ra nhiệt độ vì vậy gây sai số lớn. Thermo Couples: Thermo Couple biến đổi đại lượng nhiệt độ thành dòng điện hay điện áp DC nhỏ. Nó gồm hai dây kim loại khác nhau nối với nhau tại hai mối nối. Khi các dây nối đặc ở các vị trí khác nhau, trong dây xuất hiện suất điện động. Suất điện động tỉ lệ thuận với sự chênh lệch nhiệt độ giữa hai mối nối. Thermo couple có hệ số nhiệt dương. a. Cảm biến lửa: Khi lửa cháy thì phát ra ánh sáng hồng ngoại, do đó ta sử dụng các linh kiện phát hiện tia hồng ngoại để phát hiện lửa. Nguyên lý hoạt động là điện trở của các linh kiện thu sóng hồng ngoại tăng, nó chuyển tín hiệu ánh sáng thu được thành túi hiệu điện để báo động. Loại này rất nhạy đối với lửa. Tuy nhiên cũng dễ báo động nhầm nếu ta để cảm biến ngồi trời hoặc gần ánh sáng bóng đèn tròn. b. Cảm biến khói: Thường cảm biến khói là bộ phân riêng biệt chạy bằng PIN được thiết kế để lắp đặt trên trần nhà, trên tường. Ngồi yêu càu kỹ thuật (chính xác, an tồn) còn đòi hỏi phải đảm bảo về mặt thẩm mỹ. Có hai cách cơ bản để thiết kế bộ cảm biến khói. Cách thứ nhất sử dụng nguyên tắc lon hóa. Người ta sử dụng một lượng nhỏ chất phóng xạ để lon hóa trong bộ cảm biến. Không khí bị lon hóa sẽ dẫn điện và tạo thành một dòng điện chạy giữa chạy giữa hai cực đã đợc nạp điệân. Khi các phần tử khỏi lọt vào khu vực cảm nhận SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 6 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam được lon hóa sẽ làm tăng điện trở trong buồng cảm nhận và làm giảm luồng điện giữa hai cực. Khi luồng điện giảm xuống tới một giá trị nào đó thì bộ cảm biến sẽ phát hiện và phát túi hiệu báo động. Cách thứ hai sử dụng các linh kiện thu phát quang. Người ta dùng linh kiện phát quang (Led, Led hồng ngoại...) chiếu một tia ánh sáng qua vùng bảo vệ vào một linh kiện thu quang (photo diode, photo transistor, quang trở...). Khi có cháy, khói đi ngang qua vùng bảo vệ sẽ che chắn hoặc làm giảm cường độ ánh sáng chiếu vào linh kiện thu. Khi cường độ giảm xuống tới một giá trị nào đó thì bộ cảm biến sẽ phát hiện và phát tín hiệu báo động. Trong hai cách này thì phương pháp thứ nhất nhạy hơn và hiệu quả hơn phương pháp thứ hai, nhưng khó thực thi, khó lắp đặt. Còn cách thứ hai tuy ít nhạy hơn nhưng linh kiện dễ kiếm và dễ thực thi cũng như dễ lắp đặt. Một nhược điểm của các loại cảm biến này là: mạch báo động có thể sai nếu vùng bảo vệ bị xâm nhập bởi các lớp bụi... 2. Thiết bị báo động: Thiết bị báo động gồm có hai loại: > Báo động tại chỗ. > Báo động qua điện thoại. Báo động tại chỗ ta có thể sử dụng các chuông điện, mạch tạo còi hụ hay phát ra tiếng nói để cảnh báo. Trong các hệ thống báo cháy, bộ cảm biến thường đặt ở những nơi dễ cháy và nối với các thiết bị báo động bằng dây dẫn điện, do đó trong một số trường hợp có thể làm dây bị đứt. VI vậy một hệ thống báo cháy sẽ trở nên hiệu quả khi sử dụng các bộ phát vô tuyến. Trong đó bộ phận thu gắn với mạch báo động, còn mạch phát gắn với bộ cảm biến. Tuy nhiên việc lắp đặt gặp nhiều khó khăn và giá thành cao. Báo động qua điện thoại giúp ta đáp ứng nhanh các thông tin về sự cố đến các cơ quan chức năng. Khi có tín hiệu báo động sẽ tự động gửi tin nhắn đến các cơ quan như: nhà riêng, công an, phòng cháy chữa cháy... SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 7 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Chương 2: Tìm hiểu và chọn linh kiện 2.1.Giới thiệu Qua tìm hiểu thực tế, với tiêu chí về độ chính xác, giá thành, tính thông dụng và có sẵn của linh kiện, trên cơ sở lý thuyết đã được học em đã quyết định chọn các linh kiện chính sử dụng trong mạch như sau: - Vi điều khiển – ATMEGA 16 - Cảm biến nhiệt độ - LM35. - Cảm biến khí gas – MQ2. - Module sim 900A - LCD 16X2 2.2. Vi điều khiển Atmega16 2.2.1. Giới thiệu AVR là một họ vi điều khiển do hãng Atmel sản xuất (Atmel cũng là nhà sản xuất dòng vi điều khiển 89C51 mà có thể bạn đã từng nghe đến). AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa-RISC(Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí. Tại sao AVR: so với các chip vi điều khiển 8 bits khác, AVR có nhiều đặc tính hơn hẳn, hơn cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng:  Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng AVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch anh).  Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vài điện trở là có thể làm được. một số AVR còn hỗ trợ lập trình on – chip bằng bootloader không cần mạch nạp…  Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C.  Nguồn tài nguyên về source code, tài liệu, application note…rất lớn trên internet.  Hầu hết các chip AVR có những tính năng (features) sau: SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 8 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam - Có thể sử dụng xung clock lên đến 16MHz, hoặc sử dụng xung clock nội lên đến 8 MHz (sai số 3%) - Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ lập trình được EEPROM. - Nhiều ngõ vào ra (I/O PORT) 2 hướng (bi-directional). - 8 bits, 16 bits timer/counter tích hợp PWM. - Các bộ chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh. - Chức năng Analog comparator. - Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232). - Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C) Master và Slaver. - Giao diện nối tiếp Serial Peripheral Interface (SPI)                      Một số chip AVR thông dụng: AT90S1200 AT90S2313 AT90S2323 and AT90S2343 AT90S2333 and AT90S4433 AT90S4414 and AT90S8515 AT90S4434 and AT90S8535 AT90C8534 ATtiny10, ATtiny11 and ATtiny12 ATtiny15 ATtiny22 ATtiny26 ATtiny28 ATmega8/8515/8535 ATmega16 ATmega161 ATmega162 ATmega163 ATmega169 ATmega32 ATmega323 ATmega103 SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 9 Đồ Án Kỹ Thuật Vi Điều Khiển    GVHD: Lê Hoài Nam ATmega64/128/2560/2561 AT86RF401. .... Trong bài viết này tôi sử dụng chip ATmega8 để làm ví dụ, tôi chọn ATmega8 vì đây là loại chip thuộc dòng AVR mới nhất, nó có đầy đủ các tính năng của AVR nhưng lại nhỏ gọn (gói PDIP có 28 chân) và low cost nên các bạn có thể mua để tự mình tạo ứng dụng. Tại sao Assembly (ASM): bạn có thể không cần biết về cấu trúc của AVR vẫn có thể lập trình cho AVR bằng các phần mềm hỗ trợ ngôn ngữ cấp cao như BascomAVR (Basic) hay CodevisionAVR (C), tuy nhiên đó không phải là mục đích của bài viết này. Để hiểu thấu đáo về AVR bạn phải lập trình bằng chính ngôn ngữ của nó, ASM. Như vậy lập trình bằng ASM giúp bạn hiểu tường tận về AVR, và tất nhiên để lập trình được bằng ASM bạn phải hiểu về cấu trúc AVR….Một lý do khác bạn mà tôi khuyên bạn nên lập trình bằng ASM là các trình dịch (compiler) ASM cho AVR là hoàn toàn miễn phí, và nguồn source code cho AVR viết bằng ASM là rất lớn. Tuy nhiên một khi bạn đã thành thạo AVR và ASM bạn có thể sử dụng các ngôn ngữ cấp cao như C để viết ứng dụng vì ưu điểm của ngôn ngữ cấp cao là giúp bạn dễ dàng thực hiện các phép toán đại số 16 hay 32 bit (vốn là vấn đề khó khăn khi lập trình bằng ASM).  Công cụ: Trình biên dịch: có rất nhiều trình biên dịch bạn có thể sử dụng đế biên dịch code của bạn thành file intel hex để nạp vào chip, một số trình dịch quen thuộc có thể kể đến như sau:  AvrStudio: là trình biên dịch ASM chính thức cung cấp bởi Atmel, đây là trình biên dịch hoàn toàn miễn phí và tất nhiên là tốt nhất cho lập trình AVR bằng ASM.  Wavrasm: cũng được cung cấp bởi Atmel, nó chính là tiền thân của AvrStudio. Hiện tại wavrasm không còn được sử dụng nhiều vì so với AvrStudio trình biên dịch này có nhiều hạng chế.  WinAVR hay avr-gcc: là bộ trình dịch được phát triển bởi gnu, ngôn ngữ sử dụng là C và có thể được dùng tích hợp với AvrStudio (dùng Avrstudio làm trình biên tập – editor). Đặc biệt bộ biên dịch này cũng miễn phí và đa số nguồn source code C được viết bằng bộ này, vì vậy nó rất lí tưởng cho bạn khi viết các ứng dụng chuyên nghiệp. Việc lập trình bằng avrgcc tôi sẽ đề cập trong những phần sau.  CodeVisionAvr: một chương trình bằng ngôn ngữ C rất hay cho AVR, hỗ trợ nhiều thư viện lập trình. Tuy nhiên là chương trình thương mại.  ICCAVR: lập trình C cho avr. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 10 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam  BascomAVR: lập trình cho AVR bằng basic, đây là trình biên dịch khá hay và dễ sử dụng, hỗ trợ rất nhiều thư viện. Tuy nhiên rất khó debug lỗi và không thích hợp cho việc tìm hiểu AVR.  Và còn rất nhiều trình biên dịch khác cho AVR mà tôi không kể ra đây, nhìn chung tất cả các trình biên dịch này hỗ trợ C hoặc Basic hoặc thậm chí Pascal. Việc chọn 1 trình biên dịch tùy thuộc vào mục đích, vào mức độ ứng dụng, vào kinh nghiệm sử dụng và nhiều lý do khác nữa. Ví dụ tôi thường dùng Avrstudio và avrgcc khi học sử dụng AVR và khi viết thư viện. Nhưng khi cần viết chương trình ứng dụng tôi thường chọn avrgcc và CodeVisionAVR. Trong bài viết này tôi hướng dẫn bạn sử dụng AvrStudio để viết chương trình cho AVR bằng ASM. Chương trình nạp (Chip Programmer): đa số các trình biên dịch (AvrStudio, CodeVisionAVR, Bascom…) đều tích hợp sẵn 1 chương trình nạp chip hỗ trợ nhiều loại mạch nạp nên bạn không quá lo lắng. Trong trường hợp khác, bạn có thể sử dụng các chương trình nạp như Icprog hay Ponyprog…là các chương trình nạp miễn phí cho AVR. Việc chọn và sử dụng chương trình nạp sẽ được giới thiệu trong các bài sau. Chương trình mô phỏng: avr simulator là trình mô phỏng và debbug được tích hợp sẵn trong Avrstudio, avr simulator cho phép bạn quan sát trạng thái các thanh ghi bên trong AVR nên rất phù hợp để bạn debug chương trình. Proteus là chương trình thứ hai tôi muốn nói đến, Proteus không những mô phỏng hoạt động bên trong chip mà còn mô phỏng mạch điện tử. Proteus mô phỏng rất trực quan, nó là 1 công cụ hữu ích khi các bạn chưa có điều kiện làm các mạch điện tử. 2.2.2. Cấu trúc phần cứng SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 11 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Hình 2.1. Sơ đồ cấu trúc CPU của ATmega16 - a. Thanh ghi trạng thái Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic. Hình 2.2. Thanh ghi trạng thái SREG C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập) Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0) N: Negative Flag (Nếu kết quả của phép toán là âm) V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2) SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 12 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam V, For signed tests (S=N XOR V) S: N H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau) T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian trong các lệnh BLD,BST). I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt. Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.) b. Các thanh ghi chức năng chung Hình 2.3. Thanh ghi chức năng chung c. Con trỏ ngăn xếp (SP) Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp. Hình 2.4. Thanh ghi con trỏ ngăn xếp Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 13 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi. d. Bộ nhớ chương trình (Bộ nhớ Flash) Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình. Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16. Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trình ứng dụng. Hình 2.5. Bản đồ bộ nhớ chương trình e. Bộ nhớ dữ liệu SRAM 1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 14 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Hình 2.6. Bản đồ bộ nhớ dữ liệu SRAM f. Bộ nhớ dữ liệu EEPROM ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một. g. Thanh ghi DDRx Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào). Nếu như một bit trong thanh ghi này được set thì bit tương ứng đó trên PORTx được định nghĩa như một cổng ra. Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORTx được định nghĩa là cổng vào. h. Thanh ghi PORTx Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệu của cổng Px và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi ta ghi một bit lên thanh ghi này thì chân tương ứng trên port đó cũng có cùng mức logic. Trong trường hợp mà cổng được định nghĩa là cổng vào thì thanh ghi này lại mang dữ liệu điều khiển cổng. Cụ thể nếu bit nào đó của thanh ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up) của chân tương ứng của port đó sẽ được kích hoạt. Ngược lại nó sẽ ở trạng thái hi-Z. Thanh ghi này sau khi khởi động Vi điều khiểnsẽ có giá trị là 0x00. i. Thanh ghi PINx SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 15 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam Đây là thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được. 2.2.3. Bộ định thời Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc điểm sau:        Bộ đếm một kênh Xóa bộ định thời khi trong mode so sánh (tự động nạp) PWM Tạo tần số Bộ đếm sự kiện ngoài Bộ chia tần 10 bit Nguồn ngắt tràn bộ đếm và so sánh Sơ đồ cấu trúc của bộ định thời: Hình 2.7. Sơ đồ cấu trúc bộ định thời a. Các thanh ghi TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK. Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock ngoài trên chân T0. Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ dùng nguồn xung SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 16 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam nào để tăng giá trị của nó. Ngõ ra của khối chọn xung clock được xem là xung clock của bộ định thời (clkT0). Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại chân OC0. b. Đơn vị đếm Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình được. Cấu trúc của nó như hình dưới đây: Hình 2.8. Đơn vị đếm count: tăng hay giảm TCNT0 1 direction: lựa chọn giữa đếm lên và đếm xuống clear: xóa thanh ghi TCNT0 clkT0: xung clock của bộ định thời TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0) SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 17 Đồ Án Kỹ Thuật Vi Điều Khiển c. GVHD: Lê Hoài Nam Đơn vị so sánh ngõ ra Hình 2.9. Sơ đồ đơn vị so sánh ngõ ra Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ ra (OCR0). Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu. Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp theo. Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi. Cờ OCF0 cũng có thể được xóa bằng phần mềm. d. Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0 Hình 2.10. Thanh ghi điều khiển bộ định thời - Bit 7-FOC0: So sánh ngõ ra bắt buộc Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc không có PWM. Khi đặt bit này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng. - Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng Các bit này điều khiển đếm thứ tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng sẽ được sử dụng. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 18 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam - Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra Các bit này điều khiển hoạt động của chân OC0. Nếu một hoặc cả hai bit COM01:0 được đặt lên 1, ngõ ra OC0 sẽ hoạt động. - Bit 2:0: CS02:0: Chọn xung đồng hồ Ba bit này dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm. Hình 2.11 e. Thanh ghi bộ định thời/bộ đếm Hình 2.12. Thanh ghi bộ định thời Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộ đếm 8 bit. f. Thanh ghi so sánh ngõ ra-OCR0 Hình 2.13. Thanh ghi so sánh ngõ ra Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của bộ đếm. SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 19 Đồ Án Kỹ Thuật Vi Điều Khiển GVHD: Lê Hoài Nam g. Thanh ghi mặt nạ ngắt Hình 2.14. Thanh ghi mặt nạ ngắt TIMSK - Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh - Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm h. Thanh ghi cờ ngắt bộ định thời Hình 2.15. Thanh ghi cờ ngắt TIFR - Bit 1-OCF0: Cờ so sánh ngõ ra 0 - Bit 0-TOV0: Cờ tràn bộ đếm Bit TOV0 được đặt lên 1 khi bộ đếm bị tràn và được xóa bởi phần cứng khi vector ngắt tương ứng được thực hiện. Bit này cũng có thể được xóa bằng phần mềm. 2.3. Cảm biến nhiệt độ LM35 2.3.1. Giới thiệu LM35 là một cảm biến nhiệt độ analog Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35.  Đơn vị nhiệt độ: oC  Nhiệt độ thay đổi tuyến tính: 10mV/oC SVTH: Nguyễn Văn Quốc – Lớp: 12CDT1 20 Tải về bản full

Từ khóa » đồ án Vi điều Khiển Avr