Bài tập lớn Robot và CNC: Điều khiển động cơ một chiều

A. Giới thiệu chung về động cơ điện một chiều

1. Các loại động cơ điện một chiều

- Động cơ một chiều kích từ độc lập

- Động cơ một chiều kích từ nối tiếp

- Động cơ một chiều kích từ song song

- Động cơ một chiều khung chổi than

Trong phạm vi bài tập lớn, ta chỉ nghiên cứu động cơ điện một chiều kích từ độc lập.

 

doc31 trang | Chuyên mục: Cơ Sở Tự Động | Chia sẻ: yen2110 | Lượt xem: 405 | Lượt tải: 0download
Tóm tắt nội dung Bài tập lớn Robot và CNC: Điều khiển động cơ một chiều, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
o])
Kết quả được : 
Chọn 
Sơ đồ trên MATLAB – Simulink :
Kết quả mô phỏng :
Đáp ứng điện áp đưa đến chỉnh lưu uA_ref (V), điện áp phần ứng
và giá trị quan sát (V), dòng điện phần ứng và giá trị quan sát (A),
tốc độ n (RPM) khi lắp thêm khâu PI điều chỉnh dòng
Từ kết quả mô phỏng ở trên, ta thấy kết quả mô phỏng rất tốt , hàm quá độ hệ thống (tốc độ) có thời gian xác lập ngắn và hầu như không có quá điều chỉnh và sai lệch tĩnh, hệ thống ít chịu ảnh hưởng của nhiễu.
Mặc dù phương pháp thiết kế bộ điều khiển đối tượng trên không gian trạng thái rất tốt nhưng trong bài tập lớn này, ta không xác định được một số thông số của động cơ do đó ta không thể tìm được hàm truyền cho đối tượng vì vậy mà không xác định được các ma trận trạng thái. Do không xác định được các ma trận trạng thái nên ta không thể thiết kế bộ điều khiển theo phương án đã trình bày ở trên.
Do không xác định được đầy đủ thông số của động cơ nên việc thiết kế bộ điều khiển của ta sẽ mang tính “mò mẫm”, vì thế bộ điều khiển mà ta sử dụng sẽ là PID. Ta sẽ tiến hành thử một số bộ điều khiển cho động cơ và đo tốc độ động cơ; sau khi thử, ta sẽ tìm được bộ điều khiển thích hợp cho động cơ.
C. Xây dựng mạch phần cứng
 1. Mạch cầu để điều khiển động cơ có thể quay hai chiều
D. Xây dựng phần mềm
Lập trình cho vi điều khiển
Mạch phần cứng của ta sử dụng hai vi điều khiển, vì thế ta phải lập trình cho từng vi điều khiển. Ta sẽ sử dụng ngôn ngữ Asembly để lập trình, công cụ để lập trình là chương trình Reads51 của hãng Rigel.
Vi điều khiển 1 : đo tốc độ động cơ và hiển thị dưới dạng LED
#include 
 Dec3 equ 51h
 Dec2 equ 52h
 Dec1 equ 53h
 Dec0 equ 54h
 Led3 equ 60h
 Led2 equ 61h
 Led1 equ 62h
 Led0 equ 63h
 Led0sl bit p3.0
 Led1sl bit p3.1
 Led2sl bit p3.6
 Led3sl bit p3.7 
;========================================================
org 0000h ;Reset
ljmp Main
org 001Bh ;In T1 
ljmp ISR_T1
;========================================================
; MAIN PROGRAM
;========================================================
 org 0100h
Main:
 mov Dec3,#0
 mov Dec2,#0
 mov psw,#00h
 mov TMOD,#15h
 mov TL0,#00h
 mov TH0,#00h
 mov TL1,#17h
 mov TH1,#0FCh
 setb p3.4
 setb EA
 setb ET0
 setb ET1
 setb TR0
 setb TR1
here: 
 nop
 sjmp here
;========================================================
ISR_T1:
 clr TR1
 clr TR0
 clr TF1
 mov r0,TL0
 mov TL0,#00H
 mov TH0,#00H
 mov TL1,#09H
 mov TH1,#0FBH 
 mov p2,r0
 lcall HEX2BCD
 mov r1,#4fh
Led:
 lcall Display
 djnz r1,led
 setb p3.4
 setb TR0
 setb TR1
 reti
