Tải bản đầy đủ (.pdf) (95 trang)

Nghiên cứu, ứng dụng vi điều khiển cho modul gia công tự động kiểu nối tiếp tuần hoàn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.98 MB, 95 trang )

LỜI CAM ĐOAN
Tôi xin cam đoan các số liệu và kết quả nêu trong Luận văn là trung thực và
chưa từng được ai công bố trong bất kỳ một công trình nào khác. Trừ các phần
tham khảo đã được nêu rõ trong Luận văn.

Tác giả

Tống Quang Dương

-1-


LỜI CẢM ƠN
Tác giả xin chân thành cảm ơn TS.Nguyễn Đình Mãn, người đã hướng dẫn và
giúp đỡ tận tình từ định hướng đề tài, tổ chức thực nghiệm đến quá trình viết và
hoàn chỉnh Luận văn.
Tác giả bày tỏ lòng biết ơn các thầy cô trong bộ môn Máy và Ma Sát học đã
cùng sự giúp đỡ của các cán bộ phòng thí nghiệm FMS & CIM, xưởng Cơ khí bộ
môn Công nghệ Chế tạo máy, Viện Cơ khí. Xin cám ơn Ban lãnh đạo và Viện đào
tạo Sau đại học, Viện Cơ khí của trường Đại học Bách Khoa Hà Nội đã tạo điều
kiện thuận lợi để hoàn thành bản Luận văn này.
Do năng lực bản thân còn nhiều hạn chế nên Luận văn không tránh khỏi sai
sót, tác giả rất mong nhận được sự đóng góp ý kiến của các Thầy, Cô giáo, các nhà
khoa học và các bạn đồng nghiệp.

Tác giả

Tống Quang Dương
.

-2-




MỤC LỤC

LỜI CAM ĐOAN.................................................................................. 1
LỜI CẢM ƠN ....................................................................................... 2
HỆ THỐNG DANH MỤC CÁC HÌNH VẼ ........................................ 6
HỆ THỐNG DANH MỤC CÁC BẢNG BIỂU ................................... 7
PHẦN MỞ ĐẦU ................................................................................... 8
1. Lý do chọn đề tài ............................................................................... 8
2. Lịch sử nghiên cứu ............................................................................ 8
3. Đối tƣợng nghiên cứu: ...................................................................... 8
4. Tóm tắt những luận điểm cơ bản và đóng góp mới của tác giả ..... 8
5. Phƣơng pháp nghiên cứu................................................................. 9
CHƢƠNG I ......................................................................................... 10
TỔNG QUAN VỀ VI ĐIỀU KHIỂN ................................................. 10
1.1 Giới Thiệu Họ Vi Điều Khiển MCS – 51 ..................................... 10
1.2 Tổng quan về vi điều khiển AVR. ................................................ 13
1.2.1 Giới thiệu tổng quan họ vi điều khiển AVR. ........................... 13
1.2.2 Kiến trúc AVR ........................................................................... 14
1.2.3 Bộ nhớ EEPROM ....................................................................... 31
1.2.4 Bộ nhớ SRAM ............................................................................ 34
1.2.5 Bộ định thời ................................................................................ 35
1.2.6 Bộ truyền nhận UART ............................................................... 38
1.2.7 Bộ biến đổi A/D bên trong ......................................................... 41
CHƢƠNG II ........................................................................................ 42
KHÁI QUÁT VỀ HỆ THỐNG SẢN XUẤT TỰ ĐỘNG .................. 42
2.1 Những khái niệm cơ bản về hệ thống sản xuất tự động .............. 42

-3-



2.1.1 Định nghĩa hệ thống sản xuất tự động ...................................... 42
2.1.2 Cấu trúc của hệ thống sản xuất tự động ................................... 42
2.1.3 Quy trình thiết kế hệ thống sản xuất tự động........................... 42
2.2 Các thành phần trong hệ thống sản xuất tự động ...................... 43
2.3 Hệ thống kiểm tra trong sản xuất ............................................... 46
2.3.1 Chức năng hệ thống kiểm tra ................................................... 46
2.3.2 Nguyên tắc kiểm tra thông số kỹ thuật của các phần tử và
modul trong hệ thống gia công nối tiếp tuần hoàn ........................... 48
2.4 Hƣớng phát triển của hệ thống gia công nối tiếp tuần hoàn ...... 52
2.4.1 Sử dụng máy với hệ thống điều khiển linh hoạt ....................... 52
2.4.2 Sản xuất hàng loạt theo dây chuyền.......................................... 52
2.4.3 Sản xuất tự động hóa linh hoạt ................................................. 53
2.4.4 Modul sản xuất linh hoạt ........................................................... 53
2.4.5 Hệ thống sản xuất linh hoạt toàn phần ..................................... 54
2.4.6 Hệ thống sản xuất linh hoạt toàn phần bậc cao ....................... 54
2.4.7 Ứng dụng kỹ thuật CIM ............................................................ 54
2.4.8 Ứng dụng trí tuệ nhân tạo ......................................................... 54
CHƢƠNG III ...................................................................................... 55
THIẾT KẾ HỆ THỐNG GIA CÔNG TỰ ĐỘNG KIỂU NỐI TIẾP
TUẦN HOÀN ...................................................................................... 55
3.1 Kết cấu bàn gia công 6 vị trí ......................................................... 55
1: Bàn cố định; 2: Bàn Quay; 3 Cơ cấu mantit nội tiếp.................... 56
3.1.1 Bàn cố định. ................................................................................ 56
3.1.2 Bàn quay. .................................................................................... 56
Hình 3.2 Kết cấu bàn quay ................................................................. 56

-4-



