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

Ứng dụng lý thuyết hiện đại thiết kế Modul điều khiển động cơ DC

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 (2.06 MB, 37 trang )



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











Thành phố Hồ Chí Minh, 2005-12-24


Index – DC Motor Control Module
Trang i
I. Khái quát-giới thiệu đề tài:
 Kiến thức cơ bản:
II. Giới thiệu thuật toán điều khiển và các chương trình.
II.1. Điều khiển kinh điển
II.2. Mạng neural
II.3. Fuzzy control
II.4. Genetic Algorithm(GA).
II.5. Chương trình điều khiển viết bằng ngôn ngữ C trong uV3
Hình II.1 Mô hình điều khiển hệ thống khi chưa có khâu chỉnh định
Hình II.2 Mô hình điều khiển hệ thống có thêm khâu chỉnh định
III. Phần cứng chuẩn bị và phần mềm sử dụng.
III.1. Mạch phần cứng
Hình III.1
Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM
Hình III.2
Mạch phát triển ứng dụng MCU P89LPC922
Hình III.3 Mạch đọc Encoder sử dụng MCU P89LPC922 <dự định-đang
thiết kế>
Hình III.4 Mạch động lực (mạch công suất).
IV. Giải quyết vấn đề:


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

d
bằng thuật toán GA kết hợp mạng neural):
Hình IV.2.3.1 Sơ đồ mô phỏng động cơ DC xây dựng trong Matlab
Hình IV.2.3.2 Chức năng của MCU P89LPC922 mô phỏng trong Matlab
Hình IV.2.3.3 Khóa mờ xây dựng luật điều khiển
Hình IV.2.3.4 Khối PID rời rạc xây dựng trong Matlab
Hình IV.2.3.5 Quần thể được chọn nhờ lời khuyên của chuyên gia.
Hình IV.2.3.6 Đáp ứng của hệ thống khi tín hiệu thử là 1000+500sin(0.02t) (v/p) trên
mô phỏng.
Hình IV.2.3.7 Hình phóng to sai số giữ
a tín hiệu đặc và tín hiệu đáp ứng (vòng/phút)
trên mô phỏng.
Hình IV.2.3.8 Đáp ứng của hệ thống khi tín hiệu thử là 20+10sin(0.5t) (xung/Ts) trên
thực tế với chu kì lệnh là 10xung/lệnh.
DC Motor Control Module
Trang ii
Hình IV.2.3.9 Sơ đồ giải thuật điều khiển vòng kín chưa chỉnh hướng chỉ dùng khâu
PID kinh điển
Hình IV.2.3.10 Đáp ứng vòng kín khi chỉ có khâu PID với các tốc độ khác nhau khi
không gây nhiễu tải.
IV.2.3.3 Mở rộng chiến lược điều khiển, tìm cách tối ưu hóa đáp ứng quá độ
của hệ thống-nhận dạng đối tượng và xây dựng một mô hình tham chiếu
chuẩn cho động cơ-Mạng neural truyền thẳng:
Hình IV.2.3.1 Sơ đồ giải thuật khảo sát đặc tính động cơ.
Hình IV.2.3.2 Đặc tính điều xung theo vận tốc (xung/T
s
).
Hình IV.2.3.3 Đáp ứng bước khi có khâu hiệu chỉnh kết hợp.
V. Các vấn đề mở rộng và hướng giải quyết:
VI. Kết luận:

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.


Trang I.1
(II) Thuật toán điều khiển và các chương trình
II. Thuật toán điều khiển và các chương trình:
II.1: Điều khiển kinh điển: Sử dụng khâu vi tích phân tỉ lệ (PID) để làm bộ điều
khiển hệ thống.
II.2: Mạng neural: nhận dạng đặc tính động cơ DC. Điều khiển theo mô hình tham
chiếu. Chuyên gia cho ‘lời khuyên’ về vùng khả nghiệm của khâu PID, hướng dẫn
thuật toán GA tìm quần thể thích nghi.
II.3: Fuzzy control: Điều khiển vòng kín bằng ‘công tắc mờ’: Nếu <80% tốc độ yêu
cầu thì mở toàn công suất, nếu >120% thì tắt nguồn, khoảng giữa sử dụng khâu hiệu
chỉnh PID kinh điển.
II.4: Genetic Algorithm(GA): chọn bộ thông số PID cho khâu điều khiển kinh điển,
lựa cá thể trội theo yêu cầu thiết kế với mức chính xác đặt ra của người dùng.
II.5: Chương trình điều khiển viết bằng ngôn ngữ C trong uV3.
II.6: Các mô hình điều khiển hệ thống:
Hình II.1 Mô hình điều khiển hệ thống khi chưa có khâu tự chỉnh định

