TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH
Khoa Điện-Điện tử
Ngành Điều khiển tự động
ỨNG DỤNG LÝ THUYẾT HIỆN ĐẠI
THIẾT KẾ
MODUL ĐIỀU KHIỂN ĐỘNG CƠ DC
-----¾?½-----
Sinh viên thực hiện:
Bùi Trung Hiếu
Mã số: 40200776
Lớp: DD02KSTN
IV.1. Định hướng chương trình:
Hình IV.1 Định hướng chương trình dạng TOP-DOWN design
IV.2. Phác thảo giải thuật
IV.2.1. Đọc Encoder:
Hình IV.2.1.1 Cấu hình các nguồn tạo dao động của P89LPC922
Hình IV.2.1.2 Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng
Counter
Hình IV.2.1.3 Cấu hình của WDT ở chức năng Timer
Hình IV.2.1.4 Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC
IV.2.2. Điều xung
Hình IV.2.2.1 Sơ đồ khối điều xung tham khảo
Hình IV.2.2.2 Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung
Hình IV.2.2.3 Timer 1 ở mode 6 với chức năng PWM
IV.2.3. Khâu điều khiển kinh điển PID:
IV.2.3.1
Khâu PID rời rạc:
Hình IV.2.3.1 Tìm các thông số cho PID nhờ Matlab
Hình IV.2.3.2 Sơ đồ giải thuật khảo sát đặc tính động cơ
Hình IV.2.3.3 Biểu diễn kết quả với T
s
=9ms
Hình IV.2.3.4 Xấp xỉ các kết quả khảo sát bằng một hàm truyền không đơn vị
IV.2.3.2 Thiết kế khâu điều khiển mờ PID rời rạc dùng MATLAB(Tìm bộ
thông số K
p
,K
i
,K
VII. Dự định:
VIII. Tài liệu tham khảo
VIII.1. Giáo trình.
VIII.2. Tài liệu tham khảo chính:
Từ khóa tra cứu tài liệu sử dụng.
IX. Các phiên bản cập nhật.
(I) Khái quát – Giới thiệu sơ lược về nội dung đề tài I Khái quát:
Việc áp dụng lý thuyết điều khiển kinh điển và hiện đại vào những mô hình thực
tế luôn gặp khó khăn về giải thuật phần mềm lẫn đáp ứng phần cứng của thiết bị.
Bằng cách sử dụng vi điều khiển P89LPC922 của Philips làm nhân điều khiển
trung tâm, Matlab là chương trình xử lý trung gian, phần mạch công suất sử dụng
Driver tích hợp <LMD18200>, hi vọng đề tài đem đến một cách nhìn nhận mới
về vấn đề áp dụng lý thuyết điều khiển vào thực tế.
Đề tài đã phân tích khá kĩ lưỡng các vấn đề như thiết kế và chọn bộ thông số của
khâu điều khiển kinh điển PID bằng thuật toán GA, cách chọn tần số điều xung,
xử lý ngắt trong lấy mẫu, thời gian thực hiện của các hàm, giới hạn phần cứng
đáp ứng của thiết bị, cách xây dựng mô hình tham chiếu chuẩn cho đối tượng,
khắc phục những sự cố về nhiễu tải hoặc/và nhiễu đo lên đối tượng.
Làm việc trên nhân điều khiển P89LPC922 của Philips nên tôi phân tích các sơ
đồ giải thuật và chương trình, cũng như thời gian thực để thực thi trên cơ sở tập
lệnh của họ MCU8051.
" Kiến thức cơ bản: Lý thuyết điều khiển kinh điển,lý thuyết điều khiển
hiện đại, điện tử cơ bản, điện tử công suất, cấu trúc vi điều khiển, giải thuật
và lập trình ngôn ngữ C.
ATX-nối 2 chân 14-15>
III.2: Chương trình phần mềm:
III.2.1 Keil For 8051(uV3—tools c51+a51).
III.2.2 Hyper terminal.
III.2.3 Matlab version 7.0.
III.2.4 Orcad version 9.2.
Hình III.1.1.: Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM.
Trang III.1
‘DC Motor Control Module’
Trang III.2 Hình III.1.2.: Mạch phát triển ứng dụng MCU P89LPC922.
Hình III.1.3.: Mạch đọc Encoder sử dụng MCU P89LPC922 <
dự định-đang thiết kế
>
(III) Phần cứng và phần mềm
(v) Khâu PID cần các thông số để điều khiển vòng kín, nhiệm vụ phải tìm
được bộ 3 thông số K
P
, K
I
, K
D
, sử dụng thuật GA kết hợp với ‘lời
khuyên của chuyên gia’.
Hình IV.2 Định hướng chương trình dạng TOP-DOWN design
Trang IV.1
DC Motor Control Module
IV. Giải quyết vấn đề:
IV.1. Định hướng chương trình:
IV.2. Phác thảo các giải thuật:
IV.2.1. Đọc Encoder:
Hình IV.2.1.1 Cấu hình các nguồn tạo dao động của P89LPC922
Hình IV.2.1.2 Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng Counter
Hình IV.2.1.3 Cấu hình của WDT ở chức năng Timer
Hình IV.2.1.4
Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC
Muốn điều khiển động cơ bằng vòng kín, có hồi tiếp, trong đề tài này sử dụng encoder
quang để phản hồi vận tốc <sử dụng động cơ có encoder 100xung/vòng>. Về cơ bản, để có
được giá trị vận tốc này, ta có thể:
(i) Tính số cạnh xuống trong thời gian T
s
(sampling time) để suy ra vận tốc trung
bình của động cơ.(pulse/T
gian này được lập trình để có thể thay
đổi tùy mục đích sử dụng.
ii. Sử dụng Timer 0 ở mode 1 để làm
counter đếm số xung cạnh ở encoder.
Không tính đến trường hợp Counter
tràn do vượt quá 65535xung/T
s
. <được
khống chế trong đề tài bằng phần
mềm> Trang IV.2
(IV.2.1)Phác thảo giải thuật – Đọc Encoder Sơ qua về phần cứng của P89LPC922 phục vụ chức năng đếm xung: Hình IV.2.1.1. Cấu hình các nguồn tạo dao động của P89LPC922
Muốn điều khiển động cơ
i. Đề tài sử dụng nguồn xung nhịp là thạch anh 11.0592MHz. (High freq) <Khi
khai báo
Flash User Configuration Byte 1 (UCFG1)
chọn UCFG1.0-UCFG1.1-
UCFG1.2=000B> bộ DIVM=0, tức là CCLK=
1
Sơ đồ giải thuật:
Hình IV.2.1.4. Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC
Trang IV.4
(IV.2.1)Phác thảo giải thuật – Đọc Encoder
Code: Khởi tạo WD ở chức năng Timer và sinh ra ngắt sau mỗi T
s
<T
s
có thể chọn
trước> cho Counter 1 cập nhật giá trị gửi lên PC và Reset Counter.
Phân tích giá trị lớn nhất và nhỏ nhất có thể sinh ngắt từ WDT.
Từ công thức: , với PRE=0÷7, WDL=0÷255 ta thấy rằng:
()
5
2
PRE
tclks WDL
+
=+11+
• Khi chọn PLCK=11.0592M/2 thì (T
s
)
min
=6µs, (T
s
)
max
=189.6ms
T
WDL
−
→+=
() ()
5
400 1
21
2
PRE
s
s
T
WDL T ms
:
−
→+=
Nếu ta thực hiện các phép nhân chia và so sánh tìm ra số có sai số bé nhất thì tương
đối tốn dung lượng bộ nhớ, vậy nên ta chuyển sang cách dùng cấu trúc sau để tính T
S
.(Có
sai số tương đối lớn)
o T
s
=[1:20]ms→PRE=000
o T
s
=(20:2000]ms→PRE=111
min
60
1 :10 100 :1 60 / /
s
)
xung ms xung s v p v p
ST
ωω
⇒⇒=→=
. (Với S là độ phân
giải của Sensor) Ở công thức trên, ta thấy có 2 cách để giảm ω
min
:
Tăng độ phân giải của Encoder.
Hoặc/và tăng thời gian lấy mẫu.<Cái này lại gây khó khăn về mặt đáp ứng>
o Tuy nhiên:
min
60
s
ST
ω
=
là một đẳng thức, và trong đẳng thức đó, ta muốn 2 thành
phần: ω
min
và T
s
càng nhỏ càng tốt, vậy chỉ còn cách tăng S, cách này không phải bao
Trang IV.5
(IV.2.1)Phác thảo giải thuật – Đọc Encoder
P Khi kéo tải, vận tốc của động cơ sẽ giảm xuống và dòng qua động cơ tăng lên, lúc
này, giá trị encoder gởi về (nếu vẫn giữ thời gian lấy mẫu như trước) sẽ gây rất nhiều khó
khăn (do độ phân giải gây ra) để vi điều khiển có thể hiểu được.
>>>>Cách giải quyết vấn đề:
Ta sẽ điều khiển động cơ bằng cách sau:
P Khi gán vận tốc>vận tốc hiện tại, ta mở hàm V
max
, đạt sai số khoảng gần 20%, chuyển
sang PID.
P Khi gán vận tốc<vận tốc hiện tại, ta mở hàm V
min
, đạt sai số gần 20% chuyển sang
dùng PID.
Cách làm này, có thể gọi là ‘khóa mờ’, hoặc dùng từ ‘điều khiển theo ngưỡng’. Hai thuật
ngữ như nhau trong trường hợp này!
Trang IV.6