Đồ án môn học I : điều khiển vị trí động cơ
Đồ án môn học: Điều khiển vị trí động cơ
1
Đồ án môn học I : điều khiển vị trí động cơ
Mục lục :
Trang
Lời nói đầu ………………………………………………………………………. 1
A/ SƠ LƯỢC VỀ VI ĐIỀU KIỂN P89V51Rx2…………………………………. 2
Khái quát các tính năng……………………………………………………. 2
Sơ đồ khối……………………………………………………………………3
Sơ đồ chân………………………………………………………………… 4
B/ CHƯƠNG TRÌNH THỰC HIỆN………………………………………………5
I/ Thiết kế phần cứng……………………………………………………… 5
Khối điều khiển ……………………………………………………… 5
+ Nguồn cho kit vxl……………………………………………… 6
+ Phần xử lý của kit……………………………………………… 6
+ Phần hiển thị…………………………………………………… 7
+ Phần giao tiếp…………………………………………………… 8
Sơ đồ toàn kít…………………………………………………………10
Khối công suất………………………………………………………….10
- Mạch cầu H……………………………………………………… 10
- Nguồn 24Vdc…………………………………………………… 11
II/ Chương trình thực hiện………………………………………………… 11
Thành phần , sơ đồ , giải thuật tổng quát……………………………. 11
Chi tiết chương trình …………………………………………………12
-Chương trình trên visual basic……………………………………. 12
+ Giao diện VB………………………………………………… 12
+ Code chương trình trên VB………………………………… 13
+ PID số ……………………………………………………… 18
- Chương trình trên vi điều khiển………………………………… 19
A/ SƠ LƯỢC VI ĐIỀU KIỂN P89V51Rx2:
1 1. Khái quát các tính năng:
2
+ Khái quát:
1 P89V51RD2 là vi điều khiển 80C51 có 64kB Flash và 1024bytes<1kB> bộ nhớ dữ
liệu RAM.
Tính năng đặc biệt của P89V61RD2 là ở chế độ hoạt động mode x2. Người thiết kế chọn
chạy ứng dụng của mình ở chế độ này để nâng đôi tốc độ khi hoạt động ở cùng tần số
dao động<một chu kì máy=6 chu kì xung nhịp>
2 Bộ nhớ chương trình Flash cho phép lập trình ISP hoặc/và song song. Chế độ lập
trình song song được đưa ra để thích ứng với tốc độ cao, giảm thời gian và giá thành.
3 IAP/ISP.
+Các tính năng:
CPU 80C51.
Hoạt động ở 5VDC trong tầm tần số dao động đến 40MHz.
64kB ISP.
SPI
5 PCA với chức năng PWM/capture/compare 16bits.
4 cổng xuất nhập.
3 Timers/Couters 16bits.
Watchdog Timer có thể lập trình được.
8 nguồn ngắt.
2 thanh ghi DPTR.
Tương thích mức logic TTL và CMOS.
Phát hiện nguồn yếu <Brownout Detect>
Chế độ Low-power, Power down, Idle.
4
Đồ án môn học I : điều khiển vị trí động cơ
Sơ đồ khối của MCU P89V51RD2:
PSEN: Cho phép dùng bộ nhớ chương trình ngoài. Khi MCU sử dụng bộ nhớ chương trình
trong chip, PSEN không tích cực. Khi sử dụng bộ nhớ chương trình ngoài, PSEN
thường ở mức tích cực 2 lần trong mỗi chu kì máy. Sự chuyển mức cao sang thấp trên
↓PSEN cưỡng bức từ bên ngoài khi ngõ vào RST đang ở mức cao trong hơn 10 chu kì
máy sẽ đưa MCU vào chế độ lập trình host từ bên ngoài.
2 RST: Khi nguồn dao động đang hoạt động, mức cao trên chân RST trong ít nhất 2 chu
kì máy sẽ Reset lại hệ thống. Nếu chân PSEN chuyển mức trong khi RST vẫn còn ở
mức cao, MCU sẽ vào chế độ lập trình host từ bên ngoài, nếu không, sẽ hoạt động
bình thường. ↓
EA: Cho phép sử dụng bộ nhớ chương trình ngoài.
1 o EA=’0’ :Bộ nhớ ngoài.
2 o EA=’1’:Bộ nhớ trong chip.
ALE/PROG: Cho phép khóa địa chỉ<Như 8051 cổ điển> ngoài ra, chân này còn được dùng
để đưa vào chế độ lập trình FLASH
Sơ đồ chân của IC:
B/ PHẦN CHƯƠNG TRÌNH THỰC
HIỆN
I/ THIẾT KẾ PHẦN CỨNG :
Phần cứng gồm hai khối chính :
+ Khối điều kiển : kít điều kiển
+ Khối công suất : Nguồn , cầu H , và
động cơ
6
U 1
9
1 8
1 9
2 0
2 9
3 0
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P S E N
A L E / P R O G
E A / V P P
V C C
P 1 . 0
P 1 . 1
P 1 . 2
P 1 . 3
P 1 . 4
P 1 . 5
P 1 . 6
P 1 . 7
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2
P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P 3 . 0 / R X D
P 3 . 1 / T X D
Đồ án môn học I : điều khiển vị trí động cơ
J 1 2
C O N 2
1
2
0 . 1 u F
0
7 8 0 5
1 3
2
I N O U T
G N D
5 V
1
2
4 7 0
2 2 0 0 u F
D 1 8
L E D
- +
D 1 7
B R I D G E
1
4
3
2
+ Khối xử lý của kit:
p 0 . 0
p 2 . 4
Y 1
7
8
p 2 . 2
5 V
R 1
R
C 2
1 n
1
2
p 1 . 1
p 3 . 4
0
p 0 . 0
S W 1
p 2 . 4 p 3 . 7
J 1 5
C O N 8
1
2
3
4
5
6
7
8
J 4
C O N 8
1
2
6
7
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
P 0 . 1 / A D 1
P 0 . 2 / A D 2
P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
p 0 . 3
p 3 . 7
0
5 V
p 3 . 5
p 1 . 6
p 3 . 4
J 2
C O N 8
1
2
3
4
5
6
7
8
5 V
p 1 . 3
p 3 . 2
p 0 . 5
R 1 3
R E S I S T O R S I P 9
p 1 . 4
p 3 . 0
J 1 6
C O N 8 1
2
3
4
5
6
7
8
p 3 . 5
5 V
p 1 . 7
p 0 . 1
5 V
p 0 . 1
p 1 . 6
p 2 . 1
p 0 . 5
p 3 . 0
p 3 . 3
p 0 . 3
p 1 . 0
J 1
C O N 8
1
2
3
4
4
5
7
8
9
1 0
B
E
D
T
C
D P
A
L
F
G
F
O 2
O 7
5 V
O 5
G G
A
R 3 2 1 K
Q 3
C 1 8 1 5
C
B
F
O 7
B I / R B O
R B I
L T
A
B
C
D
E
F
G
5 VG N D
O 1
R 2 9 3 3 0
D
C
R 2 7 3 3 0
E
5 V
O 0
O 4
8
U 9
L E D 7 . 1
6
1
2
3
4
5
7
O 3
F
C
G
5 V
0
E
0
A
O 5
R 3 5 1 K
B
O 0
E
8
U 1 3
L E D 7 . 4
6
1
2
3
4
5
7
8
9
1 0
B
E
D
5
6
7
8
9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
V C CG N D
G
D I R
A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
B 1
B 2
B 3
B 4
B 5
B 6
C 1 8 1 5
F
- Khối gồm IC nâng 74LS245 , có tác dụng nâng dòng cho port điều kiển.
- 4 led 7 đoạn , 4 BJT C1815 có tác đụng chọn led – sử đụng cho quét led
- IC giải mã 7447 , giải mã BCD sang các chân của led để hiển thị số.
+LCD:
- Khối gồm có : giắt cắm cái 16 chân cho
LCD
- Giắt 8 chân dành cho bus dữ liệu
- Giắt 3 chân dành cho 3 chân điều kiển
- Điện trở r28 để hạn dòng cho led trong
LCD
- Biến R25 để chỉnh độ tương phản cho LCD
- Mạch hiển thị led:
9
0
R 2 6
J 9
1
2
3
4
5
6
7
8
R 2 5
0
5 V
R 1 5
p 1 . 5
5 V
J 5
C O N 8
1
2
3
4
5
6
7
8
p 1 . 4
D 1
5 V
0
0
U 6
7 4 L S 2 4 5
2 01 0
1 9
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
0
p 1 . 3
R 2
p 1 . 7
0
p 1 . 2
U 7
7 4 L S 2 4 5
2 01 0
1 9
1
2
3
4
5
6
7
8
9
1 8
1 7
1 6
5
6
7
8
R 2 2 D 1 6
J 1 3
C O N 8
1
2
3
4
5
6
7
8
p 1 . 6
D 8
0
p 1 . 1
5 V
5 V
0
Đồ án môn học I : điều khiển vị trí động cơ
- Để xuất led , gồm 2 IC nâng dòng 74LS245, các giắc cắm đực đưa ra ngoài.
- Một dãy led để hiển thị.
+ Khối giao tiếp:
- RS-232:
0
C 4
P 1
C 1 -
C 2 +
C 2 -
V C CG N D
V +
V -
R 1 O U T
R 2 O U T
T 1 I N
T 2 I N
R 1 I N
R 2 I N
T 1 O U T
T 2 O U T
C 7
p 3 . 0
0
p 3 . 1
5 V
C 5
o Mạch có cổng DB9 , và IC max232
o IC max232 và các tụ làm nên mạch chuyển mức áp TTL sang 232
o Cấp nguồn cho max232 là 5v, mạch trong IC và các tụ sẽ tạo ra nguồn +-
10V
- Ma trận phiếm:
S W 2 6
P 0 . 0
P 0 . 3
S W 3 5
P 0 . 6
Đồ án môn học I : điều khiển vị trí động cơ
p 0 . 7
C 4
F
O 0
p 1 . 3
R 2 8 3 3 0
0
p 2 . 0
p 2 . 3
S W 3 9
0
A
O 4
D
O 6
p 1 . 0
S W 2 7
5 V
F
P 0 . 7
C 9
p 2 . 6
D 8
P 0 . 6
p 0 . 2
J 9
1
2
3
O 1
p 3 . 0
p 1 . 7
Q 5
C 1 8 1 5
S W 3 8
P 0 . 0
C 7
5 V
p 1 . 1
C 1
1 n
1
2
F
J 5
C O N 8
1
2
3
4
5
6
7
8
p 1 . 3
p 0 . 5
p 2 . 2
p 1 . 7
0
A
p 0 . 1
U 6
7 4 L S 2 4 5
2 01 0
1 9
1
2
3
4
5
6
7
8
9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
V C CG N D
G
D I R
A 1
A 2
A 3
A 4
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P S E N
P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
R 3 5 1 K
0
E
O 5
5 V
P 0 . 4
p 2 . 2
5 V
5 V
0
G
J 4
C O N 8
1
2
3
4
5
6
7
8
8
U 1 3
L E D 7 . 4
6
p 2 . 3
p 1 . 6
D 1 8
L E D
8
U 9
L E D 7 . 1
6
1
2
3
4
5
7
8
9
1 0
B
E
D
T
C
D P
A
L
F
G
B
p 3 . 4
p 0 . 0
6
1
2
3
4
5
7
8
9
1 0
B
E
D
T
C
D P
A
L
F
G
J 2
C O N 8
1
2
3
4
5
6
7
8
8
0
C 8
R 3 4 1 K
F
5 V
p 2 . 5
p 1 . 1
0
5 V
R 2 2
D 9
U 1 1
7 4 L S 2 4 5
2 01 0
1 9
1
2
3
4
5
6
7
8
9
1 8
1 7
1 6
1 5
1 4
2
6
4
5
3
1 3
1 2
1 1
1 0
9
1 5
1 4
1 68
D 0
D 1
D 2
D 3
B I / R B O
R B I
L T
A
B
C
D
E
F
G
5 VG N D
R 1 3
R E S I S T O R S I P 9
O 5
p 0 . 3
J 1 1
C O N 8
1
2
3
4
5
6
7
8
0
p 3 . 1
O 6
p 1 . 0
p 1 . 3
C 1 0
5 V
O 4
p 0 . 6
D
p 1 . 2
R 3 2 1 K
R 2 7 3 3 0
- +
D 1 7
B R I D G E
1
4
A
P 0 . 2
U 1 5
1 3
2
I N O U T
G N D
0
G
O 3
D
C
p 3 . 5
S W 3 1
R 2 9 3 3 0
p 3 . 1
R 3 6
R
R 3 0 3 3 0
p 3 . 7
B
Y 1
Z T A
S W 2 9
0
5 V
p 1 . 4
S W 2 8
C 3
C
1 3
1 4
1 5
1 65 V
B
E
p 0 . 5
p 3 . 4
p 2 . 5
p 1 . 4
S W 4 4
C 6
S W 3 7
5 V
5 V
G
O 5
Q 4
C 1 8 1 5
0
5 V
p 2 . 1
U 7
7 4 L S 2 4 5
2 01 0
1 9
1
2
3
4
B 7
B 8
0
G
B
p 0 . 7
U 2
M A X 2 3 2 _ 1
1
3
4
5
1 61 5
2
6
1 2
9
1 1
1 0
1 3
8
1 4
7
C 1 +
C 1 -
C 2 +
C 2 -
V C CG N D
V +
V -
3
4
5
6
7
8
9
0
5 V
p 2 . 6
S W 3 2
Q 2
C 1 8 1 5
p 0 . 4
p 3 . 6
E
p 0 . 2
p 0 . 0
p 1 . 5
S W 1
Khối Công suất:
+ Mạch cầu h , Nguồn 24v
- Mạch cầu H:
R 6
1 k
M 1
D 1 3
1 2
U 1
1
2 4 V
2 4 V
R 5
1 k
D 1
R 1 4
5 6 0
R 3
1 k
0
0
D 2
M 4
0
J 2
C O N 3
1
2
3
R 1 3
D 1 4
12
2 2 0 0 u F
R 7
1 0 k
0
M 3
0
R 1 7
1 k
D 2
D 1 0 D 1
z e n e r 2 4 v
D 7
C 5
4 7 0 u F
R 1
2 7 0
0
+ Mạch có cầu diof để chỉnh lưu. Tụ hóa C4 để lọc phẳng thông thấp . Tụ C4 để lọc thông
cao , BJT công suất 2N3005.
+ diof gắn đưới zener để bù lại điện thế mất do BJT. Và R1 để duy trì đòng cho zener . Tụ
C5 để lọc .
II> CHƯƠNG TRÌNH THỰC HIỆN:
THÀNH PHẦN , SƠ ĐỒ , GIẢI THUẬT TỔNG QUÁT:
Thành phần :
+ Gồm có 2 phần chương trinh chinh:
• Chương trình trên máy tính , viết bằng Visual basic
• Chương trình trên vi xử lý , viết bằng hợp ngữ
Sơ đồ và giải thuật chính:
+ Chương trình Visual Basic:
o
+ Chương trình hợp ngữ :
14
GIAO ĐIỆN:
- Hiển thị
- Nhận lệnh
XỬ LÝ :
- Phần mềm
PID, có chỉnh
Cmdchay
H_vantoc txtvantoc Cmdclr_ecd
Cmd_dungvitri
Giao diên gồm có:
15
- Nhận mã lệnh
Từ máy tính
Timer 2 tạo
xung uart
Máy tính
Giao tiếp
máy tính
Điều xung
Đếm giá trị
encode
Timer1: quét gởi giá trị
encoder lên máy tính
Động cơ
Đồ án môn học I : điều khiển vị trí động cơ
- Nút kết nối vi điều khiển
- Khung điều khiển tiến lùi:
Nút tiến động cơ
Lùi động cơ
Đừng động cơ
TextBox nhập giá trị điều xung
Thanh trượt , tạo giá trị điều xung
- Khung điều khiển vị trí động cơ:
TextBox nhập vị trí chạy tới
Nút start quá trình.
Đồ án môn học I : điều khiển vị trí động cơ
Kết nối với máy tính:
Private Sub cmdketnoi_Click()
On Error Resume Next
gt.Settings = "28800,N,8,1" tốc độ 28,8 k
gt.CommPort = 1
gt.RThreshold = 1
gt.PortOpen = True
gt.InputLen = 1
cmddung.Enabled = True ‘Khi chưa kết nối các nút bấm
cmdtien.Enabled = True ‘chưa được kích hoạt , chống
cmdlui.Enabled = True ‘lỗi cho chương trình
cmdchay.Enabled = True
cmdclr_ecd.Enabled = True
cmd_dungvitri.Enabled = True
lab_trangthai.Caption = "da ket noi !" ‘hiển thị ở góc dưới , phải
End Sub
• Khởi tạo giá trị ban đầu
Private Sub Form_Load()
Timer1.Interval = 10 ‘ngắt mỗi lần là10ms
Timer1.Enabled = True ‘kích hoạt timer 1
Timer2.Interval = 10
Timer2.Enabled = False ‘cấm timer 2
P = 0.282 ‘Các thông số bộ PID
D = 1.125 ‘Các giá trị được tìm bằng
i = 0.0187 ‘PP Zeigler-Nichols
intvt = 0
thu_tu = 0
trang_thai = 0
End Sub
End Select
• Xử lý các nút bấm tiến , lùi , dừng:
Private Sub cmdtien_Click()
intvt = Val(txtvantoc)
trang_thai = 1
If intvt >= 256 Then ‘giá trị điều xung max
MsgBox ("gia tri phai nho hon 256")
Exit Sub
End If
Call chay(intvt)
End Sub
Private Sub cmdlui_Click()
intvt = Val(txtvantoc)
trang_thai = 2
If intvt >= 256 Then
MsgBox ("gia tri phai nho hon 256")
Exit Sub
End If
Call chay(-intvt)
End Sub
Private Sub cmddung_Click()
trang_thai = 0
gt.Output = Chr(3) ‘gởi kí tự có mã là 3
End Sub
18
Đồ án môn học I : điều khiển vị trí động cơ
• Sự kiện thanh trượt:
Private Sub H_vantoc_Change()
txtvantoc = H_vantoc.Value
intvt = Val(txtvantoc)
End If
19
Đồ án môn học I : điều khiển vị trí động cơ
• Xử lý sự kiện timer1, timer2:
Private Sub Timer1_Timer()
Dim D_tong As Double
Dim tong As Double
Dim i As Integer
D_tong = ht - ht_p
D_tt = D_tong ‘lấy vận tốc tức thời cho bộ PID
ht_p = ht
tong = 0
For i = 20 To 2 Step -1 ‘lấy tổng giá trị vận tốc trong 0.2s
d_p(i) = d_p(i - 1)
tong = tong + d_p(i)
Next
d_p(1) = D_tong
tong = tong + d_p(1)
D_tong = tong / 20 ‘ lấy giá trị trung bình , xử lý nhấp
D_tong = D_tong * 10 ‘ nháy
labvantoc = Format(D_tong, "0000.00") ‘Cho giá trị đứng yên trênGD
End Sub
Private Sub Timer2_Timer()
Static g As Integer
Dim e As Double
Dim v As Integer
dblvitridat = Val(txtvitri) * 400
e = ht – dblvitridat ‘Lấy sai số cho bộ PID
v = PID(e, e_p) ‘lấy vận tốc từ bộ PID
Call chay(v)
End If
u = (up + ui + ud)
If u > 255 Then u = 255 ‘ Khâu bão hòa
If u < -255 Then u = -255
PID = CInt(u)
If e = 0 Then PID = 0
End Function
PID số:
))((
1_ −
−++=
kk
S
D
TLk
I
S
kp
ee
T
T
e
T
T
eKV
Trong đó hệ số Ts là chu kỳ lấy mẫu
• Tìm thông số bằng cách :
- Cho hệ số khuếch đại K ( Ki,Kd = 0) đến khi hệ bắt đầu đao động ổn định quanh
vị trí cân bằng ( có kích nhẹ ) ta có : k=0.47, T=0.31s
MOV scon,#50h
SETB TR2
;
MOV CCAPM0,#01000010B
MOV CCAPM1,#01000010B
MOV CCAPM2,#01000010B
MOV CCAPM3,#01000010B
MOV CCAPM4,#01000010B
22
Đồ án môn học I : điều khiển vị trí động cơ
MOV cmod,#0
CLR nhap_vt
MOV ccap3h,#@h
MOV ccap4h,#@h
SETB cr ; cho phép chức năng PCA chạy
;
MOV tmod,#01h
MOV ien0,#10010011b
SETB it1
SETB it0
MOV ip0,#05h ;ưu tiên ngắt ngoài
MOV ip0h,#0
MOV van_toc,#100
MOV ecd,#1
SETB tr0
;
MOV ecd1,#0h
MOV ecd2,#0h
MOV ecd3,#128
SJMP $
LJMP thoat_nhan_dk
tiep1: CJNE A,#2,tiep2
LCALL chay_lui
LJMP thoat_nhan_dk
tiep2: CJNE A,#3,tiep3
LCALL dung_dc
LJMP thoat_nhan_dk
tiep3: CJNE A,#4,thoat_nhan_dk
LCALL clr_ecd
thoat_nhan_dk:
RET
chay_toi:
MOV A , van_toc
CPL A
MOV ccap3h,A
MOV ccap4h,#@h
RET
chay_lui:
MOV A , van_toc
CPL A
MOV ccap4h,A
MOV ccap3h,#@h
RET
dung_dc:
MOV ccap3h,#@h
MOV ccap4h,#@h
RET
nhap_vantoc:
24
Đồ án môn học I : điều khiển vị trí động cơ
hien_thi:
PUSH acc
MOV A,ECD
CJNE A,#0,O_N_1
MOV sbuf,#99
MOV R2,ecd1
MOV ecd1_p,R2
25