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

ĐIỀU KHIỂN ĐỘNG CƠ SERVO SỬ DỤNG VI ĐIỀU KHIỂN THÔNG QUA MÁY TÍNH

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 (594.93 KB, 19 trang )

ĐIỀU KHIỂN ĐỘNG CƠ SERVO SỬ DỤNG VI ĐIỀU KHIỂN THƠNG QUA
MÁY TÍNH.
1. Giới thiệu
Kỹ thuật vi xử lí với tốc độ phát triển nhanh đã và đang mang đến những thay đổi
to lớn trong khoa học và công nghệ cũng như trong đời sống hàng ngày. Ngày nay,
các thiết bị máy móc ngày càng trở nên thơng minh hơn, các công việc được
thực hiện với hiệu quả cao hơn, đó cũng là nhờ vi xử lý, vi điều khiển.
Kỹ thuật vi xử lý, vi điều khiển là kỹ thuật của tương lai, là chìa khóa đi
vào cơng nghệ hiện đại. Đối với sinh viên chuyên ngành điện - điện tử, đây là một
lĩnh vực mới, hứa hẹn và mở ra nhiều triển vọng. Trong đó việc học tập, tìm hiểu kỹ
thuật điều khiển và cách ghép nối các thiết bị với các hệ vi điều khiển là một vấn đề
vơ cùng cần thiết.
Máy vi tính hiện khơng cịn xa lạ với mọi người, chúng được sử dụng rất rộng rãi
trong nhiều lĩnh vực. Đặc biệt trong việc học tập, nghiên cứu tại các trường Đại Học,
Cao Đẳng việc khai thác sử dụng máy tính trong học tập và giảng dạy, đóng vai trị
vơ cùng quan trong trong cơng cuộc tiếp cận và phát triển các ngành khoa học mũi
nhọn trong tương lai.
Vì các lý do nêu trên, báo cáo này sẽ đề cập đến phương pháp ghép nối giữa máy
tính và vi điều khiển sử dụng chuẩn truyền thơng UART, điều khiển động cơ servo.
Các nội dung liên quan đến kiến trúc vi điều khiển, tập lệnh, ngôn ngữ lập trình cũng
như giới thiệu cơ bản về các phần mềm có liên quan sẽ khơng được đề cập đến.
2. Truyền thơng nối tiếp với 8051.
Các máy tính truyền dữ liệu theo hai cách: Song song và nối tiếp. Trong truyền dữ
liệu song song thường cần rất nhiều đường dây dẫn chỉ để truyền dữ liệu đến một
thiết bị chỉ cách xa vài bước. Ví dụ của truyền dữ liệu song song là các máy in hoặc
các ổ cứng, mỗi thiết bị sử dụng một đường cáp với nhiều dây dẫn. Mặc dù trong các
trường hợp như vậy thì nhiều dữ liệu được truyền đi trong một khoảng thời gian ngắn
bằng cách dùng nhiều dây dẫn song song, nhưng khoảng cách thì khơng thể lớn được.
Vì các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngồi ra, các đường
cáp dài có giá thành cao. Vì những lý do này, để truyền dữ liệu đi xa thì phải sử
dụng phương pháp truyền nối tiếp.



1


UART là viết tắt của Universal Asynchronous Receiver – Transmitter. Thường là
một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính
và các thiết bị ngoại vi. Mục đích của UART là để truyền tín hiệu qua lại lẫn nhau (
ví dụ truyền tín hiệu từ Laptop vào Modem .... hay ngược lại ) hay truyền từ vi điều
khiển tới vi điều khiển, từ laptop tới vi điều khiển ....
2.1. Các cơ sở của truyền thông nối tiếp
Trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một, so với truyền song
song thì là một hoặc nhiều byte được truyền đi cùng một lúc.