Hình II.2 Mô hình điều khiển hệ thống có thêm khâu chỉnh định

Trang II.1
(III) Phần cứng và phần mềm
III. Phần cứng chuẩn bị và phần mềm sử dụng:
III.1: Mạch phần cứng:
III.1.1 Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM.
III.1.2 Mạch phát triển ứng dụng MCU P89LPC922.
III.1.3 Mạch đọc Encoder sử dụng MCU P89LPC922 <dự định-đang thiết kế>
III.1.4 Mạch công suất điều khiển động cơ.
III.1.5 Động cơ DC có Encoder.
III.1.6 Bộ nguồn: 12VDC<Có thể sử dụng ở 24VDC>, 5VDC <Sử dụng bộ nguồn

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








Hình III.1.4.:Sơ đồ phần cứng mạch công suất



Trang III.3
(IV.I) Giải quyết vấn đề-Định hướng chương trình

IV. Giải quyết vấn đề:
IV.1. Định hướng chương trình: Muốn điều khiển động cơ vòng kín, có hồi tiếp:
(i) Đề tài sử dụng encoder quang để phản hồi vận tốc <sử dụng động cơ
có encoder 100xung/vòng>. Nhiệm vụ phải đọc được giá trị này. Dự
định sẽ phát triển cách đọc Encoder sử dụng ngắt cạnh ở mode x4
(ii) Áp đặt vào 2 đầu động cơ thay đổi sẽ làm vận tốc động cơ thay đổi nên
tín hiệu điều xung có tác động trực tiếp đến vận tốc động cơ. Nhiệm vụ
phải có chương trình điều biến xung.
(iii)Muốn động cơ đáp ứng đúng vận tốc mong muốn, phải có một khâu
điều khiển, có thể dùng khâu điều khiển kinh điển (PID) hoặc(/và kết
hợp với) điều khiển hiện đại (xây dựng mô hình tham chiếu, hoặc/và
khâu điều khiển mờ)
(iv) Giá trị vận tốc và chiều quay của động cơ được ra lệnh từ bàn phím và
hiển thị trên màn hình PC bằng giao tiếp RS232. Các giá trị này có thể
được nhận từ một MCU master khác qua các giao tiếp I2C, song
song,… tùy nhu cầu sử dụng của người thiết kế.

(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

s
)
(ii) Tìm thời gian xuất hiện 2 cạnh xuống l
tiếp của encoder, từ đó cũng suy ra được
vận tốc trung bình của động cơ.
iên


 Phân tích:
i. Nếu sử dụng phương án 1, ta cần 1 timer để định thời gian lấy mẫu, 1 counter để
đếm số xung.
ii. Nếu sử dụng phương án 2, ta cũng cần 1 timer để định khoảng thời gian và 1 chân
(có thể là counter/ngắt ngoài/1 chân In/Out bình thường)
iii. Nếu sử dụng phương án 2, thời gian thực thi chiếm hầu hết thời gian hoạt động của
MCU nên sẽ dùng một Device riêng biệt làm nhiệm vụ này.
iv. Nếu sử dụng phương án 1 sẽ bị giới hạn về mặt đáp ứng do encoder gây ra <số xung
quá lớn, tràn Counter/hoặc encoder có độ phân giải thấp thì thời gian lấy mẫu T
s
phải
lớn để giảm thiểu sai số đo đạc>
v. Nếu sử dụng phương án 2, trong thuật giải của MCU MASTER, dùng giao tiếp song
song để giảm thiểu thời gian lấy mẫu, tất nhiên cần giao thức bắt tay để đảm bảo
nhận đúng dữ liệu, chiều quay của động cơ cũng được ENCODER READER CARD
nhận và gởi lên ở bit cao nhất của byte cao. <đang thiết kế>
→Lựa chọn: Trong đề tài chọn phương án 1.
 Cách thức giải quyết:
