Đăng ký Đăng nhập

Tài liệu Thuc tap vi dieu khien

.PDF
74
49
83

Mô tả:

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH THỰC TẬP VI ĐIỀU KHIỂN Ths. LÊ TIẾN LỘC Tháng 01/2014 1 MỤC LỤC CHƯƠNG 1: GIỚI THIỆU HỌ VI ĐIỀU KHIỂN AVR ................................................ 4 1.1 Cấu trúc và phần cứng cơ bản của vi điều khiển AVR.............................................. 4 1.1.1 Tính năng của ATMEGA32 ................................................................................ 4 1.1.2 Cấu trúc bộ nhớ ATMEGA32 ............................................................................. 6 1.1.3 Chức năng các chân của VĐK ATMEGA32: ..................................................... 6 1.2 Phần mềm sử dụng trong lập trình VĐK ATMEGA32 ........................................... 10 1.2.1 Phần mềm lập trình Codevision ........................................................................ 10 1.2.2 Phần mềm nạp Burn_E ..................................................................................... 14 1.2.3 Phần mềm mô phỏng mạch Proteus .................................................................. 15 1.3 Sơ đồ mạch board thí nghiệm vi điều khiển AVR ................................................... 17 CHƯƠNG 2: NGẮT TIMER, HIỂN THỊ LED ĐƠN, LED 7 ĐOẠN, LED MA TRẬN, LCD, MA TRẬN PHÍM .................................................................................................... 22 2.1 Thiết lập ngắt timer (bộ định thời) ........................................................................... 22 2.1.1 Các thanh ghi thiết lập ngắt Timer0: ................................................................. 22 2.1.2 Mục đích, yêu cầu: ............................................................................................ 24 2.1.3 Chương trình tham khảo: .................................................................................. 24 2.2 Điều khiển led đơn ................................................................................................. d26 2.2.1. Mục đích, yêu cầu: ........................................................................................... 26 2.2.2 Chương trình tham khảo: .................................................................................. 26 2.3 Hiển thị led 7 đoạn ................................................................................................... 29 2.3.1. Mục đích, yêu cầu: ........................................................................................... 29 2.3.2 Chương trình tham khảo: .................................................................................. 30 2.4 Hiển thị led matrix ................................................................................................... 35 2.4.1. Mục đích, yêu cầu: ........................................................................................... 35 2.4.2 Chương trình tham khảo: .................................................................................. 35 2.5 Hiển thị LCD ........................................................................................................... 38 2.5.1. Mục đích, yêu cầu: ........................................................................................... 38 2.5.2 Chương trình tham khảo: .................................................................................. 39 2.6 Giao tiếp ma trận phím (keypad) ............................................................................. 40 2.6.1. Mục đích, yêu cầu: ........................................................................................... 40 2 2.6.2 Chương trình tham khảo: .................................................................................. 41 CHƯƠNG 3: ĐO NHIỆT ĐỘ DÙNG ADC, ĐIỀU KHIỂN ĐỘNG CƠ DÙNG PWM, ĐẾM SỐ VÒNG DÙNG ENCODER ............................................................................... 44 3.1 Đo nhiệt độ dùng adc ............................................................................................... 44 3.1.1 Mục đích, yêu cầu: ........................................................................................ 44 3.1.2 Chương trình tham khảo: .................................................................................. 45 3.2 Điều khiển động cơ DC dùng PWM ........................................................................ 47 3.2.1 Mục đích, yêu cầu: ............................................................................................ 47 3.2.2 Chương trình tham khảo ................................................................................... 47 3.3 Điều khiển động bước (Step motor) ........................................................................ 50 3.3.1 Mục đích, yêu cầu: ............................................................................................ 50 3.3.2 Chương trình tham khảo ................................................................................... 50 3.4 Dùng ngắt ngoài đọc ENCODER ............................................................................ 53 3.4.1 Mục đích, yêu cầu: ............................................................................................ 53 3.4.2 Chương trình tham khảo ................................................................................... 53 CHƯƠNG 4: CHUẨN TRUYỀN I2C, 1_WIRE, SPI, USART ....................................... 58 4.1 Chuẩn truyền I2C ..................................................................................................... 58 4.1.1 Mục đích, yêu cầu: ............................................................................................ 58 4.1.2 Chương trình tham khảo: .................................................................................. 59 4.2 Chuẩn truyền 1_WIRE - lập trình giao tiếp DS1820 ............................................... 61 4.2.1 Mục đích, yêu cầu: ............................................................................................ 61 4.2.2 Chương trình tham khảo ................................................................................... 61 4.3 Chuẩn truyền SPI - lập trình giao tiếp SPI giữa 2 VĐK .......................................... 63 4.3.1 Mục đích, yêu cầu: ............................................................................................ 63 4.3.2 Chương trình tham khảo ................................................................................... 63 4.4 Giao tiếp UART giữa 2 VĐK .................................................................................. 66 4.4.1 Mục đích, yêu cầu: ............................................................................................ 66 4.4.2 Chương trình tham khảo ................................................................................... 66 TÀI LIỆU THAM KHẢO ................................................................................................. 74 3 CHƯƠNG 1: GIỚI THIỆU HỌ VI ĐIỀU KHIỂN AVR 1.1 Cấu trúc và phần cứng cơ bản của vi điều khiển AVR 1.1.1 Tính năng của ATMEGA32 Vi điều khiển ATmega32 là một loại vi điều khiển tương đối mới của hãng ATMEL sử dụng kiến trúc RISC (Reduced Instruction Set Computer). ATmega32 với kiến trúc RISC có chỉ tiêu chất lượng cao và tiêu thụ năng lượng ít: - 131 lệnh hầu hết được thực hiện trong một chu kỳ xung nhịp. - 32 thanh ghi làm việc đa năng. - Cung cấp đầy đủ các trạng thái hoạt động - Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây ở tần số 16MHz. Bộ nhớ dữ liệu và bộ nhớ chương trình không tự mất dữ liệu: - 32K byte bộ nhớ Flash lập trình được ngay trên hệ thống, có thể nạp xoá 10000 lần. - 1K byte bộ nhớ EEFROM lập trình được ngay trên hệ thống, có thể ghi xóa 100000 lần. - 2K byte bộ nhớ SRAM. - Có thể giao tiếp với 64K byte bộ nhớ ngoài. - Khóa bảo mật phần mềm lập trình được. - Giao diện nối tiếp SPI để lập trình ngay trên hệ thống. Các tính năng ngoại vi: - Hai bộ đếm/ bộ định thời 8 bit với chế độ so sánh và chia tần số tách biệt. - Hai bộ đếm/ bộ định thời 16 bit với chế độ so sánh, chia tần số tách biệt và chế độ bắt mẫu (Capture Mode). - Bộ đếm thời gian thực (RTC) với bộ dao động tách biệt. - Bốn bộ điều chế độ rộng xung PWM 8 bit. Bộ biến đổi ADC bên trong 8 kênh 10 bit. 2 bộ USART nối tiếp lập trình được. Có giao thức truyền SPI chủ và tớ Bộ định thời Watchdog lập trình được với bộ dao động trên chip. Một bộ so sánh Analog. Các tính năng vi điều khiển đặc biệt: - Có mạch power - on reset và có thể reset bằng phần mềm. - Có nguồn dao động nội tích hợp sẵn bên trong. - 4 - Có 2 nguyên nhân gây ngắt là bên trong và bên ngoài. - Có 6 chế độ ngủ: nghỉ (Idle). Tiết kiệm năng lượng (power save) và power down, ADC Noise Reduction, Standby and Extended Standby. Ngõ vào, ngõ ra và các cách đóng vỏ - 32 đường vào ra lập trình được. - 40 chân dán kiểu vỏ chữ nhật (PDIP), 44 chân dán kiểu vỏ vuông (TQFP) Điện thế làm việc: - VCC = 2,7V đến 5,5V đối với ATmega32L. - VCC = 4,5V đến 5,5V đối với ATmega32. Vùng tốc độ làm việc: - 0 đến 8 MHz đối với ATmega32L. - 0 đến 16 MHz đối với ATmega32. Năng lượng tiêu thụ tại tần số 1MHz, 3V, 25oC đối với ATmega32L: - Chế độ hoạt động: 1,1mA - Chế độ nghỉ: 0,35mA - Chế độ nguồn giảm: <1µA Hình 1.1: Dạng phân bố chân vào ra của ATmega32 dạng PDIP và TQFP/MLF ATmega32 là bộ vi điều khiển RISC 8 bit tiêu thụ năng lượng nhưng đạt hiệu suất rất cao, dựa trên kiến trúc RISC AVR. Bằng việc thực hiện các lệnh trong một chu kỳ xung nhịp, ATmega32 đạt được tốc độ xử lý dữ liệu lên đến 1 triệu lệnh/giây ở tần số 1MHz. ATmega32 còn cho phép người thiết kế hệ thống tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý. 5 1.1.2 Cấu trúc bộ nhớ ATMEGA32 AVR có cấu trúc Harvard, trong đó phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình, chúng có những đường bus riêng để truy cập vào bộ nhớ dữ liệu và bộ nhớ chương trình. Bus bộ nhớ dữ liệu (Data memory bus) chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với file thanh ghi (Register File). Trong khi đó bus bộ nhớ chương trình (Program memory bus) có độ rộng 16 bits và chỉ phục vụ cho thanh ghi lệnh (instruction registers). Hình 1.2: Cấu trúc bộ nhớ của AVR. 1.1.3 Chức năng các chân của VĐK ATMEGA32: VCC: Điện áp nguồn nuôi. GND: Đất. Port A (PA7…PA0) - Các chân của Port A là ngõ vào của analog của bộ chuyển đổi ADC - Port A cũng dùng làm 8 bit xuất nhập dữ liệu được định địa chỉ nếu bộ chuyển đổi ADC không được sử dụng. Những chân củaPort này đã được cung cấp điện trở nội kéo lên bên trong. Bộ đệm ngõ ra của Port A thì đã được thiết kế tầng lái đối xứng để có thể họat động được ở chế độ sink và source. Khi các chân từ PA0 đến PA7 là các ngõ vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân này sẽ ở 6 trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi không có dao động. Port B (PB7…PB0) - Port B dùng làm 8 bit xuất nhập dữ liệu được định địa chỉ. Những chân củaPort này đã được cung cấp điện trở nội kéo lên bên trong. Bộ đệm ngõ ra củaPort B thì đã được thiết kế tầng lái đối xứng để có thể họat động được ở chế độ sink và source. Khi các chân từ PB0 đến PB7 là các ngõ vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi không có dao động. - Các chân của Port B còn có các chức năng đặc biệt khác như sau: Bảng 1.1 Chức năng các chân PORTB Port C (PC7…PC0) - Port C dùng làm 8 bit xuất nhập dữ liệu được định địa chỉ. Những chân củaPort này đã được cung cấp điện trở nội kéo lên bên trong. Bộ đệm ngõ ra củaPort C thì đã được thiết kế tầng lái đối xứng để có thể họat động được ở chế độ sink và source. Khi các chân từ PC0 đến PC7 là các ngõ vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi không có dao động. - Các chân của Port C còn có các chức năng đặc biệt khác như sau: Bảng 1.2 Chức năng các chân PORTC 7 Port D (PD7…PD0) - Port D dùng làm 8 bit xuất nhập dữ liệu được định địa chỉ. Những chân củaPort này đã được cung cấp điện trở nội kéo lên bên trong. Bộ đệm ngõ ra củaPort D thì đã được thiết kế tầng lái đối xứng để có thể họat động được ở chế độ sink và source. Khi các chân từ PD0 đến PD7 là các ngõ vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi không có dao động. - Các chân của Port D còn có các chức năng đặc biệt khác như sau: Bảng 1.3 Chức năng các chân PORTD Reset: Ngõ vào được đặt lại. ATmega32 sẽ được đặt lại khi chân này ở mức thấp trong hơn 50ns hoặc ngay cả khi không có tín hiệu xung clock. Các xung ngắn hơn không tạo ra tín hiệu đặt lại. 8 Hình 1.3: Mạch Reset cho AVR AVCC: Cung cấp nguồn cho Port A và bộ chuyển đổi ADC hoạt động. Ngay khi không sử dụng bộ chuyển đổi ADC thì chân AVCC vẫn phải đươc kết nối tới nguồn VCC. AREF: Đây là chân điều chỉnh điện áp tham chiếu cho bộ chuyển đổi A/D. XTAL1: Ngõ vào bộ khuếch đại đảo và ngõ vào mạch tạo xung nhịp bên trong. XTAL2: Ngõ ra bộ khuếch đại đảo. Bộ tạo dao động thạch anh:  XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo, bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip như trên hình 3.  Để điều khiển được bộ Vi Điều Khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để không, chân XTAL1 được nối với tín hiệu dao động bên ngoài . Hình 1.4: Cách thiết kế bộ vi điều khiển dùng một nguồn xung bên ngoài. 9 Hình 1.5: Cách kết nối bộ dao động 1.2 Phần mềm sử dụng trong lập trình VĐK ATMEGA32 1.2.1 Phần mềm lập trình Codevision Phần mềm Codevision hỗ trợ tính năng tạo code tự động với CodeWizardAVR cho các chức năng như ngắt ngoài, timer, ADC, I2C, SPI… Khi ta dùng tính năng này phần mềm sẽ tự động tạo code cho phần khai báo và tự động add những thư viện cần thiết vào project. Khởi động chương trình Codevision Avr, sau đó Tool ->CodeWizardAVR Hình 1.6: Thao tác mở CodeWizardAVR Bảng thông báo hiện ra ta chọn dòng AVR cần lập trình Hình 1.7: Lựa chọn dòng AVR 10 Một bảng thiết lập hiện ra ta chọn thẻ Chip và lựa chọn đúng tên AVR cần viết code và khai báo tần số thạch anh cho chip hoạt động. Hình 1.8: Lựa chọn chip AVR và tần số thạch anh Tiếp theo tùy theo yêu cầu của Project cần làm ta sẽ chọn các tab tương ứng để khai báo như: Ports: để khai báo các chân là Input hay Output ExternalIQR: khai báo sử dụng ngắt ngoài Timers: sử dụng ngắt Timer hay chế độ điều xung PWM AlphanumericLCD: khai báo sử dụng text LCD 16x2, 16x4, 20x2, 20x4… Graphic LCD: khai báo sử dụng Graphic LCD I2C: khai báo sử dụng chuẩn truyền I2C Sau khi khai báo xong các tab cần thiết, ta vào mục Generate, Save and Exit. Hộp thoại save hiện ra, ta chọn đường dẫn lưu Project và tên file. Hình 1.9: Tạo code, lưu file và thoát khỏi CodeWizard 11 Cửa sổ lưu file hiện ra và ta sẽ lần lượt save các file gồm file C, file prj, file cwp. Khi quá trình lưu project hoàn tất, Project sẽ tự động mở lên. Lưu ý nên tạo 1 folder và lưu cả 3 file trên vào đó để dễ quản lý. Hình 1.10: Cửa sổ soạn thảo của Codevision AVR Phần mềm đã khai báo cho ta các chức năng cần thiết, bây giờ ta sẽ soạn thảo code C tùy theo yêu cầu của project cần làm. Sau khi soạn thảo xong ta biên dịch project để tạo file Hex bằng cách vào Project -> Build hoặc nhấn tổ hợp phím Shilft+F9 hay click vào biểu tượng Buil trên thanh công cụ Bấm vào đây để biên dịch chương trình Hình 1.11: Cách biên dịch Project 12 Sau khi biên dịch Project sẽ xuất hiện bảng thông báo sau: Thông báo số lỗi: No error Hình 1.12: Bảng thông báo kết quả biên dịch Project Bảng trên báo cho ta biết thông tin về Chip sử dụng, tần số thạch anh, dung lượng bộ nhớ RAM và EEPROM đã sử dụng trong chương trình. Nhưng quan trọng nhất là thông báo số lỗi (ERROR) trong chương trình. Để biên dịch thành công ra file Hex thì phải có thông báo là No error. Còn Warning là cảnh báo ta cần xem lại nên nếu có cũng không sao. Sau khi biên dịch thành công file Hex sẽ được tạo ra trong folder Exe ở thư mục ta đã chọn lưu các file ban đầu. Double click vào thư mục Exe ta sẽ thấy file Hex 13 Hình 1.13: Folder chứa file Hex Bây giờ ta đã có file Hex và việc cần làm là nạp vào vi điều khiển AVR để chạy thử nghiệm hay dùng phần mềm Proteus để mô phỏng mạch. 1.2.2 Phần mềm nạp Burn_E Để nạp file Hex vào vi điều khiển AVR có nhiều phần mềm khác nhau. Tuy nhiên trong phần này tôi chọn phần mềm Burn_E. Hình 1.14: Lựa chọn chip VĐK Bấm vào đây để chọn đường dẫn đến file Hex Hình 1.15: Chọn đường dẫn tới file Hex 14 Bấm vào đây để nạp file Hex vào Vi điều khiển Hình 1.16: Nạp chương trình 1.2.3 Phần mềm mô phỏng mạch Proteus Từ giao diện chính phần mềm Proteus nhấn phím P hay click vào nút P bên góc trái màn hình để vào mục lấy linh kiện. Bấm vào đây để lấy linh kiện Hình 1.17: Giao diện chính phần mềm Proteus Gõ tên linh kiện hay IC cần tìm vào đây Nhấp lựa chọn linh kiện hay IC mong muốn 15 Hình 1.18: Giao diện lựa chọn linh kiện Sau khi chọn VĐK ATMEGA32 ta nhấp chuột phải chọn Edit Properties. Hộp thoại hiện ra, ta chọn mục Program File và chọn đường dẫn đến file Hex. Hình 1.19: Cách add file Hex vào VĐK trong Proteus 16 1.3 Sơ đồ mạch board thí nghiệm vi điều khiển AVR Hình 1.20: KIT thí nghiệm Vi Điều Khiển thực tế Hình 1.21: Khối MCU ATMEGA32 và mạch Reset, Dao động dùng Crystal Hình 1.22: Khối Led đơn 17 Hình 1.23: Khối nút nhấn đơn Hình 1.24: Khối bàn phím Ma trận Hình 1.25: Khối Led 7 đoạn 18 Hình 1.26: Khối điều khiển Led Matrix 1 VCC_5V VCC U5 2 GND BUZZER R7 Q3 BUZZER A1013 4K7 BUZZER Hình 1.27: Khối điều khiển màn hìnhLCD và khối Buzzer 1 VCC VCC X1 Y1 32.768 3 2 1 VCC U4 8 R12 4K7 SQW/OUT 3 VBAT SCL SDA 6 5 SCL/Px.x SDA/Px.x DS1307 4 BT1 3.6V X2 GND 2 7 Hình 1.28: Khối giao tiếp Realtime DS1307 REAL TIME DS1307 19 Hình 1.29: Khối giao tiếp RS232 Hình 1.30: Khối điều khiển động cơ DC 20
- Xem thêm -

Tài liệu liên quan