Tải bản đầy đủ (.doc) (31 trang)

Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng vi điều khiển 8051

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 (585.54 KB, 31 trang )

Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Chương I

GIỚI THIỆU ĐỀ TÀI

Đề tài của em là “Lập trình điều khiển động cơ bước từ máy tính qua cổng
nối tiếp dùng vi điều khiển 8051” với giao diện thân thiện với con người. Mục
đích là kết hợp được các kiến thức đã học về tính toán thiết kế mạch, lập trình
trên vi điều khiển và trên giao diện phần mềm để thực hiện giao tiếp giữa vi điều
khiển với PC nhằm điều khiển hoạt động của thiết bị ngoại vi là động cơ bước
một cách linh hoạt.
Các mảng chính trong nội dung của thuyết minh là :
- Động cơ bước – hoạt động và nguyên lí điều khiển.
- Giao tiếp vi điều khiển P89V51RB2 với máy tính thông qua cáp RS232 9
chân.
- Lập trình giao diện điều khiển bằng Visual Basic 6.0.

Trang 3


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

I.1 Giới thiệu động cơ bước :
Theo quyển “Động cơ bước – kĩ thuật điều khiển và ứng dụng” (Nguyễn Quang
Hùng – Trần Ngọc Bình) động cơ bước là loại động cơ không đồng bộ dùng để biến đổi
các tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành các chuyển
động góc quay của rotor. Góc quay này có giá trị nhất định phụ thuộc vào xung điện áp
cấp vào stator theo kiểu nào, và được định nghĩa là góc bước của rotor. Thông thường
góc bước này rất nhỏ, có loại có thể đạt đến 0,72 0, và phổ biến là loại có góc bước 1,8 0.
Nhờ có sự điều khiển cấp xung vào các đầu dây mà ta có thể điều khiển chuyển động của


động cơ một cách chính xác, do đó động cơ bước được sử dụng rộng rãi trong kĩ thuật
điều khiển tự động, điều khiển chính xác như chuyển động của máy gia công CNC, đầu
đọc CD-ROM, máy in ...
Động cơ bước em sử dụng ở đây có số hiệu 23LM-C004, động cơ 2 pha, 6 đầu
dây, dòng qui ước là 1,2A và áp cấp vào là 6V, thuộc loại động cơ biến từ trở.
Tra catalog của series này, em xác định được các đầu dây theo màu sắc như sau :

Hình 1.1

Màu sắc các đầu dây chuẩn theo Catalog

Nếu không có catalog, có thể dùng phương pháp đo điện trở kết hợp với kích dòng
cho động cơ để xác định các đầu dây của động cơ bước căn cứ vào cấu tạo của các cuộn
dây bên trong động cơ. Đối với động cơ bước 6 dây như trên sẽ chia làm 2 nhóm, mỗi
nhóm có 3 dây trong đó có một dây chung, gọi là dây COM (common) mà điện trở của
đầu dây này đối với 2 đầu dây còn lại thuộc nhóm đó sẽ bằng nhau, còn giữa các dây
khác nhóm sẽ hoàn toàn cách điện. Dựa vào đó ta sẽ tìm được 2 dây COM và các dây
thuộc cùng nhóm với dây COM tương ứng của động cơ bước. Vấn đề còn lại là kích
dòng để tìm ra thứ tự các cuộn dây của động cơ sử dụng.
Chọn một nhóm dây, loại trừ dây COM của nhóm đó đã tìm ra bằng phương pháp
đo điện trở, đặt cho 2 dây còn lại, một dây là A, một dây là B. Nối 2 dây COM chung với

Trang 4


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

nhau và đấu vào nguồn điện 1 chiều ở cực dương (điện áp của nguồn này trên mức định
mức của động cơ một chút), kích lần lượt các cuộn còn lại vào cực âm của nguồn, bắt đầu
từ cuộn A  cuộn B  2 cuộn dây còn lại thuộc nhóm kia, nếu tạo ra chuyển động quay

liên tục thì thứ tự 2 cuộn còn lại là C, D còn nếu có chuyển động quay ngược lại thì thứ
tự 2 cuộn còn lại là D, C.
Việc diễn giải dài dòng song trên thực tế lại rất đơn giản, căn cứ vào hình vẽ sau :

Hình 1.2

Thứ tự đầu dây động cơ bước

Loại động cơ bước em dùng có các đầu dây có màu sắc
được ghi ở ngoài dấu ngoặc đơn hình 1.1. Theo đó 2 đầu
dây chung có màu trắng và đen. Đầu A, B, C, D theo thứ tự
là lục/trắng, lục, đỏ, đỏ/trắng.
Để tạo chuyển động quay của động cơ bước, về mặt logic có 3 cách : điều khiển cả
bước, điều khiển nửa bước và điều khiển vi bước. Hai cách đầu tiên chỉ cần điều khiển
theo thứ tự cấp xung cho các cuộn dây, còn cách thứ ba liên quan đến thay đổi dòng điện
để tạo những dịch chuyển rất nhỏ gần như vô cấp cho động cơ, khá phức tạp. Trong đồ án
này em chọn hai cách đầu để thực hiện điều khiển. Đối với điều khiển cả bước và nửa
bước cũng có nhiều cách cấp xung, mà tác dụng của nó chính là thay đổi momen quay
của động cơ. Có thể liệt kê ra tất cả các phương án có thể dùng để điều khiển cho 4 đầu
dây này như sau :
- Quay cả bước : số đầu dây được cấp xung điều khiển tuần tự như nhau theo
chiều nhất định và dịch từng bước. Cụ thể :
Thuận :