Hình 1: Sơ đồ truyền dữ liệu nối tiếp so với sơ đồ truyền song song.
Trong truyền thông nối tiếp, một đường dữ liệu duy nhất được dùng thay cho
nhiều đường dữ liệu của truyền thông song song không chỉ giúp giảm giá thành, giúp
hệ thống đơn giản hơn nhiều mà nó cịn mở ra khả năng để hai máy tính ở cách xa
nhau có truyền thơng qua đường thoại.
Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp là đồng bộ và không
đồng bộ (dị bộ):
Ø Truyền đồng bộ: Bộ truyền và bộ thu được đồng bộ hóa qua một đường tín
hiệu đồng hồ bên ngồi. Khái niệm đồng bộ để chỉ sự báo trước trong q trình
truyền. Lấy ví dụ: thiết bị 1 (tb1) kết nối với với thiết bị 2 (tb2) bởi 2 đường, một
đường dữ liệu và 1 đường xung nhịp. Cứ mỗi lần tb1 muốn truyền 1 bit dữ liệu, tb1
điều khiển đường xung nhịp chuyển từ mức thấp lên mức cao báo cho tb2 sẵn sàng
nhận một bit. Bằng cách “báo trước” này tất cả các bit dữ liệu có thể truyền/nhận dễ
dàng với ít rủi ro trong q trình truyền. Tuy nhiên, cách truyền này địi hỏi ít nhất 2
đường truyền (dữ liệu và clock) cho 1 quá trình truyền hoặc nhận.
Ø Truyền không đồng bộ: chỉ cần một đường truyền cho một quá trình.
Khung dữ liệu đã được chuẩn hóa bởi các thiết bị nên khơng cần đường xung nhịp báo

trước dữ liệu đến. Ví dụ: 2 thiết bị đang giao tiếp với nhau theo phương pháp này,
chúng đã được thỏa thuận với nhau rằng cứ 1ms thì sẽ có 1 bit dữ liệu truyền đến, như
thế thiết bị nhận chỉ cần kiểm tra và đọc đường truyền mỗi mili-giây để đọc các bit dữ
liệu và sau đó kết hợp chúng lại thành dữ liệu có ý nghĩa. Truyền thơng nối tiếp khơng
đồng bộ vì thế hiệu quả hơn truyền thông đồng bộ (không cần nhiều đường truyền).

2


Tuy nhiên, để q trình truyền thành cơng thì việc tuân thủ các tiêu chuẩn truyền là hết
sức quan trọng.
2.1.1 Baud rate (tốc độ Baud)
Để việc truyền và nhận không đồng bộ xảy ra thành cơng thì các thiết bị tham
gia phải “thống nhất” với nhau về khoảng thời gian dành cho 1 bit truyền, hay nói cách
khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud.
Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây.
2.1.2 Frame (khung truyền)
Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nối tiếp là một
dãy các số 0 và 1, và rất khó để hiểu được ý nghĩa của các dữ liệu ấy nếu bên phát và
bên thu không cùng thống nhất về một tập các luật, một thủ tục, về cách dữ liệu được
đóng gói, bao nhiêu bit tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc. Bên
cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi
truyền và nhận.
Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit báo
như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong
một data cũng được quy định bởi khung truyền.
Ø Start bit
Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng
báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Start là bit bắt
buộcphải có trong khung truyền, và nó là một bit thấp (0).