i. Sử dụng Watchdog Timer để định
khoảng thời gian ngắt(T
s
). Khoảng thời

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

osc
f

PCLK=
2
osc
f
(thời gian
tính bằng giây <seconds>)
ii. Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng
Counter/Timer 16bit:
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







Trang IV.3
(IV.2.1)Phác thảo giải thuật – Đọc Encoder

i. Cấu hình của WDT ở chức năng Timer:


Hình IV.2.1.3. Cấu hình của WDT ở chức năng Timer Cấu hình của WDT ở chức năng Timer
 Khai báo cấu hình:Các thanh ghi chịu tác động: TMOD, TAMOD,WDFEED1&2,
WDCON, IE,IP <Xem thêm ở
Ở đây, ta dùng chân T0 ở
chế độ Input Only.

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

• Khi chọn WDCLK=400kHz thì (T
s
)
min
=82.5µs, (T
s
)
max
=2.62s
o Trong bài này, ta thống nhất chọn WDCLK, có các công thức sau:
o
( )
5
211
400000 400000
PRE
s
WDL
tclks
T
+
+ +
==
()
5
400000 1
21
2
PRE
s

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

Từ định hướng như thế, ta viết chương trình:
if(time>20) //Phai be thua 2500ms
{
WDCON = 0xE5;
WDL = 25*time/256-1;
}

//Thoi gian lay mau >=1ms va <=20ms
else //(time>=1&time<=20)
{
WDCON = 0x05;
WDL = (400*time-1)/32-1;
}
Hay viết gọn lại:
(time>20)?( WDCON = 0xE5,WDL = 25*time/256-1):( WDCON = 0x05,WDL = (400*time-1)/32-1);
Trong các phép tính, không có số nào vượt quá tầm của số unsigned int nên kết quả
chấp nhận(trong sai số tính được)
<Code here>
Ghi chú:
Source code có tại

Phân tích sự khó khăn về mặt đáp ứng của Counter:
o Khi xử lý thời gian thực, ta mong muốn sao cho vi điều khiển xử lý nhanh các kết quả
tính toán hầu mong tạo được tín hiệu điều khiển thích hợp nhất với tín hiệu hiện tại.
o Sự đáp ứng phần cứng bao giờ cũng gây ra những khó khăn, ở đây ta không thể lấy
mẫu ở khoảng thời gian quá nhỏ, không phải chỉ vì thời gian đáp ứng của thuật toán
xử lý, mà còn vì sự phân giải của sensor là có giới hạn. Ví dụ, trong bài, nếu sử dụng
encoder có độ phân giải 100xung/vòng, ta lấy mẫu với chu kì 10ms. Vậy, để có thể
đọc được sự sai lệch của 1 xung, động cơ cần có vận tốc tối thiểu:
(

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


giờ cũng thực hiện được vì giá thành/cũng như phần cứng đáp ứng cũng phải có giới
hạn.
o Hướng khắc phục: sử dụng Encoder có độ phân giải cao hơn, đề nghị đưa ra là
1000xung/vòng. Lúc này, giả sử vẫn dùng T
s
=10ms, vậy thì tốc độ để đạt độ phân giải
xung là: . Với cách khắc phục này, ta phải phân tích ngưỡng trên của
đáp ứng:
(
min
6/vp
ω
=
)
1
1 : 4 1000 : 4000 1 : 4000 1 : 362
11.0592
xung CCLK xung CCLK v v s
MHz
μ
⇒→×
,
(
165840 /vp
ω
→=
)
, giới hạn trên này không cần xét tới trong đề tài này.
Phân tích khó khăn khi kéo tải:

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

×