3.1.3 Cơ cấu mantit nội tiếp ............................................................... 57
Hình 3.3 Kết cấu mantit nội tiếp ........................................................ 57
3.2 Phân tích thiết kế chế tạo máy gia công cho hệ thống ................ 57
3.2.1 Phân tích, tính toán chi tiết gia công ......................................... 57
3.2.2 Quy trình công nghệ gia công chi tiết ....................................... 59
3.2.3 Kết cấu máy dụng cụ ................................................................. 70
3.2.4 Thiết kế ROBOT cho hệ thống .................................................. 75
CHƢƠNG IV ...................................................................................... 87
ĐIỀU KHIỂN HỆ THỐNG BẰNG VĐK .......................................... 87
4.1 Phân tích sơ đồ điều khiển modul tự động kiểu gia công nối tiếp
tuần hoàn ............................................................................................. 87
4.2 Lập trình điều khiển hệ thống bằng vi điều khiển ...................... 89
KẾT LUẬN VÀ KIẾN NGHỊ ............................................................ 94
TÀI LIỆU THAM KHẢO .................................................................. 95

-5-


HỆ THỐNG DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Sơ đồ chân của 8051.................................................................................11
Hình 1.2 Kiến trúc của bộ xử lý AVR........................... ............................................17
Hình 1.3 Bản đồ bộ nhớ của vi điều khiển AVR........................................................20
Hình 1.4 Tệp thanh ghi của vi điều khiển AVR.......................... ..............................21
Hình 1.5 Tìm nạp/giải mã lệnh và việc thực thi lệnh................................................22
Hình 1.6 Việc thực thi của ALU bao gồm tìm/nạp, thực thi, và ghi ngược vào thanh
ghi..............................................................................................................................23
Hình 1.7 Các chu trình truy nhập dữ liệu lên thanh ghi SRAM trên
chip............................................................................................................................23
Hinh 1.8 Mô tả chi tiết một trong các bit cổng (PORTD4)......................................33

Hình 1.9. Kết nối bộ nhớ SRAM ngoài với bộ điều khiển AVR.................................35
Hình 1.10 Chu trình truy nhập SRAM ngoài và bộ điều khiển AVR không có các
trạng thái chờ............................................................................................................36
Hình 1.11 Chu trình truy nhập SRAM ngoài và bộ điều khiển AVR có các trạng thái
chờ bổ xung...............................................................................................................36
Hình 1.12 Một mạch chia tần số đồng hồ dùng cho Timer0 cũng như
Timer1.......................................................................................................................37
Hình 1.13 Sơ đồ khối của Timer/counter0................................................................38
Hình 1.14 Sơ đồ khối của bộ Timer/Counter1..........................................................38
Hình 1.15 Sơ đồ khối của bộ truyền trên UART.......................................................39
Hình 1.16 Sơ đồ khối của bộ nhận UART.................................................................40
Hình 1.17 Sơ đồ khối của bộ biến đổi ADC 10 bit với 8 lối vào...............................41
Hình 2.1 Hệ thống chế tạo gia công trục động cơ điện (Fuji Electric)....................46
Hình 2.2 Hệ thống sản xuất Tự Động của hãng Murata Machinery với ứng dụng xe
rùa tự động chạy trực tiếp trên nền xưởng...............................................................47
Hình 2.3. Hệ thống vận chuyển-tích trữ vệ tinh trong CIM của hãng Cincinnati
Milacron (Mỹ)...........................................................................................................50
Hình 2.4. Ổ tích vệ tinh với xe tời di động của hãng Hitachi Seiki(Nhật Bản).........51

-6-


Hình 3.1 Kết cấu hệ thống gia công 6 vị trí .............................................................55
Hình 3.2 Kết cấu bàn quay........................................................................................56
Hình 3.3 Kết cấu mantit nội tiếp ..............................................................................57
Hình 3.4 Chi tiết gia công ........................................................................................57
Hình 3.5 Định vị chi tiết ...........................................................................................60
Hình 3.6 Mô hình máy phay hướng kính ..................................................................70
Hình 3.7 Mô hình máy phay tiếp tuyến.....................................................................71
Hình 3.8 Mô hình máy khoan ...................................................................................73

Hình 3.9 Robot kiểu tọa độ cầu ................................................................................77
Hình 3.10 Robot kiểu SCARA ..................................................................................78
Hình 3.11 Mô hình robot lật ....................................................................................79
Hình 3.12 Mô hình cánh tay robot lật ......................................................................80
Hình 3.13 Mô hình phần quay và phần kẹp chi tiết của robot lật ...........................80
Hình 3.14 Mô hình robot cấp phôi ...........................................................................83
Hình 3.15 Hoạt động của hệ thống khí nén trong robot...........................................84
Hình 4.1 Sơ đồ nguyên công gia công chi tiết trên modul tự động ........................86

HỆ THỐNG DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1 Mô tả sự khác nhau của các IC trong họ MSC-51....................................11
Bảng 1.2 Bộ nhớ chương trình dùng cho địa chỉ.....................................................18
Bảng 2.1.Thành phần các máy CNC trong hệ thống FMS......................................45
Bảng 2.2 Chức năng của hệ thống kiểm tra ............................................................47
Bảng 3.1 Bảng tra chế độ cắt....................................................................................65

-7-


PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Do yêu cầu của thực tế cần trong nghành cơ khí cần phải gia công chi tiết một
cách linh hoạt và ta có thể đáp ứng được yêu cầu đó bằng việc ứng dụng vi điều
khiển vào hệ thống gia công tự động kiểu nối tiếp tuần hoàn
So với các hệ thống sản xuất truyền thống, FMS có nhiều ưu điểm vượt trội
hơn hẳn. Hệ thống FMS không những làm tăng năng suất và chất lượng sản phẩm,
hạ giá thành của sản phẩm mà còn có khả năng linh hoạt cao, đáp ứng được những
thay đổi nhanh chóng của thị trường.
Với yêu cầu từ thực tiễn và những ứng dụng có ý nghĩa quan trọng của tự
động hóa và tối ưu hóa các thiết bị cơ khí trong các quá trình sản xuất tích hợp vi

