Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8051
Chương 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.
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
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 :
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 dạng của cổng DB9 trên máy tính
Hình 1.4 Vị trí các chân của cổng DB9 trên máy tính
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
Chương 2
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.
PC
MẠCH CÔNG
SUẤT
THIẾT BỊ NGOẠI VI
V c c C 5
1 2 G N D
D 1 R 1 C 3
G N D 2 1 2 1
1 n
L E D 1 k 1 n
J P 1
U 1
16
R x D
2
4 T x D 1
2 P 1
3 C 1 + C 4
V+
G N D G N D 5
VCC
2 V c c C 1 3 6 2 1 9
1 C 1 - V - 4
12 1 n 4 8
4 H E A D E R C 2 + 1 4 1 n 3
C 2 5 T 1 O U T 7
C 2 - 7 2
1 1 n 1 1 T 2 O U T 6
T x D 1 0 T 1 I N 1
1 2 T 2 I N 1 3
R x D 9 R 1 O RU 1 T I8 N
C O N N E C T O R
GND
R 2 O RU 2 T I N
M A X 2 3 2
15
G N D
Phần mạch nguồn này được tích hợp luôn trên mạch điều khiển.
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.
đ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 :
Vcc − Vak 5V − 0,5V
R 29 = = = 225( Ω) chọn R29 = 560 (Ω )
I ak 20mA
12 V − Vces 12 V − 0,2V
R 14 = = = 11,8KΩ chọn R14 = 10 (kΩ )
I ces 1mA
I g = I e / Q14 = βI ces = 80 ×1mA = 80 mA
R 1 5 R g s U 1 R d c
1
R 4 . 7 4
1
g m V g s
2
2
S I d c
Dòng vào : Ig = 80 mA
Dòng ra định mức : Idcdm = 1,5 A
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 :
I dcdm 7,5A
Ai = = = 93,75
Ig 80 mA
Mặt khác :
g m Vgs R 15 × 4,7
Ai = = g m ( R 15 // R gs ) = 20 ×
Vgs 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 Ω
Chương III
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ẻ).
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 :
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.
- 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.
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.
START
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
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.
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.
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à :
MAIN
S
Chế độ 1 ?
Đ
QUAY THUẬN
CẢ BƯỚC
S S S
Chế độ 2 ? Chế độ 3 ? Chế độ 4 ?
Đ Đ Đ
QUAY NGHỊCH QUAY THUẬN QUAY NGHỊCH
CẢ BƯỚC NỬA BƯỚC NỬA BƯỚC
R6 = 25 R6 = 25
R4 = 4 R4 = 4
A = 01111111B A = 11101111B
DELAY DELAY
P2 A P2 A
DELAY DELAY
Giảm R4 Giảm R4
S S
R4 = 0 R4 = 0
Đ Đ
Giảm R6 Giảm R6
S S
R6 = 0 ? R6 = 0 ?
Đ Đ
RETI RETI
R6 = 25 R6 = 25
DELAY DELAY
P2=01111111B P2=11101111B
DELAY DELAY
P2=00111111B P2=11001111B
DELAY DELAY
P2=10111111B P2=11011111B
DELAY DELAY
P2=10011111B P2=10011111B
DELAY DELAY
P2=11011111B P2=10111111B
DELAY DELAY
P2=11001111B P2=00111111B
DELAY DELAY
P2=11101111B P2=01111111B
DELAY DELAY
P2=01101111B P2=01101111B
Giảm R6 Giảm R6
R6 = 0 ? S R6 = 0 ? S
Đ Đ
RETI RETI
Hình 3.6 Lưu đồ thuật toán thu nhận dữ liệu điều khiển động cơ bước
Chương IV
MỞ RỘNG ĐỒ ÁN
Phần này nêu lên các ưu nhược điểm trong các bước xây dựng
phần cứng, phần mềm của đồ án, những ứng dụng thực tiễn của
sản phẩm và mở rộng đồ án cho các ứng dụng nâng cao hơn để
hoàn chỉnh chức năng của một sản phẩm có tính ứng dụng thực
tiễn cao.
- Chuyển đổi chế độ quay ngay trong quá trình động cơ quay, thay đổi tốc độ quay
- Ứng dụng cho việc điều khiển tuần tự trong một dây chuyền sản xuất, chẳng hạn
như dây chuyền cấp phôi tự động, dây chuyền lắp ráp các thiết bị sử dụng trong các nhà
máy …
- Điều khiển chính xác tọa độ dựa trên các chuyển động của động cơ bước. Có thể
ứng dụng trong các máy vẽ, điện tâm đồ, điện não đồ hoặc chuyển động các trục trong
máy CNC. Nhờ có giao diện với máy tính nên việc điều khiển sẽ trở nên trực quan hơn.
- Mở rộng giao tiếp truyền thông đa xử lí để giao tiếp giữa các máy tính trong
mạng cục bộ nhà máy, cơ sở sản xuất nhằm tối ưu hóa thời gian và khắc phục trở ngại
của không gian.
- Kết hợp giữa mô phỏng trên phần mềm với điều khiển thực tế để tối ưu quá trình
thiết kế robot, giúp rút ngắn con đường giữa lí thuyết và thực nghiệm.