Đồ án học phần 1D
MỤC LỤC
1
Đồ án học phần 1D
LỜI MỞ ĐẦU
Từ khi công nghệ chế tạo loại vi mạch lập trình ra đời đã đem đến các kỹ thuật điều
khiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạch điều khiển lắp ráp
bằng các linh kiện rời như kích thước nhỏ, giá thành rẻ, khả năng làm việc tin cậy, công
suất tiêu thụ nhỏ. Hàng loạt nhà sản xuất MCU ra đời như Atmel, Philip, Motorola với
hàng loạt chip với nhiều tính năng vô cùng phong phú và đa dạng. Ngày nay, lĩnh vực
điều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản phẩm phục vụ cho nhu cầu
sinh hoạt hàng ngày của con người như máy giặt, đồng hồ báo giờ….. đã giúp cho đời
sống của chúng ta ngày càng hiện đại và tiện nghi hơn. Bên cạnh đó, động cơ servo với
nhiều kiểu dáng và kích thước cũng ngày càng được ứng dụng trong những thiết bị yêu
cầu có độ chính xác cao về tốc độ và số vòng quay, hoạt động linh hoạt với nhiều chức
năng khác nhau như trong những cánh tay rôbốt trong công nghiệp, rôbốt dò phá bom
mìn trong quân đội, các động cơ trong mô hình xe hơi, máy bay, máy CNC …
Trong số những nhà sản xuất MCU 8 bit thì Atmel đã trở nên quá quen thuộc với
giới sinh viên, kỹ thuật Việt Nam. Nhóm chúng em tìm hiểu đề tài về MCU AVR – một
trong những MCU được sử dụng rất rộng rãi trong kỹ thuật điều khiển vì vậy nhóm em
xin chọn đề tài: “ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG VI ĐIỀU
KHIỂN AVR”. Vì thời gian và kiến thức có hạn nên trong nội dung đề tài chúng em chỉ
dừng lại đến việc điều khiển tốc độ động cơ ở chế độ không tải bằng cách tăng giảm thời
gian TON của xung PWM, đảo chiều quay, hãm động cơ và hiển thị các thông số này trên
LCD
2
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
TPHCM, ngày … tháng … năm 2014
Giáo viên hướng dẫn
Nhận xét
(Của giáo viên phản biện)
4
Đồ án học phần 1D
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Atmel ATMEGA16
2. Ưu thế của MCU AVR
Kết nối phần cứng cho AVR đơn giản với những linh kiện thông dụng như điện
trở, tụ điện, thạch anh. Dòng ra điều khiển Port lớn và không cần dùng điện trở kéo.
Thiết kế mạch nạp cho AVR khá đơn giản giao tiếp qua cổng LPT, COM, USB. Hỗ
trợ ISP lập trình trực tiếp trên mạch. Hỗ trợ lập trình trên nền ngôn ngữ ASM, C với
nhiều công cụ hỗ trợ như CodeVision, AVR Studio.
Hầu hết các chip AVR có những tính năng sau:
-
Xung External OSC lên đến 16Mhz và Internal OSC 8Mhz.
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ó thể ghi và xóa trên 1000 lần. Bên cạnh đó bộ nhớ EEPROM có thể lập trình
-
được.
32 Port xuất nhập.
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
6
Đồ án học phần 1D
-
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).
-
Dung lượng bộ nhớ: 16Kb Flash, 512 EEPROM, 1kb Internal SRAm
-
Khả năng ghi và xóa có thể đạt đến 10000 lần, lưu trữ trong thời gian dài trên
20 năm/85oC-100 năm 25oC.
-
Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit
-
2 bộ Timer 16 bit, 1 bộ timer 16 bit, 4 kênh PWM
-
8 kênh ADC 10 bit, 32 port xuất nhập
-
Hỗ trợ gioa tiếp I2C, USART, SPI
-
Hoạt động tốt ở hiệu điện thế 4.5V - 5.5 V
tự
số.
PORT A thiết kế
với
điện trở nội treo
lên ở
mức cao.
PORT B:
PORT
Là
xuất nhập thông
thường 8 bit.
PORT C: Là PORT
xuất
nhập
thường
thông
8
9
XTAL1, XTAL2, RESET
Đồ án học phần 1D
3. Các khối chính:
3.1 CPU:
10
Đồ án học phần 1D
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data
memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được
tách riêng. 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 register file. Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục
vụ cho instruction registers.
3.2 ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán được
thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3 loại: đại số,
logic và theo bit.
3.3 Thanh ghi trạng thái SREG
Đây là thanh ghi 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và
logic.
-
C: Carry Flag cờ nhớ.
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 dùng để lưu trữ biến trong quá trình tính toán. Stack được hiểu
12
Đồ án học phần 1D
như là 1 “tháp” dữ liệu, dữ liệu được chứa vào stack ở đỉnh “tháp” và dữ liệu cũng
được lấy ra từ đỉnh. Kiểu truy cập dữ liệu của stack gọi là LIFO.
Khai báo SP tại một vùng nhớ trong SRAM với địa chỉ của SP thiết lập >$60. Con
trỏ giảm địa chỉ xuống 1 khi dữ liệu được đưa vào Stack với lệnh PUSH và hai khi có
Subroutine hoặc Interrupt được gọi. Con trỏ tăng địa chỉ lên 1 khi có lệnh POP dữ liệu
thực hiện và lên hai khi trả dữ liệu về cho chương trình con.
4. Bộ nhớ - Memory:
4.1 Bộ nhớ chương trình Flash
Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình với độ rộng 16
bit. 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 8K x 16.
Bộ nhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưng trong
các chip AVR mới chúng ta có thêm phần Boot Flash section. Thực chất, application
section bao gồm 2 phần: phần chứa các instruction và phần chứa interrupt vectors.
13
Đồ án học phần 1D
Các vector ngắt nằm ở phần đầu của application section từ địa chỉ 0x0000 và dài đến
bao nhiêu tùy thuộc vào loại chip và phần chứa instruction nằm liền sau đó. Các
chương trình được viết sau địa chỉ đó.
4.2 Bộ nhớ dữ liệu SRAM:
các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock
và 1 instruction chứa trong program memory sẽ được load vào trong instruction
register, instruction register tác động và lựa chọn register file cũng như RAM cho ALU
thực thi. Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được
quyết định bởi một bộ đếm chương trình – PC (Program counter). Hầu hết các
instruction đều được thực thi trong 1 chu kỳ xung clock.
15
Đồ án học phần 1D
III. CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA 16
1. Input & Output
1.1 Giới thiệu
Vi điều khiển ATmega16 có 32 đường vào ra chia làm bốn PORT: PORTA –
PORTB – PORTC – PORTD mỗi PORT 8bit có thể tương tác điều khiển từng bit một. Các
cổng ra có điện trở nội kéo lên nên khi dùng chức năng Input ta không cần dùng điện
trở kéo lên ở bên ngoài. Các PORT được điều khiển bởi các bộ thanh ghi sau: thanh ghi
dữ liệu cổng PORT, thanh ghi dữ liệu điều khiển cổng DDR và cuối cùng là địa chỉ chân
vào của cổng PIN.
1.2 Thanh ghi DDR
Đâ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 PORT (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 PORT đượ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 PORT
được định nghĩa là cổng vào.
1.3 Thanh ghi PORT
Đâ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 PORT 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
Đồ án học phần 1D
- Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trong
port) đó là đầu ra (xóa thanh ghi DDRx hoặc bit).
- Xuất giá trị ra Port.
4. INTERRUPT – Ngắt
4.1 Giới thiệu
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn
sàng cho đổi dữ liệu của mình.Ví dụ: Khi bộ truyền nhận UART nhận được một byte nó
sẽ báo cho CPU biết thông qua cờ RXC, hoặc khi nó đã truyền được một byte thì cờ TX
được thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị
trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc
vụ ngắt và thức hiện chương trình phục vụ ngắt đó cho tới khi gặp lệnh RETI (Return
from Interrupt) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình
mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu
cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo
mức ưu tiên.
Atmega 16 có các ngắt sau:
18
Đồ án học phần 1D
4.2 Ngắt ngoài – External Interrupts
Atmega16 có 3 ngắt ngoài INT0 (PORTD.2), INT1 (PORTD.3) và INT2 (PORTB.2).
Khi xảy ra một trong các sự kiện đối với các chân này:
-
điều khiển ngắt INT0 và INT2.
4.3.4 GIFR – General Interrupt Flag Register
Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) có 2 bit
INTF1 và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT và INT0. Nếu có
1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1
(tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này để nhận ra
các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì
vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài.
5. TIMER – COUNTER
Timer – Counter (T/C) là các module độc lập với CPU. Chức năng chính của các
bộ T/C, như tên gọi của chúng, là định thì (tạo ra một khoảng thời gian, đếm thời gian…)
và đếm sự kiện. Trên các chip AVR, các bộ T/C còn có thêm chức năng tạo ra các xung
20
Đồ án học phần 1D
điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số T/C còn được
dùng như các bộ canh chỉnh thời gian (calibration) trong các ứng dụng thời gian thực.
Cụ thể trên chip Atmega16 có 2 bộ Timer 8 bit (T/C0 và T/C2) và 1 bộ 16 bit
(T/C1) có các chức năng 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
Đồ án học phần 1D
- FOC0: Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc
không có PWM
- WGM00 và WGM01: Các bit này cho phép lựa chọn 1 trong 4 chế độ hoạt
động của T/C0 theo bảng sau:
- COM01 và COM00: 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.
- CS02, CS01 và CS00: Các bit này quy định nguồn xung nhịp cấp cho T/C0
như bảng sau:
OCR0 (Output Compare Register): Thanh ghi dữ liệu so sánh chứa một giá trị 8
bít. Giá trị này sẽ được so sánh liên tiếp với giá trị đếm trong thanh ghi TCNT0. Một sự
kiện so sánh có thể gây ra một ngắt hoặc sinh ra xung ở đầu ra OC0
23
Đồ án học phần 1D
TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ cho
ngắt của tất cả các T/C trong Atmega 16, trong đó chỉ có bit TOIE0 và OCIE0 trong
thanh ghi này là liên quan đến T/C0
- OCIE0: Cho phép ngắt báo hiệu so sánh
- TOIE0: Cho phép ngắt tràn bộ đếm
TIFR
(Timer/Counter Interrupt Flag Register): Là thanh ghi cờ nhớ cho tất cả các bộ T/C.
Trong thanh ghi này bit TOV0 và OCF0 có liên quan đến T/C0
- OCF0: Cờ so sánh ngõ ra 0
- TOV0: Cờ tràn bộ đếm
cứng. TCR2UB = 0 nghĩa là thanh ghi TCNT2 đang sẵn sàng để có thể cập nhật một giá
trị mới.
OCR2UB: Tương tự như bit TCN2UB nhưng đối với OCR2
TCR2UB: Khi T/C2 hoạt động ở chế độ không đồng bộ, bít này sẽ bằng 1. Khi
TCCR2 đã được cập nhật từ thanh ghi dữ liệu tạm thời, bít này sẽ tự động xóa bởi phần
cứng. TCR2UB = 0 nghĩa là thanh ghi TCCR2 đang sẵn sàng để có thể cập nhật một giá
trị mới.
5.3 Timer – Counter 1
Timer – Counter 1 là bộ T/C 16 bit và có 5 chế độ hoạt động. Ngoài các chức năng
định thì thông thường, T/C 1 rất lý tưởng trong việc lập trình và đo lường vì có độ phần
giải cao (16 bit) và còn có khả năng tạo xung PWM dùng để điều khiển động cơ
25