điều khiển để điều khiển chúng, với sự hướng dẫn tận tình của thầy giáo hướng dẫn
TS. Nguyễn Đình Mãn Tác giả đã chọn đề tài “Nghiên cứu, ứng dụng vi điều
khiển cho modul gia công tự động kiểu nối tiếp tuần hoàn ”
2. Lịch sử nghiên cứu
Để thực hiện đề tài, trước hết tác giả đã nghiên cứu, khảo sát về các hệ thống
gia công đã và đang được ứng dụng, sau đó lựa chọn hệ thống phù hợp để thiết kế
và chế tạo. Quá trình thiết kế, chế tạo cơ khí và quá trình thiết kế hệ thống điều
khiển được tiến hành đồng thời.
3. Đối tƣợng nghiên cứu:
Đối tượng nghiên cứu của đề tài là tập hợp các máy công cụ bao gồm máy
phay, máy khoan....được tích hợp vi điều khiển, các lý thuyết liên quan đến hệ
thống sản xuất tự động, và hệ thống robot phục vụ quá trình gia công.
4. Tóm tắt những luận điểm cơ bản và đóng góp mới của tác giả
* Những luận điểm cơ bản
Nghiên cứu các lý thuyết về hệ thống sản xuất tự động và vi điều khiển , từ đó
tính toán thiết kế hệ thống modul tự động bao gồm các máy phay, máy khoan, hệ
thống các Robot như robot lật, robot cấp phôi. Hệ thống này hoạt động theo kiểu

-8-


bàn quay và được điều khiển bằng VĐK. Hệ thống này giúp quá trình sản xuất trở
nên linh hoạt và giảm tối đa thời gian phụ trong quá trình gia công đồng thời nâng
cao năng suất.
* Những đóng góp mới của tác giả
-

Tổng quan về lý thuyết chung của hệ thống điều khiển tự động trong sản

xuất cơ khí.

-

Tổng quan về vi điều khiển

-

Tính toán thiết kế module tự động theo kiểu nối tiếp tuần hoàn cụ thể như:

thiết kế bàn gia công, lựa chọn hệ thống máy công cụ và các robot hoạt động trong
hệ thống.
5.

Điều khiển hệ thống gia công tự động kiểu nối tiếp tuần hoàn bằng VĐK.
Phƣơng pháp nghiên cứu

-

Nghiên cứu cơ sở lý thuyết về cấu trúc hệ thống sản xuất tự động

-

Tính toán thiết kế, chế tạo modul gia công tự động

-

Tiến hành soạn chương trình VĐK

-

Gia công toàn bộ hệ thống


-

Chạy thử

-9-


CHƢƠNG I
TỔNG QUAN VỀ VI ĐIỀU KHIỂN
Ngày nay, cùng với sự phát triển không ngừng của khoa học kỹ thuật thì kỹ
thuật số đã đem lại cho con người những thành tựu to lớn, giúp cho con người dễ
dàng đạt được mục đích của mình trong mọi thiết kế. Hòa nhập cùng xu hướng đó
vi điều khiển đã khẳng định được vị thế vững chắc của mình trong mọi ứng dụng.
Điển hình trong lĩnh vực vực cơ khí chế tạo, vấn đề tự động hóa sản xuất là yếu tố
quan trọng hàng đầu để nâng cao chất lượng sản phẩm. Ứng dụng vi điều khiển
trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời
nâng cao tính ổn định của thiết bị và hệ thống. Trên thị trường có rất nhiều họ vi
điều khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Eilog, PIC của
hãng Microchip, H8 của Hitachi,vv.. và cuối cùng là AVR của hãng Atmel.
1.1 Giới Thiệu Họ Vi Điều Khiển MCS – 51
MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất. Các IC tiêu biểu cho họ
là 8031, 8051, 8951... Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi
điều khiển này khác nhau không nhiều. Khi đã sử dụng thành thạo một loại vi điều
khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen và làm chủ các
ứng dụng của một bộ vi điều khiển khác. Vì vậy để có những hiểu biết cụ thể về các
bộ vi điều khiển cũng như để phục vụ cho đề tài tốt nghiệp này ta bắt đầu tìm hiểu
một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51 và nếu như họ MCS-51 là
họ điển hình thì 8051 lại chính là đại diện tiêu biểu.
Các đặc điểm của 8051 được tóm tắt như sau :

4 KB ROM bên trong.
128 Byte RAM nội.
4 Port xuất /nhập I/O 8 bit.
Giao tiếp nối tiếp.
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại.

- 10 -


Xử lý Boolean (hoạt động trên bit đơn).
210 vị trí nhớ có thể định vị bit.
4 s cho hoạt động nhân hoặc chia.
Bảng 1.1 Mô tả sự khác nhau của các IC trong họ MSC-51
Loại

Bộ Nhớ Mã Trên CHIP

Bộ Nhớ Dữ Liệu Trên CHIP

Số Timer

8051

4K ROM

128 Byte

2


8031

0K ROM

128 Byte

2

8751

4K ROM

128 Byte

2

8052

8 K ROM

256Byte

2

8032

0 K ROM

256Byte


2

8752

8K EPROM

256Byte

2

* Cấu trúc VĐK 8051, chức năng từng chân
U1
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
19
18

31
9
40

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD

P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

X1
X2

ALE
PSEN

21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17

30
29

EA
RST
VCC
8051

Hình 1.1: Sơ đồ chân của 8051

- 11 -


Chức năng hoạt động của từng chân (pin) được tóm tắt như sau :
Từ chân 1  8 Port 1 (P1.0, . . ., P1.7) dùng làm Port xuất nhập I/O để giao
tiếp bên ngoài.
Chân 9 (RST) là chân để RESET cho 8051. Bình thường các chân này ở mức
thấp. Khi ta đưa tín hiệu này lên cao (tối thiểu 2 chu kỳ máy) thì những thanh ghi
nội của 8051 được LOAD những giá trị thích hợp để khởi động lại hệ thống. Từ
chân 10 17 là Port3 (P3.0, P3.1, . . ., P3.7) dùng vào hai mục đích: dùng là Port
xuất/nhập I/O hoặc mỗi chân giữ một chức năng cá biệt được tóm tắt sơ bộ như sau:
P3.0 (RXD): Nhận dữ liệu từ Port nối tiếp.
P3.1 (TXD): Phát dữ liệu từ Port nối tiếp.
P3.2 (INT0): Ngắt 0 bên ngoài.
P3.3 (INT1): Ngắt 1 từ bên ngoài.
P3.4 (T0): Timer/Counter 0 nhập từ bên ngoài.
P3.5 (T1): Timer/Counter 1 nhập từ bên ngoài.
P3.6 (WR): Tín hiệu Strobe ghi dữ liệu lên bộ nhớ bên ngoài.
P3.7 (RD): Tín hiệu Strobe đọc dữ liệu lên bộ nhớ bên ngoài.
Các chân 18,19 (XTAL2 và XTAL1) được nối với bộ dao động thạch anh 12