Nghịch :

Chế độ 1 : cấp cho từng cuộn :
Cuộn 1 :

10001000100010001000


10001000100010001000

Cuộn 2 :

01000100010001000100

00010001000100010001

Cuộn 3 :

00100010001000100010

00100010001000100010

Cuộn 4 :

00010001000100010001

01000100010001000100

Chế độ 2 : cấp xung cho 2 cuộn kế nhau :
Cuộn 1 :

11001100110011001100

11001100110011001100

Cuộn 2 :


01100110011001100110

10011001100110011001

Cuộn 3 :

00110011001100110011

00110011001100110011

Trang 5


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Cuộn 4 :

10011001100110011001

01100110011001100110

Chế độ 3 : cấp xung cho 3 cuộn kế nhau :
Cuộn 1 :

11101110111011101110

11101110111011101110

Cuộn 2 :


01110111011101110111

11011101110111011101

Cuộn 3 :

10111011101110111011

10111011101110111011

Cuộn 4 :

11011101110111011101

01110111011101110111

- Quay nửa bước : số đầu dây được cấp xung điều khiển tuần tự từ lẻ sang chẵn kế
tiếp nhau, theo chiều nhất định và dịch từng bước. Cụ thể :
Thuận :

Nghịch :

Chế độ 1 : cấp cho 1 cuộn và 2 cuộn :
Cuộn 1 :

11000001110000011100

11000001110000011100

Cuộn 2 :


01110000011100000111

00000111000001110000

Cuộn 3 :

00011100001110000011

00011100001110000011

Cuộn 4 :

00000111000001110000

01110000011100000111

Chế độ 2 : cấp cho 2 cuộn và 3 cuộn :
Cuộn 1 :

11100011111000111110

11100011111000111110

Cuộn 2 :

11111000111110001111

10001111100011111000


Cuộn 3 :

00111110001111100011

00111110001111100011

Cuộn 4 :

10001111100011111000

11111000111110001111

I.2 Giới thiệu về chuẩn giao tiếp truyền thông RS232
Trong khi làm việc với các thiết bị truyền tin, ta thường gặp các thuật ngữ DTE
(Data Terminal Equipment – thiết bị đầu cuối dữ liệu) như các PC, PLC, vi điều khiển …
và DCE (Data Communication Equipment – thiết bị truyền dữ liệu) như MODEM.
Để mở rộng cấu hình của máy tính cũng như tạo sự truyền thông linh hoạt giữa
các máy tính với nhau, giữa các máy tính và thiết bị ngoại vi cũng như giữa các thiết bị
ngoại vi với nhau, hiện nay ta có các phương thức như sử dụng rãnh cắm mở rộng trên
board mạch máy tính, chuẩn giao tiếp song song (thường là cổng máy in hay cổng
Centronics), chuẩn giao tiếp nối tiếp, chuẩn USB, cáp mạng …
Chuẩn giao tiếp truyền thông RS232 thuộc về loại chuẩn giao tiếp nối tiếp. Ưu
điểm của chuẩn này là cáp nối có độ kháng nhiễu cao do đó có thể truyền thông trong
những khoảng cách rất lớn, giá thành rẻ hơn so với cáp sóng song. Tuy nhiên tốc độ
truyền dẫn thấp hơn cổng song song do khoảng thời gian giữa các bit đơn quyết định, mặt
khác sự không tương thích với mức logic TTL của các mạch điện tử số cũng là một bất

Trang 6



Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

lợi, điều này sẽ được đề cập ở bên dưới. Không được sử dụng cho những yêu cầu mang
tính thời gian thực.
Chuẩn RS232 có mức điện áp như sau :
- High : -3V ÷ -12V
- Low : +3V ÷ 12V
Trong khi đó điện áp sử dụng cho các thiết bị logic trên mạch điều khiển số ngoại
vi sử dụng ở mức High là 5V và mức Low là 0V. Do đó để có thể truyền dẫn thông tin từ
máy tính ra thiết bị điều khiển thông qua cáp truyền theo chuẩn RS232 cần phải có các
linh kiện chuyển đổi trung gian để tương thích về mức tín hiệu. Để đơn giản ta dùng chip
Max232 phổ biến trên thị trường có tích hợp sẵn chức năng này.
Các cổng trên máy tính tuân theo chuẩn RS232 gồm 2 loại, loại 25 chân và loại 9
chân. Song loại 25 chân cồng kềnh và không sử dụng hết chức năng nên hiện nay ta chỉ
gặp các cổng 9 chân có sẵn trên Case máy tính. Tên gọi và chức năng của các chân này
như sau :

Hình 1.3

Hình 1.4

Hình dạng của cổng DB9 trên máy tính

Vị trí các chân của cổng DB9 trên máy tính

Trang 7


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051


Bảng 1.1

Bảng liệt kê tên gọi và chức năng các chân của DB9

