Chương I. Cơ sở lý thuyết chung. Giới thiệu tổng quan về đề tài, về họ vi điều khiển AVR, các ngôn ngữ thực hiện để lập trình vi điều khiển. Chương II.
Chi tiết cấu hình của mạch kit. Trình bày chi tiết về cấu trúc mạch kit được sử dụng trong đồ án, các thông số của mạch kit, kết nối với các thiết bị ngoại vi như LCD. Chương III. Thực hành lập trình cho vi điều khiển.
Tiến hành nạp code và chạy thử vi điều khiển, kiểm tra hiệu năng và lỗi mạch. Chương IV. Vận dụng vào kiến thức thực tế. Chương này sẽ đi vào tìm hiểu thiết kế và giải quyết các mục tiêu của đề tài là sử dụng cảm biến nhiệt độ để đo và in kết quả ra LCD theo những yêu cầu kĩ thuật cho trước.
CƠ SỞ LÝ THUYẾT CHUNG 1.1 Giới thiệu chung Với học phần Đồ án II tìm hiểu về vi điều khiển họ AVR, nội dung được thiết kế để nâng cao năng lực chuyên môn cho các sinh viên; giúp liên kết các khối kiến thức về điện tử tương tự, điện tử số, kỹ thuật vi xử lý, xử lý số tín hiệu, thông tin số, v. nhằm hoàn thiện khả năng vận dụng kiến thức vào thực tế. Trong học phần này, nội dung công việc cần thực hiện bao gồm: làm quen công cụ thiết kế mạch điện, thực hành lập trình phần cứng và xây dựng một ứng dụng cơ bản với các vi mạch có thể lập trình được. Để đảm bảo tiến độ công việc, em và các bạn sinh viên khác đã được viện hỗ trợ một số phương tiện cơ bản để triển khai công việc trên nền tảng xây dựng sẵn, có thể kế thừa.
Sau khi tiếp cận nhanh với vi điều khiển (VĐK) thông qua việc xây dựng một số ứng dụng trên VĐK họ AVR cụ thể trong bài báo cáo này em dùng Atmega16A. Em sẽ tiến hành giải quyết một vấn đề cụ thể - thiết kế mạch đo nhiệt độ và hiển thị trên LCD sử dụng cảm biến tương tự và cụ thể đó là cảm biến DHT 11 - một cảm biến nhiệt độ tương tự được ứng dụng phổ biến trong việc cảm biến nhiệt độ.2 Mạch Kit cho VĐK họ AVR AVR là một VĐK 8 bit khá mạnh và thông dụng tại thị trường Việt Nam. Với tốc độ xung nhịp tối đa lên tới 16 Mhz, bộ nhớ chương trình tối đa tới 256 kB, và rất nhiều chức năng ngoại vi tích hợp sẵn, VĐK họ AVR có thể đáp ứng tốt cho nhiều ứng dụng trong thực tế, từ đơn giản đến phức tạp. Với Kit phát triển sử dụng trong học phần Đồ án II (hình 1.1) được Viện Điện tử - Viễn thông thiết kế riêng để đảm bảo tính hiệu quả trong quá trình đào tạo.
Bộ kit có thể được thử nghiệm với các ứng dụng cơ bản sau: o Điều khiển cổng ra số, với LED đơn và LED 7 thanh o Đọc trạng thái logic đầu vào số, từ bán phím và giắc cắm mở rộng o Đo điện áp tương tự với biến trở vi chỉnh và bộ ADC 10-bit 8 o Điều khiển màn hình tinh thể lỏng, với màn hình LCD dạng text o Giao tiếp với máy tính qua chuẩn UART ↔ USB o Thử nghiệm các ngắt ngoài, thử khả năng điều chế độ rộng xung. ● Nhiều ứng dụng điều khiển các chức năng tích hợp sẵn trong VĐK như: vận hành các bộ định thời (Timer) và bộ đếm (Counter), đọc ghi EEPROM, lập trình các ngắt chương trình, thiết lập Watchdog, v. Hình 1 : Mạch Kit phát triển và các phụ kiện Ngoài ra, bằng việc kết nối giữa các mô-dun mở rộng, mạch Kit hoàn toàn có thể thực hiện các ứng dụng phức tạp hơn như: ● Đo tham số môi trường: nhiệt độ, độ ẩm, độ sáng, v. ● Điều khiển tải cơ bản: đèn báo, van điện tử, động cơ DC, động cơ bước, v.
9 ● Điều khiển hiển thị cơ bản: LED ma trận, LCD ma trận, màn hình cảm ứng, v. ● Giao tiếp I2C và SPI: IC thời gian thực, IC EEPROM, cảm biến gia tốc, v. ● Ứng dụng tổng hợp: đo và duy trì sự ổn định các tham số mô trường; số hóa và xử lý tín hiệu âm thanh, điều khiển robot hoặc xe tự hành, v.3 Ngôn ngữ lập trình và phần mềm AVR nói chung chung cũng như Atmega16 nói riêng hỗ trợ 2 ngôn ngữ lập trình thông dụng là Assembly và C. Việc lập trình bằng Assembly giúp chương trình nhỏ gọn nhưng khá phức tạp do gần với ngôn ngữ máy.
Lập trình bằng C tuy cho chương trình có dung lượng lớn hơn so với khi lập trình bằng Assembly, nhưng đổi lại dễ dàng hơn trong việc code và debug. Để lập trình cho AVR, có khá nhiều trình biên dịch, ví dụ như AVR studio, WinAVR, codevisionAVR… Trong nội dung về học phần Đồ án II, em sẽ sử dụng ngôn ngữ lập trình C để lập trình cho VĐK. Môi trường để soạn thảo và biên dịch là phần mềm AtmelStudio 6. Phần mềm nạp mã máy là PROGISP (phiên bản 1.
Phần mềm giao tiếp giữa máy tính và VĐK là Terminal (phiên bản 1. Ngoài ra, trong phần vận dụng em có sử dụng thêm phần mềm Proteus 8.6 để mô phỏng mạch và phần mềm Altium Designer 18 để thiết kế mạch. CHI TIẾT CẤU HÌNH CỦA MẠCH KIT 2.1 Cấu trúc của mạch Kit Mạch Kit được cung cấp để đáp ứng các ứng dụng cơ bản có cấu trúc và chức năng của từng linh kiện quan trọng được nêu trong bảng dưới đây. Đầu tiên ta sẽ tìm hiểu về sơ đồ nguyên lý của bộ kit cùng với đó là mạch nguyên lý được vẽ bởi Altium một trong những công cụ vẽ mạch đi dây cũng như để in mạch mạnh và phổ biến nhất hiện nay.
Thông qua môn học đồ án II này em có thể thành thạo hơn việc sử dung altium để vẽ và thiết kế tất cả các loại mạch. Tự mình tạo ra một bản mạch mà mình mong muốn. Hình 2 : Sơ đồ nguyên lý của bộ kit 11 Hình 3 : Cấu trúc mạch kit được cung cấp Hình 4 : Sơ đồ mạch in, quan sát trên phần mềm thiết kế 12 Hình 5 : Bộ kit hoàn thiện Bảng 2.1 Linh kiện quan trọng của mạch Kit và chức năng tương ứng STT Tên linh kiện Chức năng 1 Giắc cắm nguồn Nhận nguồn điện 9-12 VDC cấp cho mạch Kit 2 IC ổn áp 7805 Hạ 9-12 VDC xuống 5 VDC và giữ ổn định mức điện áp này để cấp cho toàn mạch 3 LED báo nguồn Báo nguồn (sáng: có nguồn 5 VDC, tắt: mất nguồn) 4 VĐK Atmega16 Điều khiển hoạt động của mạch theo mã nguồn đã được nạp 5 Thạch anh Quyết định tần số xung nhịp cấp cho VĐK 6 Nút ấn Reset Khởi động lại VĐK 7 Giắc ISP Kết nối mạch nạp để nạp mã nguồn cho VĐK 8 Nhóm 4 phím ấn Nhận lệnh điều khiển từ người sử dụng 13 9 Giắc cắm 8 chân Nối tới 8 chân vào/ra (Port-A) của VĐK 10 Giắc cắm 8 chân Nối tới 8 chân vào/ra (Port-B) của VĐK 11 Giắc cắm 8 chân Nối tới 8 chân vào/ra (Port-C) của VĐK 12 Giắc cắm 8 chân Nối tới 8 chân vào/ra (Port-D) của VĐK 13 Dãy LED đơn Báo trạng thái logic của 8 chân ở Port-D của VĐK 14 Jumper dãy LED đơn Cho phép hoặc vô hiệu hóa dãy LED đơn 15 Hiển thị số 0-9 và một vài kí tự do người dùng LED 7 thanh định nghĩa 16 Jumper LED 7 thanh Cho phép hoặc vô hiệu hóa dãy LED 7 thanh 17 Giắc cắm LCD Kết nối tới màn hình LCD1602 18 Điều chỉnh trơn và liên tục, từ 0 đến 5 VDC, từ Biến trở vi chỉnh mức điện áp tại đầu vào ADC0 của bộ ADC (chân PA0) 19 Kết nối module chuyển đổi UART-USB (còn gọi Giắc UART-USB là COM-USB) 2.2 Các thông số chính của Kit Các thông số kĩ thuật của Kit: • Điện áp nguồn: - Tiêu chuẩn: 9-12 VDC - Giới hạn: 7-18 VDC • Dòng điện tiêu thụ: - Khi không có module mở rộng, toàn bộ LED chỉ thị I/O tắt: 18mA - Khi có LCD và module USB, LED chỉ thị I/O bị vô hiệu hóa: 22mA - Khi có LCD và module USB, toàn bộ LED chỉ thị I/O sáng: 80mA • Mạch có khả năng tự bảo vệ khi bị lắp ngược cực tính nguồn • Mức logic các cổng I/O: TTL (5V) • Điện áp tương tự vào các chân ADC: 0 – 5V • Loại VĐK được hỗ trợ: Atmega16, Atmega32 và tương đương • Cổng I/O mở rộng: 4 giắc cắm (loại 8 chân) ứng với 4 port • Hỗ trợ màn hình LCD: dạng text, giao tiếp 8 bit hay 4 bit • Hỗ trợ module USB: UART-USB hay COM-USB (mức 5 VDC) 14 • Xung nhịp tích hợp sẵn: thạch anh 8 Mhz 2.3 Mạch nạp mã nguồn Mạch nạp mã nguồn cho VĐK trong Kit là loại mạch nạp ISP thông dụng. Trong bộ Kit này sử dụng mạch nạp ISP chuẩn 10 chân như hình dưới.
Hình 6 : Mạch nạp ISP chuẩn 10 chân sử dụng cho bộ Kit 2.4 Màn hình LCD Mạch Kit được thiết kế để tương thích với màn hình LCD text (LCD 1602) như trên hình dưới. Hình 7 : Màn hình LCD 1602 sử dụng trong bộ Kit 15 CHƯƠNG 3. THỰC HÀNH LẬP TRÌNH CHO VĐK 3.1 Tạo Project mới với Atmel Studio 6 và nạp thử mã máy cho VĐK Khi bắt đầu lập trình với VĐK họ AVR có rất nhiều phần mềm hỗ trợ tốt cho dòng VĐK này, tuy nhiên, lí do mà Atmel Studio được sử dụng là mang lại sự hiểu biết về VĐK đang lập trình – vì với Atmel Studio ta phải khai báo cụ thể các chân, v. còn một số IDE khác hỗ trợ điều này khi tạo một project mới.
Cụ thể, để tạo một Project mới và nạp thử mã máy cho VĐK ta cần thông qua các bước sau: Bước 1: Trong Atmel Studio 6, vào File > New > Project. Sau khi thay đổi tên và đường dẫn lưu project thì ta bấm OK. Hình 9 : Giao diện tạo Project mới trong Atmel Studio 6 Bước 2: Sau khi tạo Project, giao diện chọn loại vi điều khiển sẽ hiện ra, ở đây ta sẽ chọn loại vi điều khiển là Atmega 16. 16 Hình 10 : Giao diện chọn loại vi điều khiển Bước 3: Cuối cùng thì chương trình sẽ hiện ra file chứa hàm main của project từ đó ta có thể code chương trình theo ý muốn.
17 Hình 12 : Hàm main của chương trình Bước 4 : Copy đoạn mã nguồn vào file main.c trong project vừa tạo: #include <avr/io.h> int main(){ DDRD |= 0xFF; PORTD |= 0xAA; DDRC |= 0xFF; PORTC |= 0x00; return 0; } 18 Đoạn code trên có nghĩa đang xét chế độ cho Port D và C với DDRx là mode Input hay Output của mỗi chân vi điều khiển.