Ø Data (dữ liệu)
Data hay dữ liệu cần truyền là thơng tin chính mà chúng ta cần gởi và nhận.
Data không nhất thiết phải là gói 8 bit, với 8051 ta có thể quy định số lượng bit của
data là 08 hoặc 09 bit. Trong truyền thơng nối tiếp UART, bit có trọng số nhỏ nhất
(LSB - Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng
là bit có trọng số lớn nhất (MSB - Most Significant Bit, bit bên trái).
Ø Parity bit
Parity là bit dùng để kiểm tra dữ liệu truyền có đúng khơng (một cách tương
đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn
nghĩa là số lượng số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại
tổng số lượng các số “1” trong parity lẻ luôn là số lẻ. Parity bit không phải là bit bắt
buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền.
Ø Stop bits
Stop bits là 01 hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã
được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung

3


truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bit bắt buộc xuất hiện
trong khung truyền, trong 8051 có thể là 01 hoặc 02 bit, và chúng là các bit cao (1).

Hình 2: Một khung truyền trong truyền thơng nối tiếp khơng đồng bộ.
Trong ví dụ ở hình 2: có 2 stop bits được dùng cho khung truyền.
2.2. Truyền thông nối tiếp trong 8051
2.2.1 Phần cứng
a. Các chân RxD và TxD trong 8051
Trong 8051 có hai chân được dùng cho truyền và nhận dữ liệu nối tiếp. Hai
chân này được gọi là TxD và RxD, là một phần của cổng P3 (đó là P3.0-chân 10 và
P3.1-chân 11). Các chân này hoạt động với mức logic TTL (mức logic cao “1” được

gán cho Vccvà mức logic thấp được gán cho 0v).
Vì các máy tính được sử dụng rất rộng rãi để truyền thông với các hệ thống vi
điều khiển, do vậy ta chủ yếu tập trung vào truyền thông nối tiếp của 8051 với cổng
COM – RS232 của PC.
b. Chuẩn giao diện RS232
Để cho phép tương thích giữa các thiết bị truyền thơng dữ liệu được sản xuất
bởi các hãng khác nhau thì một chuẩn giao diện được gọi là RS232 đã được thiết lập
bởi hiệp hội công nghiệp điện tử EIA vào năm 19960. Năm 1963 nó được sửa chỉnh
và được gọi là RS232A và vào các năm 1965 và 1969 thì được đổi thành RS232B và
RS232C. ở đây chúng ta đơn giản chỉ hiểu là RS232. Ngày nay RS232 là chuẩn giao
diện I/O vào - ra nối tiếp được sử dụng rộng rãi nhất. Chuẩn này được sử dụng trong
máy tính PC và hàng loạt các thiết bị khác nhau.

4


Ø Các chân của cổng RS232
Hình 3 là sơ đồ chân của cáp RS232 và chúng thường được gọi là đầu nối DB 25. Trong lý hiệu thì đầu nối cắm vào (đầu đực) gọi là DB - 25p và đầu nối cái được
gọi là DB - 25s.

Hình 3: Đầu nối DB - 25 của RS232.
Vì khơng phải tất cả mọi chân của cổng RS232 đều được sử dụng trong cáp của
máy tính PC, nên IBM đưa ra phiên bản của chuẩn vào/ra nối tiếp chỉ sử dụng có 9
chân gọi là DB - 9 như trình bày ở bảng 1 và hình 4.

Hình 3: Đầu nối DB - 9 của RS232.
Bảng 1. Đầu nối DB - 9 của RS232
Số chân
Mô tả
1

Data carrier detect (DCD)
2
Received data (RxD)
3
Transmitted data (TxD)
4
Data terminal ready (DTR)
5
Signal ground (GND)
6
Data set ready (DSR)
7
Request to send (RTS)
8
Clear to send (CTS)
9
Ring indicator (RI)
c. Nối ghép 8051 tới RS232

Tránh tín hiệu mạng dữ liệu
Dữ liệu được nhận
Dữ liệu được gửi
Đầu dữ liệu sẵn sàng
Đất của tín hiệu
Dữ liệu sẵn sàng
u cầu gửi
Xố để gửi
Báo chng

Chuẩn RS232 được thiết lập trước họ logic TTL rất lâu do vậy điện áp đầu vào

và đầu ra của nó khơng tương thích với mức TTL. Trong RS232 thì mức logic 1
được biểu diển từ điện áp - 3v đến -25v trong khi đó mức 0 thì ứng với điện áp + 3v
đến +25v làm cho điện áp - 3v đến + 3v là khơng xác định. Vì lý do này để kết nối một
chuẩn RS232 bất kỳ đến một hệ vi điều khiển 8051 thì ta phải sử dụng các bộ biến đổi
điện áp (nhưMAX232) để chuyển đổi các mức điện áp RS232 về các mức điện
áp TTL sẽ được chấp nhận bởi các chân TxD và RxD của 8051 và ngược lại. Các IC
MAX232 nhìn chung được coi như các bộ điều khiển đường truyền.

5


Một điểm mạnh của IC MAX232 là nó dùng điện áp nguồn +5v cùng với điện
áp nguồn của 8051. Hay nói cách khác ta có thể ni 8051 và MAX232 với cùng một
nguồn +5v, mà không phải dùng hai nguồn ni khác nhau.
IC MAX232 có hai bộ điều khiển đường truyền để nhận và truyền dữ liệu như
trình bày trên hình 5. Các bộ điều khiển được dùng cho chân TxD được gọi
là T1 và T2, cho chân RxD gọi là R1 và R2. Trong nhiều ứng dụng thì chỉ có 1 cặp
được dùng. Ví dụ: ở hình dưới ta chỉ dùng đến T2 và R2 được dùng làm 1 cặp đối
với TxD và RxD của 8051, còn cặp R1 và T1 thì khơng cần đến.
IC MAX232, T1 có gán T1in (chân 11) và T1out (chân 14):
Chân T1in là ở phía TTL và được nối tới chân RxD của bộ vi điều khiển.
Chân T1out là ở phía RS232 được nối tới chân RxD của đầu nối DB củaRS232.
Bộ điều khiển R1 cũng có gán R1in (chân 13) và R1out (chân 12):
Chân R1in (chân số 13) là ở phía RS232 được nối tới chân TxD ở đầu
nốiDB của RS232.
Chân R1out (chân số 12) là ở phía TTL được nối tới chân RxD của bộ vi điều
khiển.
Tương tự cho T2 và R2

Hình 5: Sơ đồ bên trong của MAX232 và Sơ đồ nối ghép nối

Bộ MAX232 địi hỏi 4 tụ hóa giá trị từ 1 đến 22uF. giá trị phổ biến nhất cho các tụ
này là 22uF.
2.2.2. Cấu hình phần mềm
Trong phần này chúng ta sẽ nghiên cứu về các thanh ghi truyền thơng nối tiếp
của 8051 và cách lập trình chúng để truyền và nhận dữ liệu nối tiếp.
a. Thanh ghi SBUF
SBUF là thanh ghi 8 bit được dùng riêng cho truyền thông nối tiếp trong 8051.
Đối với một byte dữ liệu muốn truyền qua đường TxD thì nó phải được đặt trong
thanh ghi SBUF. Tương tự, SBUF cũng giữ một byte dữ liệu khi nó được nhận từ
đường RxDcủa 8051:

6


·
Khi một byte được ghi vào thanh ghi SBUF nó sẽ được đóng khung với các
bit Start, Stop và được truyền nối tiếp quan chân TxD.
·
Khi các bit được nhận nối tiếp từ RxD thì 8051 mở khung đó để loại trừ các
bit Start, Stop để lấy ra một byte từ dữ liệu nhận được và đặt byte đó vào thanh
ghi SBUF.
b. Thiết lập chế độ truyền bằng thanh ghi SCON
Điều đầu tiên chúng ta phải làm là gì khi sử dụng cổng nối tiếp tích hợp của
8051? Rõ ràng là cấu hình cho nó. Điều này cho phép chúng ta báo với 8051 biết: bao
nhiêu bit dữ liệu chúng ta muốn truyền, tốc độ truyền. Vậy làm thế nào xác định các
điều đó? Nhờ thanh ghi SCON, là thanh ghi 8 bit được dùng để lập trình việc đóng
khung dữ liệu, xác định các chế độ làm việc của truyền thơng nối tiếp. SCON là thanh
ghi có thể đánh địa chỉ theo bit.
Dưới đây là mô tả các bit khác nhau của thanh ghi SCON:


Hình 6: Thanh ghi điều khiển cổng nối tiếp SCON
Ø Các bit SM0, SM1
Đây là các bit D7 và D6 của thanh ghi SCON. Chúng được dùng để xác định
các chế độ đóng khung dữ liệu, có 4 chế độ:

Hình 7: Các chế độ xác định bởi 2 bit SM0 và SM1
(*) Lưu ý: tốc độ truyền chỉ ra trong bảng này được tăng gấp đôi nếu bit PCON.7 (bit
SMOD) được thiết lập lên 1, mặc định của hệ thống là PCON.7=0.

7


Trong bốn chế độ trên ta chỉ quan tâm đến chế độ 1. Khi chế độ 1 được chọn
thì dữ liệu được đóng khung thành 10 bit: gồm 1 bit Start, sau đó là 8 bit dữ liệu, và
cuối cùng là 1 bit Stop. Quan trọng hơn là chế độ nối tiếp 1 cho phép tốc độ baud
thay đổi và được thiết lập bởi Timer1 của 8051.
Ø Bit SM2
Bit SM2 là bit D5 của thanh ghi SCON. Bit này cho phép khả năng đa xử lý
của 8051. Đối với các ứng dụng của chúng ta, đặt SM2 = 0 vì ta không sử dụng 8051
trong môi trường đa xử lý.
Ø Bit REN
REN (Receive Enable) là bit cho phép nhận (bit D4 của thanh ghi SCON). Khi
bitREN cao thì nó cho phép 8051 nhận dữ liệu trên chân RxD của nó. Và kết quả là
nếu ta muốn 8051 vừa truyền vừa nhận dữ liệu thì bit REN phải được đặt lên 1.
Bit này có thể được dùng để khống chế mọi việc nhận dữ liệu nối tiếp và nó là bit cực
kỳ quan trọng trong thanh ghi SCON.
Ø Bit TB8 và RB8
Bit TB8 và RB8 được dùng trong chế độ nối tiếp 2 và 3. Ta
đặt TB8=0 và RB8=0vì nó khơng được sử dụng trong các ứng dụng của mình.
Nói thêm, trong chế độ 2 và 3 thì có 9 bit dữ liệu được truyền đi hoặc nhận về.

BitTB8 sẽ chứa bit dữ liệu thứ 9 khi truyền, còn bit RB8 sẽ chứa bit dữ liệu thứ 9 khi
nhận, trong chế độ nối tiếp 1 thì bit RB8 này nhận một bản sao của bit Stop khi một
dữ liệu 8 bit được nhận, và ta cũng không cần quan tâmJ.
Ø Các bit TI và RI
Các bit ngắt truyền TI và ngắt nhận RI là các bit D1 và D0 của thanh
ghi SCON. Các bit này là cực kỳ quan trọng của thanh ghi SCON:
·
Khi 8051 kết thúc truyền một ký tự 8 bit thì nó bật TI để báo rằng nó sẵn sàng
truyền một byte khác. Bit TI được bật lên trước bit Stop.
·
Khi 8051 nhận được dữ liệu nối tiếp qua chân RxD và nó tách các bit Start và
Stop để lấy ra 8 bit dữ liệu để đặt vào SBUF, sau khi hồn tất nó bật cờ RI để báo rằng
nó đã nhận xong 1 byte và cần phải lấy đi kẻo dữ liệu bị mất. Cờ RIđược bật khi đang
tách bit Stop.
c. Thiết lập tốc độ baud trong 8051
Một khi các chế độ cổng nối tiếp đã được cấu hình, việc tiếp theo là chương
trình cần phải cấu hình tốc độ baud cho các cổng nối tiếp. Điều này chỉ áp dụng cho
chế độ Serial Port 1 và 3. Còn ở chế độ 0 và 2, tốc độ truyền được xác định dựa trên
tần số dao động của thạch anh:
Ø Trong chế độ 0: tốc độ truyền luôn luôn là tần số dao động chia cho 12. Điều này
có nghĩa là nếu bạn đang sử dụng thạch anh tần số 11.059Mhz, tốc độ truyền của chế

8


độ0 sẽ luôn luôn là 921.583 baud. Trong chế độ 2: tốc độ truyền luôn luôn là tần số
dao động chia cho 64, do đó, với thạch anh tần số 11.059Mhz sẽ mang lại một tốc độ
truyền 172.797 baud.
Ø Trong chế độ 1 và 3: tốc độ truyền được xác định bằng cách cài đặt Timer1.
Phương pháp phổ biến nhất là cài đặt Timer1 ở chế độ tự động nạp lại 8-bit (chế độ 2)

và thiết lập một giá trị nạp lại (cho TH1) để tạo ra một tốc độ truyền.
3. Thiết kế phần cứng và giao diện điều khiển.
3.1. Sơ đồ khối hệ thống.
Vi
điều
Khiển

Cơng
Suất

Động

Servo

Nguồn cấp DC
Hình 8. Sơ đồ khối hệ thống.
a. Máy tính: Máy vi tính có nhiệm vụ giao tiếp với vi điều khiển qua chuẩn truyền
thông RS-232. Giao diện điều khiển được viết trên Visual Basic, có nhiệm vụ tương
tác với người sử dụng để truyền các thông số điều khiển đến động cơ.
b. Vi điều khiển: Có nhiệm vụ giao tiếp với máy tính để truyền, nhận dữ liệu điều
khiển, từ đó đưa ra các q trình hoạt động cho động cơ thơng qua khối cơng suất.
c. Khối cơng suất: Có nhiệm vụ cung cấp năng lượng đủ lớn cho động cơ làm việc
theo các chế độ điều khiển được truyền từ máy tính.
d. Động cơ servo: Sử dụng động cơ bước, động cơ sẽ quay thuận/ngược, tăng/giảm
tốc độ theo chương trình điều khiển.
e. Khối nguồn: Cung cấp nguồn điện 5Vdc cho các khối làm việc.
3.2. Sơ đồ mạch điện.
Để ghép nối máy tính với vi điều khiển ta sử dụng IC MAX 232 ghép với cổng
Com DB9 để chyển mức tín hiệu từ chuẩn RS232 sang họ Logic TTL.
Vi điều khiển sẽ giao tiếp với máy tính để thao tác các q trình được truyền tải

xuống từ máy tính. Để đảm bảo cơng suất đủ lớn cho động cơ làm việc, trong mạch
sử dụng một IC đệm ULN2003

9


C2
1

11
12
TX 10
RX 9

10uF

U2

3

P1

C1+

C1-

T1IN
R1OUT
T2IN
R2OUT


T1OUT
R1IN
T2OUT
R2IN
VS+
VS-

MAX232
C2+
4

14
13
7
8

C1

2
6
10uF

DCD
DSR
RXD
RTS
TXD
CTS
DTR

RI

C4

C2-

C3

1
6
2
7
3
8
4
9

10uF

ERROR

5

COMPIM

10uF

40

Hình 9. Sơ đồ mạch ghép nối máy tính với 8051 thơng qua IC MAX232.


18

9

29
30
31

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

XTAL2

RST

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


PSEN
ALE
EA

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

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

39
38
37
36
35
34
33

32

U1

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

1
2
3
4
5
6
7
RX
TX


1B
2B
3B
4B
5B
6B
7B

COM
1C
2C
3C
4C
5C
6C
7C

9
16
15
14
13
12
11
10

ULN2003A

20


1
2
3
4
5
6
7
8

XTAL1

+88.8

19

Hình 10. Sơ đồ mạch điều khiển và mạch công suất ghép nối động cơ bước.
3.3. Giao diện điều khiển.
a. Giao diện khởi động.
Tại giao diện khởi động, người sử dụng có thể thốt chương trình bằng tùy chọn
EXIT hoặc chuyển sang giao diện điều khiển chính bằng tùy chọn NEXT.

10


b. Giao diện làm việc.

Trong giao diện làm việc chính, trước tiên cần kết nối với máy tính bằng cách
chọn cổng Com và Connect.


11


Tiếp đó ta có thể cài đặt các thơng số cho động cơ làm việc như: Chọn chế độ
quay thuận/ngược, tùy chỉnh tốc độ, khởi động động cơ, dừng động cơ. Hoặc có thể
quay trở lại giao diện khở động hoặc thốt tồn bộ chương trình.
3.4. Chương trình cho giao diện điều khiển sử dụng VB.
Dim t As String
Dim tg As String

Private Sub CmdBack_Click()
Form1.Show
Unload Me
End Sub

Private Sub CmdC_Click()
If MSComm1.PortOpen = False Then
With MSComm1
.CommPort = Val(Trim$(Cmb.Text))
.Settings = "9600,N,8,1"
.InBufferSize = 1024
.InputLen = 0
.RThreshold = 1
.SThreshold = 1
.OutBufferSize = 512
.InputMode = comInputModeText
End With
MSComm1.PortOpen = True
MsgBox "Da Ket Noi Cong Com", vbOKOnly + vbExclamation
CmdC.Enabled = False

CmdD.Enabled = True
CmdRun.Enabled = True
OptThuan.Enabled = True
OptNghich.Enabled = True
OptTocdo.Enabled = True

12


End If
End Sub

Private Sub CmdD_Click()
If CmdStop.Enabled = True Then
MsgBox " Nhan Stop truoc khi ngat ket noi", vbOKCancel
ElseIf MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
MsgBox "Da ngat ket noi voi cong com", vbExclamation + vbOKOnly, " "
Timer1.Enabled = False
CmdC.Enabled = True
CmdD.Enabled = False
CmdRun.Enabled = False
OptThuan.Enabled = False
OptNghich.Enabled = False
OptTocdo.Enabled = False
End If
End Sub

Private Sub CmdExit_Click()
End

End Sub

Private Sub CmdRun_Click()
HSC_TocDo.Enabled = True
If (OptThuan.Value) Or (OptNghich.Value) Then
If OptThuan.Value = True Then
tg = "T"
ElseIf OptNghich.Value = True Then
tg = "N"
End If
If OptTocdo.Value = True Then

13


End If
' Timer1.Enabled = True
CmdRun.Enabled = False
CmdStop.Enabled = True
Else
MsgBox " Chua Setting", vbOKOnly, "Thong Bao"
End If
End Sub

Private Sub CmdStop_Click()
MSComm1.Output = "S"
CmdRun.Enabled = True
CmdStop.Enabled = False
Timer1.Enabled = False
HSC_TocDo.Enabled = False

End Sub

Private Sub Form_Load()
Cmb.Text = "4"
Timer1.Enabled = False
CmdD.Enabled = False
CmdRun.Enabled = False
OptThuan.Enabled = False
OptNghich.Enabled = False
OptTocdo.Enabled = False
HSC_TocDo.Enabled = False

End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
End Sub

14


Private Sub HSC_TocDo_Change()
If OptTocdo.Value = True Then
txtTocdo.Text = HSC_TocDo.Value
If OptThuan.Value = True Then
tg = "T"
ElseIf OptNghich.Value = True Then
tg = "N"
End If
t = tg & txtTocdo.Text
MSComm1.Output = t

End If
End Sub

Private Sub Timer1_Timer()
Dim InputText As String
If (Me.MSComm1.CommEvent = comEvReceive) Then
InputText = MSComm1.Input
End If
If OptThuan.Value = True Then
tg = "T"
ElseIf OptNghich.Value = True Then
tg = "N"
End If
txtTocdo.Text = HSC_TocDo.Value
t = tg & txtTocdo.Text
MSComm1.Output = t
End Sub
3.5. Chương trình điều khiển cho 8051.
#include <REGX52.H>
#include <stdio.H>

15


#include <string.H>
unsigned char temp=0;
unsigned char enable=0;
unsigned long i;
sbit w1=P2^0;
sbit w2=P2^1;

sbit w3=P2^2;
sbit w4=P2^3;
void delay(unsigned int d)
{
while(d>0)d--;

}
void quaythuan(void)
{
w1=1;w2=w3=w4=0;delay(i);
w2=1;w1=w3=w4=0;delay(i);
w3=1;w2=w1=w4=0;delay(i);
w4=1;w2=w3=w1=0;delay(i);
}
void quaynguoc(void)
{
w4=1;w2=w3=w1=0;delay(i);
w3=1;w1=w2=w4=0;delay(i);
w2=1;w3=w1=w4=0;delay(i);
w1=1;w2=w3=w4=0;delay(i);
}
void stop(void)
{
w1=w2=w3=w4=0;
}
void main(void)

//Chuong trình chính

16



{
TMOD=0x20;
TH1=0xFD;

//timer1 che do 2
// toc do 9600

SCON=0x50;
TR1=1;

//che do 1 cho phep nhan
//khoi dong Timer1

//IE=0x90;

//cho phép ngat truyen thong
IE=0x90;

//cho phép ngat truyen thong + timer 1

P2=0x00;
while(1)
{
if(enable==1){quaythuan();};
if(enable==2){quaynguoc();};
if(enable==0){stop();};
};
}

void nhandulieu(void) interrupt 4 // khai bao ngat truyen thong
{
if(RI==1)

// kiem tra xem co phai ngat nhan hay khong

{
temp=SBUF;

// lây du lieu luu vao bien temp

if(temp=='T')
{
enable=1;
}
else if(temp=='N')
{
enable=2;
}
else if(temp=='S')
{
enable=0;

17


}

else if(temp=='0') enable=0;


else if(temp=='1')
{i=7000;}
else if(temp=='2')
{i=6000;}
else if(temp=='3')
{i=5000;}
else if(temp=='4')
{i=4000;}
else if(temp=='5')
{i=3000;}
else if(temp=='6')
{i=2000;}
else if(temp=='7')
{i=1000;}
else if(temp=='8')
{i=900;}
else if(temp=='9')
{i=700;}

else {}
RI=0; //xóa co nhan
}
}

18


3.5. Kết quả mô phỏng truyền nhận dữ liệu.

4. Kết luận.

Sau thời gian nghiên cứu kết quả đạt được như sau:
- Tìm hiểu quá trình truyền nhận dữ liệu nối tiếp khơng đồng bộ UART giữa máy tính
và vi điều khiển.
- Nghiên cứu xây dựng giao diện điều khiển ghép nối máy tính sử dụng phần mềm
VisualBasic.
- Nghiên cứu lý thuyết điều khiển động cơ bước.
- Tiến hành mô phỏng kiểm chứng lý thuyết đưa ra.
Bằng kết quả mô phỏng trên phần mềm Proteus, truyền nhận dữ liệu, điều khiển
động cơ hoạt động theo đúng yêu cầu thiết kế.
- Hoàn thiện sản phẩm thực tế, vận hành hoạt động ổn định, đầy đủ các yêu cầu.

19



×