Thứ tự

Tên gọi

Chức năng

1

DCD

(Data Carrier Detect) DCE phát hiện sóng mang.

2

RxD

(Received Data) Chân nhận dữ liệu

3

TxD

(Transmitted Data) Chân truyền dữ liệu

4


DTR

(Data Terminal Ready) DTE sẵn sàng làm việc

5

GND

(GRounD)Nối đất tín hiệu

6

DSR

(Data Set Ready) DCE sẵn sàng làm việc

7

RTS

(Request To Send) DTE yêu cầu gửi dữ liệu

8

CTS

(Clear To Send) DCE sẵn sàng nhận dữ liệu

9


RI

(Ring Indicator) Báo chuông

I.3 Ngôn ngữ lập trình Visual Basic
Là ngôn ngữ cấp cao 32 bit dùng để viết các chương trình cấp cao chạy trong
Windows, giao diện thân thiện với người dùng, có chứa các chức năng thiết kế giao diện
dễ dàng, hướng đối tượng đồng thời có điều khiển MSCOMM được hỗ trợ sẵn cho việc
truyền tín hiệu qua cổng COM. Ngôn ngữ này sẽ được giới thiệu kĩ hơn khi thiết kế phần
mềm.
I.4 Giới thiệu chip P89V51RB2
Thuộc họ vi điều khiển MCU51 của Philips, với các đặc trưng đáng quan tâm :
- 16KB ROM
- 128 byte RAM
- 4 port xuất nhập 8 bit
- 3 bộ timer
- Mạch giao tiếp nối tiếp
- Bộ xử lí bit
- Có khả năng điều xung
- Chức năng bộ định thời chó canh (Watch Dog Timer)

Trang 8


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

I.5 Nội dung của đồ án
Thực hiện việc giao tiếp truyền thông giữa PC và chip vi điều khiển P89V51RD2
qua chuẩn truyền thông RS232 với IC chuyên dụng để tương thích điện áp sử dụng nhằm
điều khiển động cơ bước 6 dây 2 pha. Các bước tiến hành :

- Thiết kế mạch điều khiển động cơ, mạch công suất, mạch giao tiếp
- Thiết kế giao diện phần mềm trên máy tính bằng VB6.0 với MSCOMM để điều
khiển cổng COM trên máy
- Thực hiện giao tiếp giữa PC và vi điều khiển ngay trên đường nạp chip
- Chọn chế độ, chiều quay trên máy tính và xuất ra chuyển động quay của động cơ
đúng theo ý muốn
- Sau khi động cơ dừng, hiển thị thông báo trên màn hình máy tính

Trang 9


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Chương 2

THIẾT KẾ PHẦN CỨNG

Phần cứng được thiết kế theo từng module riêng biệt để dễ kiểm tra, bảo
trì, nâng cấp từng phần, phù hợp chức năng chuyên biệt hóa sản phẩm
hiện nay. 3 module chính là : module giao tiếp, module điều khiển và
module công suất. Phần này sẽ nghiên cứu cấu tạo và chức năng của các
linh kiện có trong module, công năng chung của module và tính toán thiết
kế một sản phẩm hoàn chỉnh trên cơ sở các module rời rạc trên.

Trang 10


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

PC

MẠCH
NGUỒN

KHỐI ĐIỀUKHIỂN
CHÍNH

MẠCH GIAO
TIẾP

MẠCH CÔNG
SUẤT

THIẾT BỊ NGOẠI VI
Hình 2.1

Sơ đồ các khối chức năng

Giải thích các khối chức năng :
- Phần mạch giao tiếp : gồm linh kiện chính là cổng COM DB9 với IC MAX232
để thực hiện chuyển đổi tương thích điện áp giữa cổng COM trên máy tính và điện áp tín
hiệu trên mạch điều khiển. Làm nhiệm vụ giao tiếp giữa máy tính và vi điều khiển.
- Phần mạch điều khiển chính : gồm IC P89V51RB2 với các linh kiện phụ khác
như bộ tạo dao động ngoài là thạch anh tần số 11.0592MHz, nút Reset và các tụ, trở để
thực hiện chức năng điều khiển.
- Phần mạch nguồn : gồm 2 cấp điện áp : nguồn cho vi điều khiển dùng ở mức 5V
và nguồn cho thiết bị ngoại vi ở mức 9V, để an toàn dùng hai nguồn riêng và cách li
chúng. Nguồn cho vi điều khiển cần có mạch riêng để đưa từ mức 12V về 5V.
- Phần mạch công suất : trực tiếp điều khiển các cuộn dây động cơ, gồm các
transistor, linh kiện cách li quang là OPTO PC817, mạch đẩy kéo Darlington gồm cặp
BJT bổ phụ 2SD468 và 2SB562, transistor trường chịu dòng ngược cao là FET IRF540.

Trong khi thi công mạch, em đã tách riêng các phần mạch để dễ kiểm tra và bảo
đảm an toàn.

Trang 11


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

II.1 Phần mạch giao tiếp
VC C _AR R O W
C5

Vcc
R1

GND

C3

2

12

1

3

1n

4


C2

5

1n

11
10
12
9

TxD
R xD

C 1+

2

VCC

C1

16