MHz để tạo dao động trên CHIP. Hai tụ 30 pF được thêm vào để ổn định dao động.
Chân 20 (Vss) nối đất (Vss = 0).
Từ chân 21 - 28 là Port 2 (P2.0, P2.1, . . ., P2.7) dùng vào hai mục đích: làm
Port xuất/nhập I/O hoặc dùng làm byte cao của Bus địa chỉ thì nó không còn tác
dụng I/O nữa. Bởi vì ta muốn dùng EPROM và RAM ngoài nên phải sử dụng Port 2
làm byte cao bus địa chỉ.
Chân 29 (PSEN) (program store enable) là tín hiệu điều khiển xuất ra của
8051, nó cho phép chọn bộ nhớ ngoài và được nối chung với chân của OE (Outout
Enable) của EPROM ngoài để cho phép đọc các byte của chương trình. Các xung
tín hiệu PSEN hạ thấp trong suốt thời gian thi hành lệnh. Những mã nhị phân của
chương trình được đọc từ EPROM đi qua bus dữ liệu và được chốt vào thanh ghi
lệnh của 8051 bởi mã lệnh. (chú ý việc đọc ở đây là đọc các lệnh - khác với đọc dữ

- 12 -


liệu), khi đó VXL chỉ đọc các bit opcode của lệnh và đưa chúng vào hàng đợi lệnh
thông qua các Bus địa chỉ và dữ liệu
Chân 30 (ALE : Adress Latch Enable) là tín hiệu điều khiển xuất ra của 8051,
nó cho phép phân kênh bus địa chỉ và bus dữ liệu của Port 0.
Chân 31 (EA : Eternal Acess) được đưa xuống thấp cho phép chọn bộ nhớ mã
ngoài đối với 8031.
Đối với 8051 thì :
EA = 5V : Chọn ROM nội.
EA = 0V : Chọn ROM ngoại.
EA = 21V : Lập trình EPROM nội.
Các chân từ 32 39 là Port 0 (P0.0, P0.1, . . . , P0.7) dùng cả hai mục đích:
Vừa làm byte thấp cho bus địa chỉ, vừa làm bus dữ liệu, nếu vậy Port 0 không còn
chức năng xuất nhập I/O nữa.
Chân 40 (Vcc) được nối lên nguồn 5V.

1.2 Tổng quan về vi điều khiển AVR.
1.2.1 Giới thiệu tổng quan họ vi điều khiển AVR.
AVR là họ vi diều khiển mới khá mạnh, tích hợp tính năng cao, hơn hẳn họ
89xx của hãng Atmel theo công nghệ RISC (Reduced Instruction Set Computer )
Những đặc điểm nổi trội của AVR đó là về tốc độ xử lý nhanh hơn, nhiều tính
năng hơn, giao tiếp đơn giản, khả năng chống nhiễu tốt hơn .
Có thể xem AVR ngang hàng với những họ vi điều khiển mới như: Pic, psoc
cùng thời. Tuy mỗi họ có những tính năng riêng tuỳ thuộc vào ứng dụng thực tế của
chúng ta, sử dụng cho phù hợp yêu cầu.
Những tính năng mạnh hơn như:
-

Kiến trúc (RISC) với hầu hết các lệnh có chiều dài cố định, truy cập bộ

nhớ nạp-lưu dữ liệu và 32 thanh ghi đa năng.
-

Kiến trúc đường ống lệnh kiểu 2 tầng làm tăng tốc độ thực thi lệnh.

-

Có chứa nhiều bộ phận ngoại vi: giao diện SPI đồng bộ,các đường dẫn

vào/ra (I/O) lập trình được, giao tiếp I2C, bộ biến đổi ADC 10 bit, các kênh băm

- 13 -


xung PWM, chế độ sleep, standby, 1 bộ định thời Watchdog, 3 bộ timer/counter 8
bit, 1 bộ timer/counter 16 bit 1 bộ so sánh tương tự (analog), có bộ nhớ EEPROM,

giao tiếp UART…..
-

Hầu hết các lệnh đều thực hiện trong 1 chu kỳ xung nhịp.

-

Hoạt động với tốc độ đồng hồ đến 12 MHZ , vi điều khiển AVR có khả

năng đạt đến tốc độ xử lý 12MPIS (1 triệu lệnh trên giây).
-

Bộ nhớ chương trình và dữ liệu tích hợp ngay trên chip. AVR có 3 công

nghệ bộ nhớ khác nhau: EPROM( luôn lập trình mới được) xoá được kiểu flash,
EEPROM xoá được bằng tín hiệu xung điện nhưng nội dung bộ nhớ vẫn giữ nguyên
khi mất điện áp nguồn, RAM dung cho các biến thông thường.
-

Khả năng lập được trình trong hệ thống, do cách thiết kế và công nghệ bộ

nhớ có thể lập trình ngay trong khi đang được cấp nguồn trên mạch, ko cần phải
nhấc chip ra như các vi điều khiển khác.
-

Hỗ trợ lập trình bằng ngôn ngữ C.

-

Điện áp làm việc thay đổi trong khoảng rộng từ 2.7->6V.