;========================================================
Display:
 mov a,Dec3
 lcall Look_up_Table
 mov Led3,a
 clr Led0sl
 clr Led1sl
 clr Led2sl
 setb Led3sl
 mov p1,Led3
 lcall delay1
 mov a,Dec2
 lcall Look_up_Table
 mov Led2,a
 clr Led0sl
 clr Led1sl
 clr Led3sl
 setb Led2sl
 mov p1,Led2
 lcall delay1 
 mov a,Dec1
 lcall Look_up_Table
 mov Led1,a
 clr Led0sl
 clr Led3sl
 clr Led2sl
 setb Led1sl
 mov p1,Led1
 lcall delay1
 mov a,Dec0
 lcall Look_up_Table
 mov Led0,a
 clr Led3sl
 clr Led1sl
 clr Led2sl
 setb Led0sl
 mov p1,Led0
 lcall delay1 
 ret
;========================================================
Look_up_Table:
 mov dptr,#Table
movc a,@a+dptr
 ret
;========================================================
DELAY1:
 push 07
 push 07
 mov r7,#16
here3:
 mov r5,#20
 lcall DELAY
 djnz r7,here3
 pop 05
 pop 07
 ret
;========================================================
DELAY:
 push 06
 here2:
 mov r6,#5
 here1:
 djnz r6,here1
 djnz r5,here2
 pop 06
 ret
;========================================================
Table: 
 db 0C0h , 0F9h , 0A4h , 0B0h , 99h , 92h , 82h , 0F8h , 80h , 90h
; 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
;========================================================
;========================================================
;Chuong trinh chuyen doi ma HEX sang BCD
;========================================================
Hex2BCD:
 mov a,r0
 mov b,#64h
 div ab
 mov Dec2,a
 mov a,b
 mov b,#0Ah
 div ab
 mov Dec1,a
mov Dec0,b
ret
 end
Vi điều khiển 2 : Nhận dữ liệu từ máy tính để đưa xung PWM đến mạch động cơ một chiều
#include 
 T_on equ 50h
 T_off equ 51h
 PWM bit p3.7
 kenh_A bit p3.0
 kenh_B bit p3.6 
 flg bit 00h
 out_DC bit 01h
 stack equ 2Fh
;========================================================
 org 00h
 nop
 ljmp Main
 org 0Bh
 nop
 ljmp Intm0
 org 03h
 nop
 ljmp IntEx0
;========================================================
; MAIN PROGRAM
;========================================================
 org 100h
Main:
 clr out_DC
 clr flg 
 mov psw,#00h
 mov p1,#0FFh ;cong p1 doc gia tri do
 mov p2,#0FFh ;cong p2 doc gia tri dat
 mov a,#240 ;chu ki
 mov T_on,#0 ;ban dau toc do bang 0
 subb a,T_on
 mov T_off,a
 mov a,#0FFh
 subb a,T_on
 mov T_on,a
 mov a,#0FFh
 subb a,T_off
 mov T_off,a
 mov TMOD,#11h
 mov TL0,T_on
 mov TH0,#0FFh
 clr kenh_B
 setb kenh_A
 setb p3.2
 setb EA
 setb ET0
 setb TR0
 setb ex0
 clr PWM
here:
 sjmp here
;========================================================
Intm0:
 clr TR0
dong:
 jnb out_DC,cat
 clr out_DC 
 mov TL0,T_on
 mov TH0,#0FFh
 clr PWM
 sjmp next
cat:
 setb out_DC 
 mov TL0,T_off 
 mov TH0,#0FFh
 setb PWM
 sjmp next
next:
 clr TF0
 setb TR0
 reti
;========================================================
IntEx0:
 clr TR0
 clr ex0
 mov p2,#0FFh
 setb p3.3
 nop
 nop
 nop
 jb p3.3,nguoc
thuan:
 setb kenh_A
 clr kenh_B
 sjmp next2
nguoc:
 setb kenh_B
 clr kenh_A
next2: 
 mov a,p2
 mov T_on,a
 mov a,#240
 subb a,T_on
 mov T_off,a
 mov a,#256
 subb a,T_off
 mov T_off,a
 mov a,#256
 subb a,T_on
 mov T_on,a
 clr TF0
 setb TR0
 setb ex0
 reti
