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
Trang 1Chươ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 2I.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,720, và phổ biến là loại có góc bước 1,80 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
Trang 3nhau 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
Trang 4- 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ể :
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 độ
Trang 5lợ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 ÷ 12VTrong 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
Trang 6Bảng 1.1 Bảng liệt kê tên gọi và chức năng các chân của DB9
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 :
Trang 7I.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 8Chươ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 9Hì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
MẠCH
CHÍNH
MẠCH GIAO TIẾP
MẠCH CÔNG SUẤT
PC
THIẾT BỊ NGOẠI VI
Trang 10II.1 Phần mạch giao tiếp
6
7
8 9
C 2
1 n
1 2
C 3
1 n
1 2
C 4
1 n
1 2
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 11Hì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 12Hì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 :
V7,0V5I
VV57R
led
led
chọn R7 = 330 (Ω)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 13Vớ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
Trang 14đ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 :
V5,0V5I
VV
ak
ak cc 29
V2,0V12I
VV12R
A5,7I
IA
//
RgR//
RV
VgA
15
15 gs
15 m gs 15 gs
gs m
17
,4
1R
120
Trang 16III.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
Trang 17d : số bit dữ liệu
s : số bit stopCá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 :