1.2.2 Kiến trúc AVR
1) Mở đầu.
Phần này sẽ mô tả một cách chi tiết về họ vi điều khiển AVR, cụ thể là về kiến
trúc và các bộ phận ngoại vi được tích hợp ngay trên chip, bên cạnh đơn vị xử lý
trung tâm CPU.
Vi điều khiển AVR là bộ xử lý RISC với kiến trúc Harvard. Thuật ngữ kiến
trúc Harvard dùng để chỉ một đặc điểm là đơn vị xử lý trung tâm (CPU) có bộ nhớ
chương trình và một bộ nhớ dữ liệu tách biệt.
Họ vi điều khiển AVR có những đặc điểm sau:
1.

Bộ nhớ flash được tích hợp ngay trên chip và có khả năng lập trình ngay

trên hệ thống được sử dụng làm bộ nhớ chương trình. Tất cả các bộ xử lý đều có bộ
nhớ chương trình loại này. Điều đó có nghĩa là ta không cần phải dùng đến các bộ
nhớ EPROM hoặc ROM bên ngoài để chứa mã chương trình. Hơn nữa, bộ nhớ
chương trình có thể nạp chương trình trong khi bộ xử lý vẫn ở nguyên vị trí trên

- 14 -


bảng mạch, không cần phải nhấc ra ngoài để đặt vào bộ nạp chương trình. Đặc tính
này cho phép cập nhật phần mềm hệ thống nhanh chóng và dễ dàng hơn. Đôi khi
hình thức này còn được gọi là lập trình tại chỗ (in situ). Bộ nhớ chương trình có thể
được lập trình theo hai chế độ: nối tiếp hoặc song song và sẽ được bàn luận chi tiết
ở phần sau.
2.

Các thanh ghi làm việc đa năng 32 - X - 8 (theo truyền thống của các bộ


xử lý RISC thực sự). Một tập hợp bao gồm rất nhiều thanh ghi có nghĩa là các biến
có thể lưu trữ bên trong CPU chứ không phải lưu trữ các biến trong bộ nhớ, vì việc
truy nhập lên bộ nhớ thường tốn nhiều thời gian hơn. Như vậy chương trình sẽ chạy
nhanh hơn.
3.

Bộ nhớ dữ liệu ngay trên chip loại EEPROM và RAM có trong hầu hết

các thành viên của họ AVR. Đơn vị CPU có kiến trúc Harvard, còn các bộ nhớ
EPROM và RAM được nhìn nhận như là bộ nhớ dữ liệu và được dùng để cất giữ
các hằng và biến.
4.

Hoạt động với xung giữ nhịp có tần số từ 0 đến 10MHz. Hầu hết các lệnh

được thực hiện trong 1 chu kỳ đồng hồ và điều này dẫn đến sự cải thiện tính năng
với tốc độ xử lý khoảng 10 lần lớn hơn các bộ xử lý thông thường (chẳng hạn, họ
8051) hoạt động ở cùng tần số của đồng hồ giữ nhịp.
5.

Có mạch đặt lại trạng thái mỗi khi cấp lại điện nguồn cho hệ thống

(Power On Reset).
6.

Có bộ định thời ngay trên chip và lập trình được với mạch chia tần số

(prescalr) tách biệt. Bộ định thời này được sử dụng cho các ứng dụng cần có sự
phân định thời gian (timing) của các sự kiện.

7.

Có các nguồn ngắt bên trong và bên ngoài.

8.

Có bộ định thời watchdog ngay trên chip và lập trình được với bộ dao

động độc lập. Bộ phận này được sử dụng để khôi phục lại trạng thái hoạt động của
hệ thống trong trường hợp xảy ra lỗi (treo) khi chạy phần mềm, nhưng cũng có thể
được sử dụng cho các ứng dụng đáng quan tâm khác, như sẽ được bàn luận đến
trong một ứng dụng sẽ được trình bày về sau.

- 15 -


9.

Có chế độ hoạt động: SLEPP (ngủ) và POWER DOWN (nghỉ hay giảm

dòng tiêu thụ khi không cần thiết). Đặc điểm này cho phép tiết kiệm năng lượng khi
bộ xử lý không có công việc cần xử lý, đặc biệt có ý nghĩa đối với các thiết bị cầm
tay dùng pin.
10. Nhiều chip có mạch dao động đồn hồ RC ngay trên chip. Khi sử dụng bộ
giao động RC trên chip, số lượng các linh kiện phụ trợ sẽ giảm đi.
11. Có một phạm vi rộng các đặc tính của bộ xử lý (từ các bộ xử lý cỡ nhỏ
với 8 chân ra đến bộ xử lý 68 chân), nhờ vậy ta có thể lựa chọn một bộ xử lý cho
thích hợp với yêu cầu đã đặt ra, cả về chi phí và tính năng kỹ thuật cũng như về các
công cụ phát triển.
2) Kiến trúc của bộ xử lý AVR.

Các bộ xử lý AVR có kiến trúc Harvard, nghĩa là có bộ nhớ dữ liệu và bộ nhớ
chương trình tách biệt nhau. Hình 1.2 minh họa một bản phác thảo kiến trúc bên
trong của bộ điều khiển. Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus 8 bit, cho
phép nối hầu hết các bộ phận ngoại vi vi với tệp thanh nghi (register file). Bus dữ
liệu dùng cho bộ nhớ chương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.
Mặc dù hình 1.2 minh họa cho kiến trúc của bộ điều khiển AVR AT90S2313,
nhưng cũng có thể áp dụng cho tất cả các bộ xử lý và chỉ khác về quy mô của các
bộ phận ngoại vi bổ sung (hoặc không có) cũng như sự khác nhau về dung lượng
của bộ nhớ chương trình và bộ nhớ dữ liệu.

- 16 -