U1
1

2


1n

1n

C 1-

V-

C 2+

T1O U T

C 2T 1 IN
T 2 IN
R 1O U T
R 2O U T

M A X232

T2O U T

GND

4 HEADER

R xD
TxD
GND
Vcc


1

1k

JP1
4
3
2
1

2

C4

R 1 IN
R 2 IN

6
14

2

1
1n

7
13
8

GND


5
9
4
8
3
7
2
6
1

P1

C O N N E C TO R D B 9

15

LED

1

2 GND

V+

D1

1

GND


Hình 2.2

Module giao tiếp

<chú ý : các tụ phân cực, thông số tra theo datasheet>
Vi mạch MAX232 với sơ đồ kết nối chân với DB9 và vi điều khiển giống như
trong datasheet đi kèm. Led điểm và R8 chỉ để kiểm tra điện áp ngoài cấp vào cho
MAX232.
II.2 Phần mạch điều khiển chính :
Thành phần chính là chip P89V51RB2 của Philips. Với mục đích mở rộng thêm
các chức năng sau này, nên các cổng P0, P1, P2 được đưa đến các Jumper 10 chân, trong
đó 8 chân là dành cho các đường tín hiệu từ các cổng, 1 chân nguồn và 1 chân nối đất.
Bộ tạo dao động ngoài của chip vi điều khiển là thạch anh tần số 11,0592MHz.

Trang 12


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Hình 2.3

Module điều khiển

II.3 Phần mạch nguồn
Nguồn sử dụng trong đồ án gồm 2 cấp điện áp : Nguồn 5V cấp cho vi điều khiển
và nguồn 9V cấp cho động cơ. Để có thể tận dụng ngay nguồn điện năng xoay chiều có
sẵn, em thiết kế ra 2 mạch chỉnh lưu kết hợp với ổn áp riêng lẻ để cấp cho mạch 9V và
adapter dòng 15mA để cấp cho mạch điều khiển.


Trang 13


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Hình 2.4

Nguồn 5V

Các linh kiện trong mạch :
D1, C10 : diode loại 5A và tụ 1000u tạo thành mạch xén xung âm đưa vào ổn áp.
U18 : IC ổn áp 7812, 7805 là thành phần chính tạo điện áp đầu ra 5V để cấp cho vi
điều khiển và 9V để cấp cho động cơ
C11, C12 : tụ hóa 104, làm nhiệm vụ lọc tín hiệu dương ở tần số cao
C10, C13 : lọc tín hiệu dương ở đầu vào và đầu ra của 7805
Q2 : Transistor loại B688 hoặc B633 làm nhiệm vụ đệm dòng
R7, D2 : led điểm để phát hiện nguồn đã được cấp và đạt đến 5V hay chưa, còn R7
là để tạo điện áp rơi đủ để D2 sáng mà không bị cháy. Giá trị R7 được tính như sau :
R7 =

5V − Vled 5V − 0,7V
=
= 215( Ω ) chọn R7 = 330 (Ω)
I led
20mA

Phần mạch nguồn này được tích hợp luôn trên mạch điều khiển.

II.4 Phần mạch công suất :
Động cơ bước sử dụng thuộc loại 2 pha, 6 dây, số hiệu 23LM-C004 với các thông

số cho trước như sau :
- Dòng điều khiển

: Iđm = 1,2A

- Áp điều khiển

: Uđm = 6V

- Bước quay

: 1,80

- Số bước quay 1 vòng : 200 bước

Trang 14


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Với các đặc điểm của động cơ như trên, việc kích dòng cho động cơ trực tiếp từ vi
điều khiển là không thể thực hiện được. Có các cách giải quyết vấn đề này như sau :
- Sử dụng IC họ ULN, UCN như ULN2003, ULN2803, UCN5803, UCN5804 …
để tăng dòng. 1 ưu điểm nữa của các IC này là có diode bảo vệ bên trong chống lại dòng
ngược từ động cơ xuất hiện khi hãm
- Sử dụng linh kiện rời với các BJT và FET IRF làm nhiệm vụ tăng dòng dẫn ra
các cuộn dây
- Sử dụng vi mạch chuyên dụng điều khiển động cơ 2 pha là cặp L297, L298 với
cách mắc được cho sẵn trong datashet của sản phẩm.
Xét về sự phù hợp với đặc điểm của động cơ là dòng kích lớn, họ ULN không đáp

ứng được, cùng với sự phù hợp về kinh tế, em lựa chọn cách thứ hai. Mạch công suất
thiết kế gồm 8 khối công suất giống hệt để có thể điều khiển được 2 động cơ, phục vụ
mục đích mở rộng sau này. Ở hình bên dưới chỉ trích ra một khối. Để bảo đảm an toàn, ở
đầu vào mạch này lắp cách li quang.

Hình 2.5

Mạch công suất