end
Thiết kế giao diện điều khiển
Ta sẽ thiết kế giao diện điều khiển bằng ngôn ngữ Visual Basic. Ngôn ngữ có ưu điểm đơn giản, dễ sử dụng nhưng nguyên bản Visual Basic của hãng Microsoft không có thư viện hỗ trợ cổng song song. Để có thể giao tiếp với máy tính thông qua cổng song song cần có một thư viện liên kết động (DLL) để hỗ trợ, thư viện này do người dùng xây dựng và ta có thể download rất nhiều thư viện kiểu như vậy trên mạng. Ta sử dụng thư viện có tên “dlportio.DLL” , thư viện có ưu điểm dễ sử dụng và đặc biệt hỗ trợ cổng trong các hệ điều hành thông dụng như win98, winXP, Linux, 
Giao diện ban đầu :
Giao diện ban đầu sẽ xuất hiện trong 2s, sau đó giao diện chính sẽ xuất hiện.
Giao diện chính:
Muốn thay đổi tốc độ đặt động cơ, ta kéo thanh trượt. Khi nào muốn động cơ chạy, nhấn “Chạy”, muốn động cơ dừng, nhấn “Dừng”. Muốn quay thuận nhấn “Quay thuận”, muốn quay ngược nhấn “Quay ngược”.
Các bước thực hiện:
Tạo hai form có tên frmTitle và frmMain
frmTitle
Timer1 có độ trễ (Interval) bằng 2000 (2s).
frm Main
Timer1 có độ trễ 2000 (2s) ; Timer2 có độ trễ 1000 (1s).
Thêm vào dự án một Modules được khai báo như sau :
Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Function DlPortReadPortUshort Lib "dlportio.dll" (ByVal Port As Long) As Integer
Public Declare Function DlPortReadPortUlong Lib "dlportio.dll" (ByVal Port As Long) As Long
Public Declare Sub DlPortReadPortBufferUchar Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortReadPortBufferUshort Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortReadPortBufferUlong Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)
Public Declare Sub DlPortWritePortUshort Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Integer)
Public Declare Sub DlPortWritePortUlong Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Long)
Public Declare Sub DlPortWritePortBufferUchar Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortWritePortBufferUshort Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortWritePortBufferUlong Lib "dlportio.dll" (ByVal Port As Long, Buffer As Any, ByVal Count As Long)
Khai báo hàm :
 + Khai báo trong frmTitle :
Option Explicit
Private Sub Form_Load()
 Timer1.Interval = 2000
 Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
 Timer1.Enabled = False
 Unload frmTitle
 frmMain.Show
End Sub
+ Khai báo trong frmMain :
Option Explicit
Dim T_off As Long
Dim thuan_nguoc As Boolean
Function PWM(n As Double)
Dim n2, n3, n4, n5 As Double
Dim T As Double
n2 = n * n
n3 = n2 * n
n4 = n3 * n
n5 = n4 * n
T = 0.132 * Exp(-6 * Log(10)) * n5 - 0.25 * Exp(-4 * Log(10)) * n4 + 0.19 * Exp(-2 * Log(10)) * n3 - 0.06 * n2 + 1.82 * n + 0.27
PWM = T
End Function
Private Sub cmdForward_Click()
thuan_nguoc = True
DlPortWritePortUchar 890, 0
Timer2.Enabled = True
DlPortWritePortUchar 890, 0
DlPortWritePortUchar 890, 202
Timer1.Enabled = True
TextDirection.Text = "Thuận"
End Sub
Private Sub cmdReverse_Click()
thuan_nguoc = False
DlPortWritePortUchar 890, 204
Timer1.Enabled = True
TextDirection.Text = "Ngược"
End Sub
Private Sub cmdRun_Click()
Dim Value As Double
Value = Val(txtSpeed)
T_off = PWM(Value)
DlPortWritePortUchar 888, T_off
DlPortWritePortUchar 890, 202
Timer1.Enabled = True
TextDirection.Text = "Thuận"
txtSpeed1.Text = hsbSpeed.Value
End Sub
Private Sub cmdStop_Click()
DlPortWritePortUchar 888, 0
DlPortWritePortUchar 890, 202
Timer1.Enabled = True
txtSpeed1.Text = 0
End Sub
Private Sub hsbSpeed_Change()
txtSpeed.Text = hsbSpeed.Value
End Sub
Private Sub hsbSpeed_Scroll()
txtSpeed.Text = hsbSpeed.Value
End Sub
Private Sub Timer1_Timer()
DlPortWritePortUchar 890, 212
Timer1.Enabled = False
End Sub
Private Sub Timer2_Timer()
Timer2.Enabled = False
End Sub
Private Sub cmdExit_Click()
End
End Sub

File đính kèm:

  • docbai_tap_lon_robot_va_cnc_dieu_khien_dong_co_mot_chieu.doc