Hình 1.2: Kiến trúc của bộ xử lý AVR
Bộ nhớ chương trình là loại bộ nhớ flash. Dung lượng chính xác của bộ nhớ
này thay đổi khác nhau giữa các bộ xử lý trong cùng họ. Bộ xử lý AT90S1200, bộ
xử lý ở mức cơ bản, có 1 kbyte bộ nhớ chương trình, được tổ chức các bit theo 512 X - 16 bit, trong khi bộ điều khiển Mega103 có 128 kbyte bộ nhớ được tổ chức theo
64k - X - 16. Một kilô (k) ở đây được tính theo hệ số 1.024 chứ không phải 1.000
như thông thường. Bộ nhớ chương trình được truy nhập theo từng chu kỳ đồng hồ,
và một lệnh được nạp vào thanh ghi lệnh. Thanh ghi lệnh nối với tệp thành ghi bằng
cách lựa chọn xem thanh nghi nào sẽ được ALU sử dụng để thực thi lệnh. Lối ra
của thanh nghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu
điều khiển nào sẽ được kích hoạt để thoàn thành lệnh hiện tại.
Bộ nhớ chương trình, bên cạnh các lệnh lưu trữ, cũng như chứa các vectơ ngắt
bắt đầu ở địa chỉ $0000. Chương trình hiện tại sẽ bắt đầu ở vị trí bộ nhớ phía bên
kia vùng dùng cho các vectơ. Số lượng các vectơ cũng khác nhau giữa các bộ xử lý.

- 17 -



Bộ xử lý AT90S1200 có 3 vectơ còn AT90S8515 có 13 vectơ. Bảng 1.2 minh họa
toàn bộ không gian vectơ dùng cho bộ xử lý AT90S8515.
Bộ nhớ chƣơng
trình dùng cho
địa chỉ

Vectơ

Giải thích

$S0000

Reset

Reset Handler

$0001

EXT_INT0

IRQ0 Handler

$0002

XT_INT1

IRQ1 Handler

$0003


ETIM_CAPT

Timer 1 Capture Handler

$0004

TIM1_COMA

Timer 1 Compare A Handler

$0005

TIM1_COMB

Timer 1 Compare B Handler1

$0006

TIM1_OVF

Timer 1 Overflow Handler

$0007

TIM0_OVF

Timer 0 Overflow Handler

$0008


SPI_STC

SPI transfer Complete Handler

$0009

UART_RXC

UART RX Complete Handler

$000A

UART_DRE

UART URD empty Handler

$000B

UART_TXC

UART TxC Complete Handler

&000C

ANA_COMP

Analog Comparator Handler

Bảng 1.2: Bộ nhớ chương trình dùng cho địa chỉ.
Bộ nhớ dữ liệu, mặt khác, được phân chia thành những loại khác nhau. Hình

1.3 minh họa các bản đồ bộ nhớ khác nhau có trên một vi điều khiển AVR. Bộ nhớ
dữ liệu có tất cả 5 thành phần khác nhau:
1. Một tệp thanh ghi (register file) với 32 thanh ghi có độ rộng 8 bit. Tất cả
các bộ điều khiển của họ AVR đều có tệp thanh ghi này.
2. 64 thanh ghi vào/ra (I/O), mỗi thanh ghi 8 bit. Tất cả các bộ xử lý không
phải đều có đúng 64 thanh ghi. Một số trong đó có nhiều hơn số còn lại, tùy thuộc
vào các bộ phận ngoại vi có trên chip. Các thanh nghi vào/ra này thực chất là một

- 18 -


phần của bộ nhớ SRAM trên chip và có thể được truy nhập hoặc như bộ nhớ SRAM
với các địa chỉ giữa $20 và $5F hoặc như các thanh ghi I/O với các địa chỉ giữa $00
và $3F. Hầu hết các thanh ghi này thường được trao đổi như các thanh nghi I/O chứ
không phải như bộ nhớ SRAM.
3. Bộ nhớ SRAM bên trong. Bộ nhớ này có trên hầu hết các bộ xử lý AVR,
chỉ trừ các bộ xử lý loại cơ sở (baseline), chẳng hạn như loại AT90S1200. Dung
lượng bộ nhớ SRAM thay đổi từ 128 byte đến 4 kbyte. Bộ nhớ SRAM được sử
dụng cho ngăn xếp cũng như để lưu trữ các biến. Trong thời gian có ngắt và gọi
đoạn chương trình (subroutine), giá trị hiện tại của bộ đếm chương trình được lưu
trữ trong ngăn xếp. Kích thước của ngăn xếp bị giới hạn bởi bộ nhớ SRAM có mặt
trên chip. Vị trí của ngăn xếp được chỉ thị bởi con trỏ ngăn xếp. Con trỏ ngăn xếp
có dụng lượng 1 kbyte trên các vi điều khiển nhỏ hơn, chẳng hạn như loại
AT90S2313 và bằng 2 byte trên các bộ xử lý lớn hơn, chẳng hạn như loại
AT90S8515. Con trỏ ngăn xếp cần phải được khởi tạo sau khi đặt lại (reset) và
trước khi ngăn xếp có thể được sử dụng. Các bộ xử lý này không có bộ nhớ SRAM
trên chip, chẳng hạn như loại AT90S1200. Ngăn xếp bằng phần cứng được thiết kế
để lưu trữ các địa chỉ trả lại chương trình. Một ngăn xếp bằng phần cứng này chỉ có
thể lưu trữ đến 3 giá trị trả lại.
4. Bộ nhớ SRAM bên ngoài. Đặc tính này chỉ có ở các bộ xử lý cỡ lớn trong

họ vi điều khiển AVR. Các bộ xử lý này có các cổng để truy nhập bộ nhớ và dữ liệu
bên ngoài (chẳng hạn như AT90S8515) có thể sử dụng bất kỳ bộ nhớ SRAM ngoài
nào mà người dụng có thể tùy ý quyết định khi thiết kế.
5. EEROM. Bộ nhớ EEROM có sẵn trên hầu như tất cả các bộ vi điều khiển
AVR và được truy nhập theo một bản đồ bộ nhớ tách biệt. Địa chỉ bắt đầu của bộ
nhớ EEPROM luôn là $0000. Các bộ xử lý khác nhau có từ 64 byte đến 4 kbyte bộ
nhớ EEPROM. Bộ nhớ EEPROM có thể được đọc và ghi bởi bất kỳ chương trình
nào. Việc đọc bộ nhớ EEPROM diễn ra nhanh hơn việc ghi vào bộ nhớ EEROM.
Bộ nhớ EEPROM có thể ghi vào được khoảng 100.000 lần.