Trong đó dk5 dẫn trực tiếp từ đầu ra của chân vi điều khiển, VCC là nguồn của vi
điều khiển, nguồn 12V là trên lí thuyết, thực tế có thể thay đổi chút ít nằm trong giới hạn
cho phép của động cơ sử dụng, ở đây em dùng nguồn 9V. coin5 nối ra dây động cơ bước,
còn ISO5 là linh kiện OPTO PC817.
Khi có điện áp kích (ở mức 0) đưa vào dk5, ISO 5 dẫn. Cụm D468, B568 làm
nhiệm vụ đẩy kéo và khuếch đại dòng đưa vào chân G của FET. Điện trở R14 dùng để
phân cực cho Q14, Q15. Điện trở R15 dùng để phân cực cho FET đồng thời tăng hệ số
khuếch đại dòng của FET. R29 là điện trở hạn dòng bảo vệ OPTO. Trong cùng một thời

Trang 15


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

điểm sẽ có một hoặc nhiều đầu dây được kích để tạo ra chuyển động quay của động cơ
bước.
Giá trị của các điện trở được tính như sau :
R 29 =

Vcc − Vak 5V − 0,5V
=

= 225( Ω )
I ak
20mA

chọn R29 = 560 (Ω)

R 14 =

12V − Vces 12V − 0,2V
=
= 11,8KΩ
I ces
1mA

chọn R14 = 10 (kΩ)

I g = I e / Q14 = βI ces = 80 × 1mA = 80mA

Sơ đồ tương đương của tầng ra (chứa FET) :

R 15
R

D
U 1

R gs
4 .7

R dc

4

1

G

1

Ig

2

2

gm Vgs

S

Dòng vào

:

Ig

=

80 mA

Dòng ra định mức


:

Idcdm

=

1,5 A

Id c

Chọn dòng cho động cơ bằng 5 lần dòng định mức, khi đó Idc = 7,5 A
 Hệ số khuếch đại dòng :
Ai =

I dcdm
7,5A
=
= 93,75
Ig
80mA

Mặt khác :
Ai =

g m Vgs
Vgs