- 19 -


Hình 1.3: Bản đồ bộ nhớ của vi điều khiển AVR.
6. Hầu hết các lệnh dùng cho bộ điều khiển AVR đều có chiều dài1 từ (2
byte) và vì thế chiếm 1 ô nhớ chương trình. Nhiều lệnh được thực thi trong một chu
kỳ đồng hồ đơn lẻ, trongkhi một số khác có thể chiếm 2 hoặc nhiều chu kỳ đồng hồ.
Việc thực thi trong một chu trình đơn lẻ đạt được là do việc sử dụng một kiểu cấu
trúc đường ống (pipeline) hai tầng. Đường ống làm việc theo cách tiếp nhận đồng
thời một lệnh mới từ bộ nhớ chương trình trong khi lệnh trước đó đang được thực
thi trong phần khác của bộ xử lý. Việc tìm nạp/giải mã và thực thi các lệnh như vậy
gọi là những quá trình được thực hiện bởi bộ xử lý một cách đồng thời.
Bây giờ ta thử tìm hiểu các bộ phận khác nhau hình thành bộ xử lý AVR, đó
là:
+ Tệp thanh ghi

+ Bộ truyền nhận UART

+ Khối số học logic


+ Cấu trúc ngắt.

+ Bộ nhớ vào/ra

+ Bộ định thời.

- 20 -


+ Bộ nhớ EEPROM

+ Bộ watchdog

+ Cổng vào/ra

+ Bộ biến đổi A/D

+ Bộ nhớ SRAM

+ Bộ định thời watchdog.



Tệp thanh ghi.

Tất cả các bộ điều khiển AVR đều có 32 thanh ghi đa năng. Một số trong các
thanh ghi này còn có các chức năng riêng biệt, bổ sung. Các thanh ghi được đặt tên
từ R0 đến R31. Tệp thanh ghi được tách thành 2 phần, mỗi phần có 16 thanh ghi,
đánh số từ R0 đến R15 và R16 đến R31. Tất cả các lệnh thao tác trên các thanh ghi
đều có thể truy nhập trực tiếp và truy nhập trong chu trình đơn đến tất cả các thanh

ghi. Nhưng có một ngoại lệ là các lệnh SBCI, SUBI, CPI, ANDI và ORI cũng như
lệnh WI, các lệnh này chỉ tác động đến các thanh ghi R16 đến R31.
Các thanh ghi R0 và R26 đến R31 có các chức năng bổ xung. Thanh ghi R0
được sử dụng trong các lệnh nạp bộ nhớ chương trình LPM (Load Program
Memory), trong khi các thanh ghi R26 đến R31 được sử dụng làm các thanh ghi con
trỏ như được minh họa trên hình 1.4. Các thanh ghi con trỏ này được sử dụng trong
nhiều lệnh gián tiếp dụng cho thanh ghi (regiser indirect insruction).

Hình 1.4: Tệp thanh ghi của vi điều khiển AVR.

- 21 -




Khối số học logic.

Khối số học logic (ALU) thực hiện các thao tác như thao tác bit; phép tính số
học và logic trên nội dụng của các thanh ghi và ghi ngược kết quả vào tệp thanh ghi
trên thanh ghi đã được chỉ định. Các thao tác này được thực hiện trong một chu kỳ
đồng hồ đơn lẻ. Mỗi một hao tác ALU đều làm ảnh hưởng đến các cờ trong thanh
ghi trạng thái (STATUS), tùy thuộc vào lệnh.


Truy nhập bộ nhớ và việc thực thi lệnh.

Bộ xử lý AVR được điều khiển bởi đồng hồ hệ thống, đồng hồ này có thể ở
bên ngoài, hoặc nếu có tồn tại và được phép, một đồng hồ RC bên trong có thể được
sử dụng. Đồng hồ hệ thống này không qua bất kỳ bộ chia nào và được sử dụng thực
tiếp cho tất cả các thao tác truy nhập bên trong bộ xử lý. Bộ xử lý có một đường ống

hai tầng, và lệnh tìm nạp/giải mã (fech/decode) được thực hiện đồng thời với việc
thực thi lệnh. Quá trình này được minh họa trên hình 1.5

Hình 1.5: Tìm nạp/giải mã lệnh và việc thực thi lệnh
Cứ mỗi lần lệnh được tìm nạp (fetch), nếu đây là một lệnh liên quan đến
ALU, nó có thể được thực thi bởi khối ALU như được minh họa trên hình 1.6 cho
một chu trình đơn lẻ.

- 22 -


Hình 1.6: Việc thực thi của ALU bao gồm tìm/nạp, thực thi, và ghi ngược vào thanh ghi.

Mặt khác, việc truy nhập bộ nhớ SRAM chiếm mất 2 chu kỳ, như được minh
họa trên hình 1.7. Nguyên nhân là việc truy nhập bộ nhớ SRAM sử dụng một thanh
ghi con trỏ dùng địa chỉ bộ nhớ SRAM. Thanh ghi con trỏ này chỉ là một trong các
thanh ghi con trỏ (các cặp thanh ghi X, Y, hoặc Z) có trên chip. Chu trình đồng hồ
thứ nhất được cần đển để truy nhập tệp thanh ghi và để thao tác trên thanh ghi con
trỏ (các lệnh truy nhập bộ nhớ SRAM cho phép tăng địa chỉ trước/sau thao tác trên
thanh ghi con trỏ). Ở thời điểm kết thúc của chu kỳ đồng hồ thứ nhất, khối ALU
thực hiện phép tính này, và sau đó địa chỉ này được sử dụng để truy nhập ô nhớ
SRAM và để ghi vào ô nhớ này (hoặc đọc ra từ đó vào thanh ghi đích), như được
minh họa trên hình 1.7.

Hình 1.7: Các chu trình truy nhập dữ liệu lên thanh ghi SRAM trên chip.