= g m ( R 15 // R gs ) = 20 ×

R 15 × 4,7

R 15 + 4,7

R 15 // R gs




1  1
1 
1

 =
+
20  R 15 4,7  93,75

R15 = 878,9 (Ω)

Chọn R15 thấp xuống để giảm hệ số khuếch đại dòng, chọn R15 = 390 Ω

Trang 16


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Chương III

THIẾT KẾ PHẦN MỀM

Phần mềm được thiết kế gồm 2 phần :
- Phần thiết kế giao diện giao tiếp với chip ngoại vi (P89V51RB2) trên máy

tính ;
- Phần lập trình trên vi điều khiển để giao tiếp với máy tính và điều khiển
động cơ bước.

Trang 17


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

III.1 Thiết kế giao diện phần mềm trên máy tính
III.1.1 Những vấn đề chung nhất về Visual Basic
- Visual Basic hỗ trợ đồ họa mạnh, nên có thể dễ dàng thiết kế giao diện theo ý
muốn.
- Ngôn ngữ Visual Basic là ngôn ngữ cấp cao, hướng đối tượng nên dễ dàng lập
trình xử lí trên từng đối tượng, tạo sự đóng gói dữ liệu, dễ kiểm tra và phát triển theo ý
muốn.
- Khi thiết kế giao diện trên phần mềm, ta có thể sử dụng các đối tượng hỗ trợ sẵn
có thể tìm thấy ở bên trái cửa sổ phần mềm khi khởi động Visual Basic hoặc gọi ra từ nút
Toolbox ở thanh công cụ phía trên màn hình. Ngoài các đối tượng trên, Visual Basic còn
hỗ trợ thêm các điều khiển mạnh và chuyên biệt, được gọi từ Project  Component.
Trong đó, điều khiển MS_COMM là điều khiển được hỗ trợ sẵn cho cổng nối tiếp. Ngoài
ra cũng có thể điều khiển bằng cách lập trình trên thư viện liên kết động ở dạng file .dll
tuy nhiên ở mức độ không chuyên em chọn cách dùng điều khiển MS_COMM cho đồ án
của mình.
III.1.2 Bản chất của việc thu nhận dữ liệu qua cổng COM
Khi thu dữ liệu bằng cổng COM, giá trị sẽ truyền trên qua chân RxD và đưa vào
chip UART (Universal Asynchronous Receiver/Transmitter : mạch thu phát không đồng
bộ vạn năng) kết nối trực tiếp với cổng COM trên máy tính. Một số loại chip UART được
sử dụng trên các máy tính là 8250, 16450, 16550. Bên trong chip UART có 1 thanh ghi
đệm thu, chính là nơi lưu giữ các dữ liệu tạm thời được nhập qua cổng COM, và 1 thanh

ghi đệm phát lưu giữ dữ liệu chờ được xuất ra khỏi cổng. Khi phát dữ liệu, giá trị người
dùng đưa vào máy sẽ đưa vào bộ đệm phát và xuất ra chân TxD đưa đến thiết bị ngoại vi.
Mỗi lần thu và phát dữ liệu trên cổng COM sẽ gây ra một ngắt trên chip UART.
Em không đi sâu vào cấu tạo bên trong của vi mạch UART vì đồ án của em chỉ
quan tâm đến phương thức gửi và nhận tín hiệu qua cổng, còn việc xử lí tín hiệu bên
trong chip UART đã được nhà sản xuất đảm nhận.
III.1.3 Nghiên cứu các thuộc tính của điều khiển MS_COMM
- Settings :
Cú pháp : MSCOMMx.Settings = “bps,p,d,s”
Trong đó :

x : số thứ tự của điều khiển MS_COMM ta đang sử dụng.
bps: tốc độ truyền dữ liệu của cổng nối tiếp (bit/giây)
p : kiểm tra chẵn lẻ. Giá trị của nó là O (kiểm tra lẻ), E (kiểm tra
chẵn), N (không kiểm tra chẵn lẻ).

Trang 18


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

d : số bit dữ liệu
s : số bit stop
Các thông số được lấy tương ứng với cổng RS232 của người dùng.
Như hình bên dưới là thông số cổng COM trên máy tính của em. Như vậy khai
báo thuộc tính Settings sẽ là :
MSCOMM1.Settings = “9600,N,8,1”

Hình 3.1


Cách xác định thuộc tính cổng COM trên máy tính

Kiểm tra thuộc tính này trên điều khiển MSCOMM :

Trang 19


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Hình 3.2

Thuộc tính cổng COM trên MSCOMM hỗ trợ sẵn

- CommPort :
Cú pháp :

MSCOMMx.Commport = y

Với y là số thứ tự của cổng COM ta sử dụng. Như hình trên, cổng COM của ta có
số thứ tự là 1. Như vậy khai báo Commport là :
MSCOMM1.CommPort = 1
- PortOpen :
Cú pháp :

MSCOMMx.PortOpen = Boolean

Với Boolean là True (buộc mở Port) và False (buộc đóng Port).
3 thuộc tính nêu trên bắt buộc khai báo khi muốn sử dụng cổng COM cho ứng
dụng của mình.
- Các thuộc tính nhận dữ liệu :

Input

: nhận 1 chuỗi kí tự và xóa khỏi bộ đệm

InBufferCount

: số kí tự có trong bộ đệm nhận

InBufferSize

: đặt và xác định kích thước bộ đệm nhận, tính bằng Byte

- Các thuộc tính xuất dữ liệu : tương tự như nhập dữ liệu, bao gồm thuộc tính
Output, OutBufferCount, OutBufferSize
- CDTimeout, DSRTimeOut, CTSHolding, DSRHolding, CDHolding : do đồ
án không có giao tiếp với thiết bị trung gian như Modem nên các thuộc tính này ta không
quan tâm đến.

Trang 20


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

- DTREnable : thông báo sự tồn tại của DTE, nhận kiểu Boolean.
- RTSEnable : xóa tín hiệu RTS để yêu cầu truyền dữ liệu đến DTE.
- NullDiscard : cho phép nhận kí tự rỗng hay không.
- RThreshold, SThreshold : số byte trong bộ đệm nhận, bộ đệm phát làm phát
sinh sự kiện OnComm.
- HandShaking : chọn giao thức bắt tay khi truyền dữ liệu. Đối với đồ án của em
không sử dụng giao thức này nên cũng không cần nghiên cứu sâu ở đây.

- CommEvent : trả lại các lỗi truyền thông hay các sự kiện xảy ra trên cổng nối
tiếp.

* Sự kiện OnComm : là sự kiện xảy ra khi có thay đổi giá trị của các thuộc tính trong
CommEvent.

Trang 21


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

III.1.4 Thiết kế giao diện

Hình 3.3

Giao diện chính của phần mềm

Giải thích giao diện :
- Trước khi vào giao diện chính, người dùng có thể xem qua các hướng dẫn trong
menu Hướng dẫn để thực hiện các thao tác kết nối phần cứng và các bước tiến hành thao
tác trên phần mềm.
- Trong giao diện chính người dùng sẽ chọn lần lượt theo thứ tự các bước. Nút
Cancel dùng để tắt giao diện. Nút Stop làm việc ở hai chế độ, ở chế độ kiểm tra cổng sẽ
làm việc như nút OK dùng để chấp nhận chuỗi kí tự gửi từ khung kí tự nhận, còn ở chế
độ quay động cơ sẽ dùng để dừng động cơ. Khi khởi động giao diện, frame Kiểm tra
frame Chế độ quay sẽ không hiển thị, chỉ khi người dùng chọn 1 trong hai chế độ Kiểm
tra cổng hoặc Ngoại vi thì frame tương ứng mới cho phép nhìn thấy.
+ Bước 1 : chứa các thao tác để chọn cổng và tốc độ baud tuân theo thuộc tính của
nó trên máy tính của người dùng.


Trang 22


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

+ Bước 2 : chứa 2 tùy chọn :
* Ngoại vi : là để chọn các chế độ điều khiển trực tiếp thiết bị ngoại vi từ máy
tính. Nếu chọn tùy chọn này thì các chế độ trong frame Chế độ quay sẽ cho phép chọn,
còn nếu chọn tùy chọn Kiểm tra cổng thì
* Kiểm tra cổng : để test cổng DB9. Có thể test riêng cổng trên máy tính của mình
bằng cách nối 2 chân thứ 2 (RxD) và thứ 3 (TxD) của cổng với nhau, hoặc kết nối 2 máy
tính với sơ đồ kết nối các chân như sau :

Hình 3.2

Ghép nối truyền thông của chuẩn giao tiếp nối tiếp

Khi đó frame Kiểm tra mới hiển thị lên, cho phép gõ vào khung Kí tự phát, khi
nhấn OK hoặc Enter thì dãy kí tự sẽ xuất hiện ở khung Kí tự nhận. Trường hợp cổng bị
hư hỏng, hoặc kết nối dây không đúng thì khung Kí tự nhận không hiển thị gì. Sau khi
kiểm tra xong, nếu ta muốn thực hiện chọn chế độ điều khiển cho thiết bị ngoại vi, cần
chọn lại tùy chọn Ngoại vi ở trên, khi đó frame Kiểm tra bị ẩn đi. Việc làm ẩn đi hoặc
hiển thị frame các frame chỉ có tác dụng làm giao diện rõ ràng và thẩm mĩ hơn, không
ảnh hưởng đến thuật toán chương trình.
- menu Giới thiệu là một phần phụ đi theo, giới thiệu về đề tài, tác giả và lời cảm
ơn.
III.1.5 Lập trình trên nền Visual Basic
Lập trình theo lưu đồ thuật toán sau :

Trang 23



Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

`

START

- Chọn cổng COM
- Chọn tốc độ baud

Chế độ test
cổng

Đ

Hiển thị gửi và
nhận chuỗi kí tự
trên màn hình

Đ

Chọn chế độ quay và gửi ra cổng
COM

S
Chế độ quay
động cơ

Dừng động



Đ

S

Hiển thị thông
báo dừng trên
màn hình máy
tính

END

Hình 3.4

Lưu đồ thuật toán việc gửi và xử lí dữ liệu từ PC trên VB6.0

III.2 Thiết kế phần mềm trên chip P89V51RB2
III.2.1 Điều khiển thu phát dữ liệu
Đối với các chip vi điều khiển hiện nay, việc thu phát dữ liệu có thể thực hiện
được nhờ một chip UART tích hợp bên trong qua hai đường truyền thông nối tiếp là TxD
và RxD trên vi điều khiển. Thường hai đường này nằm trùng với 2 chân làm nhiệm vụ
xuất/nhập dữ liệu thông thường, chỉ được sử dụng trong trường hợp truyền nhận nối tiếp

Trang 24


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

khi được set chế độ thích hợp bằng phần mềm. Việc thu phát dữ liệu của vi điều khiển

theo 2 phương thức :
a) Thăm dò : đối với việc thu dữ liệu, vi điều khiển không làm gì cả, chỉ chờ việc dữ liệu
gửi đến bộ đệm thu, thực thi nhiệm vụ tương ứng với dữ liệu đó – cũng chính là lệnh điều
khiển được gửi đến vi điều khiển từ DTE phát. Đối với việc phát dữ liệu, vi điều khiển
chờ dữ liệu được đưa vào bộ đệm phát và phát tín hiệu sẵn sàng cho việc gửi dữ liệu. Sau
khi thực thi chương trình tương ứng, vi điều khiển lại quay về chờ dữ liệu được đưa vào
bộ đệm để chuyển đến chương trình kế tiếp. Việc này tuy thực hiện đơn giản nhưng lại
mất thời gian trong việc chờ đợi dữ liệu. Đối với phương thức này, đối với 8051, người ta
sử dụng thanh ghi SCON chuyên dụng cho việc truyền thông nối tiếp trong vi điều khiển.
Cấu tạo của nó như sau :
Các bit chức năng trên thanh ghi SCON :

Trong đó :
Bit 7, 6 : các bit chọn chế độ được cho bởi bảng sau :

Chế độ 0 : port nối tiếp làm việc ở chế độ thanh ghi dịch 8 bit. Dữ liệu nối tiếp
được thu và phát thông qua chân RxD, còn chân TxD xuất xung clock dịch bit. Tốc độ
baud cố định = 1/12 tần số của dao động nội trong chip.
Chế độ 1, 2, 3 : port nối tiếp làm việc ở chế độ UART như mô tả ở trên. 2 chân
RxD và TxD theo đúng chức năng Thu/ Phát như tên của nó. Chữ “x” trong tên của 2
chân này để nhấn mạnh rằng 2 thiết bị đầu cuối kết nối theo kiểu nối tiếp có thể làm việc
bắt tay, nghĩa là có thể đồng thời phát và thu trên 2 đường dữ liệu riêng biệt.
Bit 5 : cho phép truyền thông đa xử lí làm việc ở các chế độ 2 và 3. Do trong đồ án
không yêu cầu truyền thông theo kiểu này, do đó ta không nghiên cứu sâu vào.

Trang 25


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051


Bit 4 : cho phép thu. Thường được set lên từ đầu để cho phép thu dữ liệu ngay khi
cấp nguồn và kết nối với máy tính.
Bit 3, 2 : chỉ sử dụng trong chế độ 2 và 3, là bit thứ 9 được truyền đi hoặc nhận về
trong 2 chế độ này tùy thuộc vào việc nhận hay phát tín hiệu của vi điều khiển.
Bit 1 : cờ ngắt phát. Được set khi kết thúc việc thu kí tự, xóa bởi phần mềm.
Bit 0 : cờ ngắt thu. Thường set ở đầu chương trình để báo bộ đệm rỗng, cho phép
nhận tín hiệu ngay khi cấp nguồn và kết nối với máy tính. Được xóa bởi phần mềm.
b) Ngắt nối tiếp :
Phương thức này khắc phục được nhược điểm của phương thức thăm dò nêu trên,
đó là loại bỏ thời gian vô ích trong việc chờ dữ liệu được đưa đến bộ đệm thu/phát. Trong
khi chương trình chính của ta đang thực thi, thì một ngắt thu/phát do dữ liệu được đưa
đến bộ đệm ở trạng thái sẵn sàng cho việc thực thi chương trình ngắt nối tiếp xảy ra,
chương trình nhảy đến chương trình ngắt tương ứng để thực hiện, xong đâu đấy nó lại
quay về điểm bị ngắt và thực thi tiếp.
Trong 8051 có thanh ghi điều khiển ngắt IE, sẽ điều khiển được 5 ngắt tương ứng,
đó là 2 ngắt do bộ định thời, 2 ngắt ngoài, 1 ngắt nối tiếp. Riêng đối với một số loại chip
của Philips như P89V51RB2, P89V51RD2 … hoặc chip AT89Sxx, AT89C52 của Atmel
có thêm 1 ngắt do bộ định thời thứ 3. Trong phạm vi nghiên cứu của đồ án này em chỉ
đưa ra những thuộc tính của ngắt do port nối tiếp.
Để khai báo việc sử dụng ngắt nối tiếp, ta set bit EA là bit thứ 7 của thanh ghi IE
để cho phép ngắt, và bit ES là bit thứ 4 của thanh ghi IE cho phép ngắt nối tiếp.
Khi xảy ra một ngắt (thu hoặc phát) cờ ngắt RI hoặc TI được set lên, chương trình
nhảy đến ngắt thích hợp và thực thi nó. Vì cờ nhớ không tự xóa nên người lập trình phải
xóa bằng thuật toán trên vi điều khiển để chương trình có thể thực hiện các ngắt tiếp theo.
Đối với cả hai phương thức nói trên, để thực hiện được cần phải tạo ra một tốc độ
baud thích hợp để việc truyền thông nối tiếp có thể xảy ra. Tốc độ baud này được tạo bởi
tốc độ tràn của bộ định thời trên chip vi điều khiển, do đó một bộ định thời sẽ được sử
dụng trong nhiệm vụ này.
Tốc độ baud = tốc độ tràn bộ định thời / 32
Vậy nếu ta cần tốc độ baud 9600 thì tốc độ tràn bộ định thời là 307,2KHz.

Tần số của thạch anh là 11,0592MHz, bộ định thời tạo tốc độ baud được cấp xung
clock là 0,9216 MHz = 921,6KHz, việc tràn này cần phải xảy ra sau mỗi 921,6/307,2 = 3
xung. Do bộ định thời đếm lên nên giá trị nạp lại cho bộ định thời phải là -3 hay 0FDh.
Để có sự đồng bộ hóa giữa việc gửi tín hiệu từ máy tính và nhận tín hiệu đưa vào
chip cần phải tuân theo đúng loại dữ liệu được đưa từ máy tính, ví dụ dữ liệu gửi đến ở
dạng số nhị phân thì dữ liệu xử lí trên chip cũng phải ở dạng số nhị phân, còn ở dạng kí
tự thì dữ liệu xử lí trên chip cũng phải ở dạng kí tự.

Trang 26


Lập trình điều khiển động cơ bước từ máy tính qua cổng nối tiếp dùng VĐK 8051

Lưu ý : trong chương trình thuộc nội dung đồ án, dữ liệu được xuất ra ở cổng
COM ở dạng kí tự và dữ liệu nhận vào chip cũng ở dạng kí tự, nên để đồng bộ hóa việc
thu phát dữ liệu và dễ dàng trong việc lập trình, em sử dụng các kí tự theo thứ tự tùy chọn
trên giao diện thiết kế để gửi và nhận tín hiệu trên cả VB lẫn chip, đó là :
“1” : Chế độ 1 - quay thuận cả bước
“2” : Chế độ 2 - quay nghịch cả bước
“3” : Chế độ 3 - quay thuận nửa bước
“4” : Chế độ 4 - quay nghịch nửa bước
Để thực hiện việc thu và phát tín hiệu giao tiếp giữa vi điều khiển, em sử dụng
ngắt nối tiếp của vi điều khiển P89V51RB2.
Chương trình xử lí dữ liệu từ máy tính được cụ thể hóa trên lưu đồ thuật toán sau :

MAIN
Các khai báo
Khởi tạo
Chờ ngắt


Chế độ 1 ?

S

Đ
QUAY THUẬN
CẢ BƯỚC

Chế độ 2 ?
Đ
QUAY NGHỊCH
CẢ BƯỚC

Hình 3.5

S

Chế độ 3 ?
Đ
QUAY THUẬN
NỬA BƯỚC

S

Chế độ 4 ?

S

Đ
QUAY NGHỊCH

NỬA BƯỚC

Lưu đồ thuật toán xử lí dữ liệu trên P89V51RB2

<bị sai chỗ chờ ngắt : nhảy đến trình phục vụ ngắt, trong trình phục vụ ngắt mới so sánh>

Trang 27


×