Bộ nhớ vào/ra.

- 23 -



Bộ nhớ vào/ra là “xa lộ” đến với tất cả các bộ phận ngoại vi xủa bộ xử lý
AVR. Nó được thiết kế giống như SRAM và có thể được trao đổi theo hai cách:
giống như bộ nhớ SRAM hoặc như các thanh ghi I/O. Nếu giống như SRAM, các
địa chỉ ở phía bên kia S20 cho đến $5F, còn nếu giống như các thanh ghi I/O, các
địa chỉ bắt đầu từ $00 đến $3F.
Ta sẽ xem xét các thanh ghi vào/ra như các thanh ghi chứ không phải như bộ
nhớ SRAM và sẽ xem xét hầu hết các thanh ghi I/O cũng như chức năng của các
thanh ghi đó. Tuy nhiên, đối với một chip cụ thể, ta nên tra cứu hoặc đối chiếu với
các tài liệu về thống số kỹ thuật (data sheet) cụ thể để có được các thông tin cập
nhật và chính xác. Ở đây chỉ bàn luận đến các thanh ghi chung nhất và chức năng
của chúng.
Một điểm quan trọng cần chú ý ở đây là việc truy nhập lên các thanh ghi
vào/ra khác nhau. Để truy nhập lên các thanh ghi I/O, vi điều khiển AVR giới thiệu
các lệnh IN và OUT. Các lệnh này có thể truy nhập tất cả các thanh gh I/O từ $00
đến $3F. Bên cạnh các lệnh IN và OUT, vi điều khiển AVR cũng hỗ trợ việc định
địa chỉ bit lên một số trong các thanh ghi, cụ thể là từ $00 đến $1F. Với sự trợ giúp
của các lệnh bit SBI và CBI, bất cứ bit nào trên bất kỳ thanh ghi nào (từ $00 đến
$1F) đều có thể được đặt và đặt lại. Đây là một phương pháp tiết kiệm thời gian so
với việc đọc thanh ghi, thay đổi bit, và việc ghi giá trị ngược trở lại thanh ghi. Đối
với các thanh ghi còn lại, ta phải sử dụng một phương pháp khác, cần đến thời gian
dài hơn khoảng ba lần so với một chu kỳ đồng hồ.


Thanh ghi điều khiển toàn bộ vi điều khiển MCUCR.

Các bit trong thanh ghi điều khiển toàn bộ vi điều khiển thường được viết tắt
là MCUCR (MCU Control Register) cho phép điều khiển toàn bộ vi điều khiển.
Chức năng ghi này bao gồm việc điều khiển để cho phép/cấm truy nhập bộ nhớ

SRAM ngoài, chế độ ngủ, và điều khiển độ nhạy cảm (sense) ngắt ngoài


Thanh ghi trạng thái bộ xử lý MCUSR

Thanh ghi trạng thái MCU (MCU status rigister) cung cấp thông tin về nguồn của tín
hiệu reset. Thanh ghi MCUSR có chứa 2 bit, bit này chỉ cho thấy nguồn của tín hiệu reset

- 24 -




Thanh ghi điều khiển TIMER/COUNTER0 TCCR0.

Thanh ghi Timer/Counter1 được sử dụng để điều khiển các thao tác của bộ xử
lý Timer/Conter0. Đây là một bộ định thời đơn giản dùng để đếm tiến từ giá trị đếm
đã được nạp vào. Bộ đếm được làm tăng thêm một giá trị mỗi khi có thêm một tín
hiệu đồng hồ ở lối vào của nó. Tín hiệu đồng hồ có thể được lựa chọn từ một trong
7 nguồn. Tùy chọn thứ 8 cho phép bộ Timer/Counter được ngưng hoạt động.


Thanh ghi Timer/Counter0 TCNT0.

Đây là thanh ghi Timer/Counter hiện thời. Một giá trị đã nạp vào thanh ghi
này được sử dụng làm giá trị xuất phát (bắt đầu), và bộ định thời làm tằng giá trị
này theo từng tín hiệu xung nhịp của nó nếu bộ Counter/Timer được cho phép qua
thanh ghi TCCR0. Sau khi bộ Timer/Counter0 bị tràn, được đặt lại về $00 và tiếp
tục đếm tiến theo từng tín hiệu xung nhịp. Timer/Counter0



TCCR1A: Thanh ghi điều khiển Timer/Counter 1A.

TCCR1A là một thanh ghi điều khiển dùng cho bộ Timer/Counter1. Các tín
hiệu dùng cho các thanh ghi.


TCCR1B: Thanh ghi điều khiển Timer/Counter1B.



Các thanh ghi so sánh lối ra bộ Timer/Counter1: OCR1AH, OCR1AL.

Thanh ghi so sánh lối ra (Output Compare Register) là một thanh ghi đọc/ghi
16 bit. Thanh ghi OCR bộ Timer/Counter1 chứa dữ liệu cần được so sánh liên tục
với bộ Timer/Counter1. Diễn biến của những lần so sánh (Actions on compare
matches) được chỉ định trên thanh ghi điều khiển và trạng thái Timer/Counter.
Bởi vì thanh ghi so sánh lối ra OCR1A là một thanh ghi 16 bit, nên một thanh
ghi tạm thời TEMP được sử dụng khi ghi vào OCR1A để bảo đảm rằng cả hai byte
được cập nhật đồng thời. Khi CPU ghi byte cao (HIGH), OCR1AH, dữ liệu được
lưu trữ tạm thời trong thanh ghi TEMP. Khi khối CPU ghi byte thấp (LOW),
OCR1AH cần phải được ghi trước tiên đối với một thao tác ghi trọn vẹn thanh ghi
16 bit. Thanh ghi TEMP cũng được sử dụng khi truy nhập TCNT1 và ICR1. Nếu
chương trình chính và đoạn chương trình ngắt (routine) cũng thực hiện thao tác truy
nhập lên các thanh ghi bằng cách sử dụng TEMP, các ngắt cần phải bị cấm trong

- 25 -



×