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.
37 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2992 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Ứng dụng lý thuyết hiện đại thiết kế modul điều khiển động cơ DC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 Ts=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ố Kp,Ki,Kd 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/Ts).
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 , 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
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, 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
(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ố KP, KI, KD, 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 . 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 Ts
(sampling time) để suy ra vận tốc trung
bình của động cơ.(pulse/Ts)
(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 Ts 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.
→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(Ts). 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/Ts. <đượ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
oscf
→ PCLK= 2
oscf
(thời gian
tính bằng giây )
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 Ts <Ts 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: ( )52 PREtclks WDL+= +1 1+
• Khi chọn PLCK=11.0592M/2 thì (Ts)min=6µs, (Ts)max=189.6ms
• Khi chọn WDCLK=400kHz thì (Ts)min=82.5µs, (Ts)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 ( )52 1 1
400000 400000
PRE
s
WDLtclksT
+ + += = ( ) 5400000 12 1 2PRE s
TWDL −→ + =
( ) ( )5400 12 1 2PRE s s
TWDL 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 TS.(Có
sai số tương đối lớn)
o Ts=[1:20]ms→PRE=000
o Ts=(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)
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 601 :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.
o Tuy nhiên: min 60sSTω = là một đẳng thức, và trong đẳng thức đó, ta muốn 2 thành
phần: ωmin và Ts 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 Ts=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 /v pω = )
11 : 4 1000 : 4000 1 : 4000 1 : 362
11.0592
xung CCLK xung CCLK v v s
MHz
μ⇒ → × ,
(165840 /v pω→ = ) , 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 Vmax, đạ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 Vmin, đạ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
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 giải thuật
IV.2.1. Đọc Encoder:
IV.2.2. Điều xung Tín hiệu điều khiển trực tiếp lên mạch công suất chính là tín hiệu
điều xung để Driver có thể điều áp cấp cho động cơ đạt tốc độ mong muốn.
a) Phân tích: Sử dụng Timer ở Mode 6, ta sẽ có thuận lợi về mặt: không phải
lo giải thuật phần mềm và không tốn nhiều thời gian xử lý ngắt; khoảng thời
gian Tpwm = 256×PCLK≈44µsÆfpwm≈22kHz gây khá nhiều phiền phức về
phần cứng Áp
nguồn chia được 256 mức, tức khoảng 12/256=46.875mV mỗi mức.
Khối xử lý PWM:
Hình IV.2.2.1 Sơ đồ khối điều xung tham khảo
Mạch nguyên lý:
Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung:
Hình IV.2.2.2 Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung
Ở đây, tín hiệu PWM và DIR được MCU P89LPC922 tạo ra.
Xử lý khối PWM: (lý thuyết)
PWM(Pulse width modulation) là quá trình điều biến tín hiệu xung nhằm thực hiện
biến đổi áp DC-DC.
Gọi Tm là chu kì điều biến xung,
thời gian ON: Ton, thời gian
OFF: Toff, ta có mối quan hệ về
áp ra và khoảng Ton, Toff, Tm như
sau: 0 on DC
TV
T
= ×V . Hình vẽ bên
minh họa.
Trang IV.7
(IV.2.2) Thuật toán PWM
Với Driver, có một số kết quả đáng quan tâm sau:
Dòng điều chế khi ấy:
b) Sơ qua về phần cứng của MCU P89LPC922: Mô hình Timer1 ở Mode 6.
Hình IV.2.2.3 Timer 1 ở mode 6 với chức năng PWM
c) Giải thuật:
Ghi chú: Source code có tại
Trang IV.8
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 giải thuật
IV.2.1. Đọc Encoder:
IV.2.2. Điều xung
IV.2.3. Khâu điều khiển kinh điển PID:
IV.2.3.1 Khâu PID rời rạc:
1. P (proportional): Gp(z)=Kp
2. I (integrate) : 1
1( )
1I I
G z K T
z−
= − Với (xấp xỉ theo hình chữ
nhật tới)
( 1)
( ) ( )
kT
k T
e t dt Te kT− ≈∫
3. D (derivative): 11( ) (1 )D DD
K KzG z z
T z T
−−= = −
Kết hợp ba điều trên ta được khâu PID số với hàm truyền rời rạc:
1 1
1 1
1 1( ) (1 ) ( ) (1 )
1 1
D
p I p i d
KG z K K T z G z K K K z
z T z
− −
− −= + + − ⇔ = + + −− −
Qua phép biến đổi ta được:
1
1
1 1
1 1 1
1
( ) 1 (1 )
( ) 1
( )(1 ) ( )( (1 ) (1 ) )
( ) ( 2
_ (*)
c
p i d
c p i d
k k p k k i k d k k k
k k
U z K K K z
E z z
U z z E z K z K K z
u u K e e K e K e e e
u u control value
−
−
− −
− − −
−
= + + −−
⇔ − = − + + −
⇔ − = − + + − +
⇔ = +
1 2
2 )
−
−
(*) chính là giải thuật mà ta sẽ sử dụng trong chương trình điều khiển PID bằng C.
Nếu tích phân được xấp xỉ theo hình chữ nhật lùi thì ta sẽ có kết quả như sau:
1
1
1( ) (1 )1p i d
zG z K K K z
z
−
−
−= + + −− .
Tương tự ta cũng có thể xấp xỉ theo hình thang, tuy nhiên thuật toán lập trình rất phức
tạp và chứa thành phần sai số tương lai(dự báo).
Từ cơ sở lý thuyết trên, ta thấy sẽ phải dùng đến 3 giá trị sai lệch và một giá trị điều
khiển quá khứ cho mỗi tín hiệu điều khiển hiện tại, nếu các số trên đều ở định dạng
float, sẽ cần 3 phép nhân và 3 phép cộng số float (sử dụng khoảng 2500 lệnh máy tức
khoảng 550us) để có kết quả. Tính luôn thời gian ở
các lệnh khác, tổng cộng khoảng 1ms để hoàn thành việc cập nhật giá trị hiệu chỉnh
PID ở mỗi lần.
Ta viết gọn lại kết quả trên như sau:
( ) ( )
1
1 2 1 _
_
_ 2
k k
p i d k p d k d k now k last k last last k
u u control value
control value K K K e K K e K e K e K e K e
−
2− − −
= +
= + + − + + = + + −
Với các thông số Know, Klast, Klast_last đều là những hằng số từ bộ ba KP,KI,KD được
tính nhờ Matlab.
Tại sao lại dùng bộ PID?
Tăng tốc độ đáp ứng đối với vòng kín của bộ điều khiển.
Tăng độ chính xác của đáp ứng xác lập.
Giảm độ vọt lố.
Bộ PID là khâu hiệu chỉnh tương đối dễ thiết kế và đa dụng.
Trang IV.9
(IV.2.3.1)Khâu PID số
Nguyên tắc hoạt động của bộ điều khiển PID:
Dựa trên sai số giữa tín hiệu đặt và tín hiệu phản hồi, lúc đầu, ta đặt tín hiệu
mong muốn, ngay lúc ấy, tín hiệu phản hồi là 0 nên sai lệch bằng chính tín hiệu đặt, bộ
thông số PID sẽ khuyếch đại sai lệch này để tạo tín hiệu điều khiển đối tượng, với tín hiệu
điều khiển ấy, đối tượng sẽ chưa thể nào đáp ứng đúng như yêu cầu ngay lập tức, nên sai
lệch sẽ vẫn còn và do đó, tín hiệu điều khiển mới sẽ kết hợp tín hiệu điều chỉnh sai lệch
mới và tín hiệu điều khiển trước (uk) để tiến dần tới giá trị điều khiển đúng mà tại đó, đối
tượng sẽ cho ra giá trị phản hồi đúng như yêu cầu (hoặc gần đúng như yêu cầu với một độ
chính xác chấp nhận được do chính phần mềm và/hoặc phần cứng của hệ thống quy định).
Vậy thật sự, bộ điều khiển PID hoạt động dựa trên tín hiệu sai số và “tích lũy
giá trị điều khiển đúng” chứ không phải tín hiệu yêu cầu. Mặc dù tín hiệu sai số do tín
hiệu yêu cầu và tín hiệu phản hồi về gây ra. (hiệu của sigcommand và sigfeedback).
Khái niệm “tích lũy giá trị điều khiển đúng” dùng để thay thế cho uk-1 trong
biểu thức: , giá trị control_value sẽ tiến tới 0 khi sai số không
còn, và giá trị điều khiển khi ấy chỉ còn u
1 _k ku u control value−= +
k=uk-1, đấy là tín hiệu điều khiển đúng với tín
hiệu yêu cầu.
Trong hầu hết các hệ thống có điều khiển bây giờ, khâu PID đều là khâu PID
số, vậy nên ảnh hưởng của thời gian lấy mẫu tương đối lớn lên hệ thống điều khiển.
o Để tìm bộ thông số Kp, KI, KD ta phải khảo sát được đặc tính động học của động
cơ hoặc tìm bằng thử sai. Có thể sử dụng phương pháp Zeigler-Nichols để khảo
sát. Trong đề tài này tìm đáp ứng bước của động cơ, từ đó tìm được hàm truyền
vòng hở để thiết kế khâu điều khiển dùng thuật toán GA dựa trên ‘lời khuyên của
chuyên gia’.
o Lấy đáp ứng bước của động cơ:
Phân tích:
• Đáp ứng bước của động cơ có được khi ta cấp áp dạng Step và lấy
đáp ứng từng thời điểm của động cơ sau đó.
PID: (Tìm các thông số nhờ Matlab)
Hình IV.2.3.1 Tìm các thông số cho PID nhờ Matlab
Trang IV.10
(IV.2.3.1)Khâu PID số
Hình IV.2.3.2 Sơ đồ giải thuật khảo sát đặc tính động cơ
Dựa trên sơ đồ giải thuật trên, ta sẽ có các hàm sau:
Khởi tạo: init()
o timer_init();
o watchdog_init(Ts);
o watchdogrtc_isrinit();
o uart_init();
Khởi động: start();
o PWM_status=1;
o Dir=1;
o Brake=0;
o timers_starttimer0();
o watchdog_start();
o EA=1;
Xử lý trung tâm: chờ và không làm gì cả
o while(1);
Sự biến: chỉ có ngắt từ WDT và ngắt ấy cưỡng bức sinh ra ngắt Counter 0.
o watchdogrtc_isr();
o timers_isr0();
Trang IV.11
(IV.2.3.1)Khâu PID số
Kết thúc lấy mẫu: khi có 250 mẫu liên tiếp có giá trị sai lệch nhau chỉ ±1 xung.
o compare();
o timers_stoptimer0();
o watchdog_stop();
o stop();
//stop=printf(“\nQua trinh lay mau ket thuc”);
Kết quả thu được: dùng Hyper Terminal (baud rate=115200,DTR=1,RTS=1,No
parity) sẽ là một ma trận cột có giá trị chỉ số vạch encoder đọc được trong thời gian lấy mẫu
TS và số mẫu được lấy chính là số hàng của vector đó.
Cách lấy đặc tính vòng hở của động cơ:
Xác định áp toàn thang của nguồn là bao nhiêu? (Vs) ta đặt áp ấy vào động cơ:
1. Cho thời gian lấy mẫu lớn (1giây-2giây) để lấy tốc độ xác lập của động cơ? Lấy khoảng
100 mẫu.
1.1. Vcc=12V
1.2. ωxl=sum(ω)/length(ω)≈7800(xung/2.5s)≈1900(v/phút)
Xác định đặc tính quá độ của động cơ:
2. Giữ nguyên áp đặt vào, thay khoảng thời gian lấy mẫu xuống TS(ms.)
2.1. Vcc=12V
2.2. Đặc tính quá độ: ( ) ( ) ( )0 1
at btt b ae e
a b b a
ω
ω
− −= + +− − tức ( ) ( )( )
KH s
s a s b
= + + , tìm
các giá trị a,b thường khó khăn vì độ phân giải của encoder không cao nên không cho
ta thấy điểm uốn của đồ thị, vì thế, ta sẽ xấp xỉ mô hình động cơ là bậc nhất:
( ) ( )
KH s
s a
= + và
( )
0 0
1 at
t a e
ω
ω ω
−= +
>>>General model Exp1:
f1(x) = a*exp(b*x)
P Tìm thông số đáng tin cậy:
( )Giá trị:
0 0
1 at
t a e
ω
ω ω
−= + , (không đơn vị); thử tìm bằng thống kê xem kết quả có hội tụ hay
không? Matlab cho ta mô hình động cơ là: ( ) ( ) ( )
25
25
KH s
s a s
= =+ + .
Trang IV.12
(IV.2.3.1)Khâu PID số
Hình IV.2.3.3 Biểu diễn kết quả với Ts=9ms
Sau 10 mẫu thử, ta thu được hình:
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ị
Trang IV.13
(IV.2.3.1)Khâu PID số
Kết quả là chấp nhận được!
Có 2 nguyên nhân gây sai lệch chính: thời gian lấy mẫu và sự đáp ứng trong Ts của
encoder. Khi thời gian lấy mẫu giảm, sự lệch 1 xung cũng gây ra sai số hệ thống tương đối
lớn, khi thời gian lấy mẫu tăng, số mẫu lấy trong thời gian quá độ quá ít không đủ để thể hiện
đặc tính động cơ ÆThông số gần đúng của động cơ mà ta chọn sẽ là: a=25.
Từ đó: ( ) ( ) ( )
25
25
KH s
s a s
= =+ +
Hình vẽ với giá trị Vmax chính là ngưỡng đáp ứng trên của động cơ, ta không thể qua
được bên trái mặt phẳng quy định bởi hàm truyền H(s).
Hàm truyền H(s) xây dựng trên không dùng một đơn vị nào để chuẩn hóa cả! Để
điều khiển vận tốc, ta có thể nhân H(s) với một hệ số K nào đó. Ví dụ như:
o Nếu đầu vào H(s) là vận tốc yêu cầu và đầu ra H(s) là áp mong muốn thì ta có
quan hệ:
U=12VDC Æ v=31.7(v/g) ÆK=12/31.7=0.378 (
2
V s
π
× )=0.060 ( )V s× .
o Tuy nhiên, trong phạm vi đề tài này, người viết lại có chủ định dùng một hàm
truyền không đơn vị. Bởi vậy, sẽ chuẩn hóa các tín hiệu vào và ra!
Trang IV.14
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 giải thuật
IV.2.1. Đọc Encoder:
IV.2.2. Điều xung
IV.2.3. Khâu điều khiển kinh điển PID:
IV.2.3.1 Khâu PID rời rạc:
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ố Kp,Ki,Kd bằng thuật toán GA kết hợp neural):
Trong matlab, ta xây dựng lại mô hình động cơ và các tính năng của MCU để mô phỏng:
Hình IV.2.3.1 Sơ đồ mô phỏng động cơ DC xây dựng trong Matlab
Trong đó, khối chức năng của MCU P89LPC922 là:
Hình IV.2.3.2 Chức năng của MCU P89LPC922 mô phỏng trong Matlab
Với khóa mờ là công tắc được xây dựng theo quy luật:
Hình IV.2.3.3 Khóa mờ xây dựng luật điều khiển
Trang IV.15
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
Khối PID rời rạc được xây dựng như sau:
Hình IV.2.3.4 Khối PID rời rạc xây dựng trong Matlab
Cách tìm bộ thông số PID bằng thuật toán GA:
Trong thời đại máy tính số hiện nay, cách sử dụng vòng lặp hoặc khởi tạo
nhiều mẫu thử ngẫu nhiên để tìm giá trị tốt nhất thỏa mãn yêu cầu đặt ra thường
được dùng khi mà cách giải bằng lý thuyết toán học kinh điển quá phức tạp, hoặc
không cho lời giải tường minh.
Thuật toán GA (Genetic algorithm) khai sinh dựa trên thuyết tiến hóa của
Darwin, định luật di truyền của Mendel đặt cơ sở rất lớn trên máy tính số.
Trong phạm vi ứng dụng của đề tài, với công cụ hỗ trợ Matlab, ta sẽ kết hợp
một mạng Neural (nếp nhăn của võ não hay tri thức) với luật lựa chọn cá thể trong
quần thể chỉ định, bằng các phép lai tạo ngẫu nhiên và chọn lọc các cá thể để tìm
ra cá thể trội nhất sống sót sau phép đào thải của hàm phạt ta xây dựng!
a) Nếp nhăn vỏ não:
Nguồn gốc tri thức: Cơ sở toán học xây dựng dựa trên lý thuyết đưa ra của các
tác giả: Guillermo J. Silva, Aniruddha Datta, S. P. Bhattacharyya: Vùng khả
tồn của bộ thông số KP, KI, KD, trong không gian số thực ( )<Xem tài liệu
(8) và (11)> Đấy chính là quần thể được chọn trong thuật toán GA.
3\
Thuật xấp xỉ:
Xấp xỉ thứ 1:Với hàm truyền đã tìm được, so sánh với dạng hàm truyền
chuẩn của các tác giả trên đưa ra, ta có thể lấy L=0.001s (tức 1/10 thời
gian lấy mẫu).
Xấp xỉ thứ 2: ta giả định đang làm trên mô hình liên tục chứ không
phải rời rạc.
Kết quả với hàm truyền không đơn vị: T=0.04,L=0.001: quần thể được chọn <KP
trục z, KI trục x, KD trục y>
Hình IV.2.3.5 Quần thể được chọn nhờ lời khuyên của chuyên gia
Trang IV.16
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
b) Phép chọn lọc và lai tạo:
Tìm cá thể thích nghi bằng tái sinh chọn lọc ngẫu nhiên: Trong quần thể chỉ
định, các cá thể tồn tại là độc lập và xác xuất tồn tại như nhau khi chưa có biến cố
đào thải của tự nhiên, khi xảy ra biến động về điều kiện sinh tồn, những cá thể
thích nghi được sẽ tiếp tục tồn tại, các cá thể không thích nghi hoặc sẽ bị đào thải,
hoặc phải tiến hóa thành dạng khác, phép chọn lọc đầu sa thải toàn bộ những cá
thể không thích nghi. Ta giữ lại phần quần thể đã thích nghi ban đầu hoặc sẽ chọn
trong quần thể đấy một vài cá thể tốt nhất để lai ghép.
Thuật GA tái sinh: Lấy ngẫu nhiên một lượng lớn cá thể(bộ thông số
KP, KI, KD) trong quần thể được chọn, thử độ thích nghi của chúng với
hàm phạt: min(ITAE(closeloop(PID.HS))) cá thể tốt nhất sẽ được
chọn.
Lai tạo cá thể trội để tìm cá thể mạnh: Từ cá thể tìm được bằng hàm phạt trên,
ta xây dựng thêm luật sinh tồn: L(POT,steady_state_error,settling_time), cá thể
sinh ra bằng cách giữ cố định KP, lặp vòng KI và KD, tìm cá thể tốt nhất trong
quần thể lai mới. Đấy có thể là cá thể được chọn nếu đã thỏa yêu cầu đặt ra của ta.
Nếu không, phải cho KP thay đổi, hoặc bắt đầu lại thuật tóan tái sinh để tìm cá thể
trội mới! Có thể gặp trường hợp xấu, trong quần thể không có cá thể nào đáp ứng
nổi với luật sinh tồn, lúc đó, buộc ta chấp nhận phải thay đổi lại luật để tìm cá thể
thích nghi, nếu không như thế, toàn bộ cấu trúc loài bị diệt vong! Bài toán vô
nghiệm!
Thuật GA lai tạo: Lấy cá thể tồn tại sau biến cố ban đầu, cho phép nó
sinh sản thành những tập đoàn cá thể mới, thử độ thích nghi của chúng
với luật sinh tồn: f(POT,state_error,settling_time), cá thể nào đáp ứng
được các yêu cầu đặt ra sẽ tồn tại, và tất cả các cá thể khác bị bỏ đi,
không xét tới nữa, thuật lai tạo kết thúc.
Ghi chú: Các hàm ITAE, POT, state_error, settling_time có trên trong
phần Matlab>
Đáp ứng của hệ thống với bộ thông số: (2,1,0.0005)
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) chu
kì lệnh 1 giây
Trang IV.17
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
Sai số lý thuyết:
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)
với chu kì lệnh là 1 giây.
Theo lý thuyết và mô phỏng, kết quả tương đối tốt, bây giờ, ta thực hiện vào giải thuật
điều khiển cho MCU P89LPC922.
Hình IV.2.3.8 Đáp ứng của hệ thống thực khi tín hiệu đặt là 20+10*sin(0.05*t) với
chu kì lệnh chọn là 10xung/lệnh.
Trang IV.18
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
Nhận xét: Do sai số của phần cứng nên ta chưa thể phân tích giá trị đáp ứng có tốt hay
không? Chỉ có thể nói giá trị xác lập đúng với tín hiệu đặt và sai số xác lập bằng sai số phần
cứng.
Chương trình giải thuật có thể viết như sau:
/************************************************************************
Chuc nang : Ham PID la khau tao tin hieu dieu khien de tao
tin hieu dieu xung dua vao chan PWM.
Dau vao : Khong co
Dau ra : Khong co, gia tri dieu khien cap nhat trong ham
Tac gia : Bui Trung Hieu, Webmaster:
Su dung : Duoc phep su dung mien phi voi moi muc dich.
Khoi tao : 9h59PM ngay 10 thang 11 nam 2005
Lien he : Moi trao doi xin lien lac qua email: buitrunghieu@khvt.com
Tai lieu tham khao cho khau PID so:
-Sach "LT Dieu Khien tu dong" - NXB DHQG TPHCM
Nguyen Thi Phuong Ha (Chu bien) -Huynh Thai Hoang
-Co tai
-“The PID Control Algorithm: ‘How it works, how to
tune it, and how to use it’- John A. Shaw
Cac thong so Kp,Ki,Kd cho khau PID so duoc tim bang chuong trinh Matlab 7.0 (C) Mathworks
/*************************************************************************/
void PID (void)
{
double temp;
temp=(double)control_value/k1; //k1 la he so ho*.p thu*’c
temp+=(double)Know*(double)ek+(double)Klast*(double)ekp1+(double)Klast_last*(double)ekp2;
temp=temp*k1;
(temp>255)?(temp=255):(temp<20?temp=20:(temp=temp)); //Khau bao hoa
control_value=(unsigned char)(temp);
timers_setdutycycle1(control_value);
}
Trang IV.19
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
Sơ đồ giải thuật tham khảo:
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
Trang IV.20
(IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID
Kết quả thực tế: Khi chỉ dùng khâu PID (2,1,0.0005)
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
Nhận xét:
Đáp ứng quá độ của hệ thống tương đối tốt. Khâu PID là tốt với đáp ứng xác lập, sai số
xác lập bằng chính sai số của phần cứng.(+/- 1 encoder/Ts).
Khi thử gây nhiễu tải, đáp ứng của hệ thống tương đối nhanh. Đạt yêu cầu đặt ra.
Mặc dù kết quả không hoàn toàn giống như mô phỏng nhưng chấp nhận được do khi
mô phỏng, ta đã bỏ qua sai số và giới hạn phần cứng.
Khi dùng PID kết hợp với ON-OFF: Không dẫn kết quả ra ở đây vì điều khiển kết hợp như
vậy tốt nhất nên dùng lúc kéo tải, khi moment quán tính lớn.
Trang IV.21
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 giải thuật
IV.2.1. Đọc Encoder:
IV.2.2. Điều xung
IV.2.3. Khâu điều khiển kinh điển PID:
IV.2.3.1 Khâu PID rời rạc:
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ố Kp,Ki,Kd bằng thuật toán GA kết hợp mạng neural):
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à điều khiển sử dụng mạng neural
truyền thẳng:
Nhận dạng các thông số mô hình-huấn luyện mạng: Ta có thể nhận dạng các
đặc tính của động cơ DC và xây dựng một hàm vận tốc theo dòng điện và điện áp
điều biến xung, tuy nhiên, với MCU P89LPC922, ta chỉ nên nhận dạng một phần:
hàm PWM=f(v_command). Cách thức tiến hành như sau:
Lần lượt tăng duty cycle từ min đến max để có được đặc tuyến dutycycle theo
vận tốc. Sơ đồ giải thuật:
Trang IV.22
(IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron
Hình IV.2.3.1 Sơ đồ giải thuật khảo sát đặc tính động cơ
Trang IV.23
(IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron
Xử lý bằng Matlab, ta tìm được mối quan hệ đáng chú ý sau:
Hình IV.2.3.2 Đặc tính điều xung theo vận tốc (xung/Ts)
Phương trình đặc tính tìm trên được sử dụng để làm mô hình tham chiếu chuẩn cho
động cơ.
Kết quả khi dùng các thông số nhận dạng để điều khiển theo vòng hở:
Trang IV.24
(IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron
Hình IV.2.3.3 Đáp ứng khi vận tốc thay đổi của khâu hiệu chỉnh kết hợp
Có tại:
Nhận xét: sai số xác lập bằng với sai số quy định bởi phần cứng. đáp ứng quá độ rất tốt, độ
vọt lố rất ít, động cơ nhanh chóng tìm được giá trị xác lập đúng.
Đến đây, ta có thêm phương án lựa chọn để điều khiển thích hợp theo yêu cầu đặt ra:
Đáp ứng nhanh.
Vọt lố ít.
Không có sai số xác lập.
Chống nhiễu?
Nhiễu tải
Nhiễu đo
Phần này không phải đi xây dựng hệ MRAS, các thông số của mô hình được nhận
dạng tương đối đầy đủ, người viết không có ý định xây dựng một MRAS với các thông số
cập nhật theo luật MIT trong khi đang sử dụng nhân điều khiển 8bit và phần nhận dạng
thông qua chương trình trung gian chứ không điều khiển ‘online’ và chạy ‘Real time’!
Phần trình bày trên được viết theo ý định điều khiển vòng hở sử dụng mạng nơron sau khi
đi tìm(nhận dạng) mối quan hệ PWM(velocity.)
Quá trình điều khiển vòng hở sau nhận dạng các thông số như trên đúng trong trường
hợp tải là cố định nếu chỉ có thông số phản hồi từ encoder. Để xây dựng một mô hình tốt
hơn, cần phải cập nhật thêm thông số phản hồi khác như dòng điện. Tất nhiên, lúc ấy,
hàm xây dựng PWM=f(velocity,current) sẽ tương đối phức tạp. Tuy ta không quan tâm
đến mức độ phức tạp của hàm sẽ xây dựng nhưng sẽ phải
quan tâm đến thời gian thực hiện để tìm ra giá trị PWM đúng của MCU từ hàm trên.
Trang IV.25
DC Motor Control Module
V. Các vấn đề mở rộng, những hạn chế và hướng giải quyết:
Bộ thông số PID khi dùng GA kết hợp với tri thức của chuyên gia đã giải quyết bài
toán một cách tổng quát, đến đây, ta đã hoàn toàn bỏ đi các hành động can thiệp của con
người trong tất cả các khâu thiết kế! Cách tìm bộ thông số PID theo Ziegler-Nichols không
phải tổng quát, không đạt tối ưu, và ta sẽ gặp nhiều điều phiền phức nếu cố tìm thông số
PID theo cách kinh điển này trong khi phần cứng hạn chế để có thể tìm được thời hằng Tc
(hằng số thời gian điện cơ) của động cơ.
Với cách áp dụng lý thuyết mới của các tác giả Guillermo J. Silva, Aniruddha Datta,
S. P. Bhattacharyya (8) vùng khả nghiệm sẽ luôn tồn tại nếu hàm truyền của đối tượng ban
đầu có thể điều khiển được bằng khâu PID.
Áp dụng lý thuyết này để tìm các thông số PID thích hợp trong điều khiển mờ thích
nghi gián tiếp cũng là một hướng giải quyết bài toán, cách ấy được xem là một phương án
kết hợp để mô hình có thể giải tối ưu theo nhiều lựa chọn.
Yêu cầu chống nhiễu tải và nhiễu đo cũng được đặt ra:
o Nếu sử dụng P89LPC922 và không dùng thêm sensor ngoài, ta thật khó khăn
để chống nhiễu đo, giá trị đo hoàn toàn phụ thuộc vào encoder quang, mà sự
hạn chế của encoder thì đã được phân tích trên. Nếu sử dụng P89LPC952, có
thể hạn chế bằng dùng thêm hồi tiếp dòng từ driver của động cơ bằng bộ
ADC10 bit.
o Với nhiễu tải, nếu xây dựng mô hình tham chiếu đầy đủ, hoàn toàn có thể khắc
phục sự cố với mức độ cho phép trong phạm vi của
công suất toàn mạch. Cách xây dựng hệ STR để chống nhiễu tải theo phương
pháp bình phương cực tiểu tổng quát cũng đã được xét tới nhưng không thể
thực thi trong quá trình thực nghiệm do thuật toán quá phức tạp để MCU8bit
có thể đảm đương.
Ý định xây dựng một bộ điều khiển theo yêu cầu người dùng cũng được đặt ra: với
các thông số POT, SETTLING TIME, STEADY STATE ERROR tùy định trong thuật toán
GA, ta hoàn toàn có thể thỏa mãn nếu có cá thể tồn tại sau luật sinh tồn
L(POT,steady_state_error,settling_time). ☺
Trang V.1
DC Motor Control Module
VI. Kết luận:
Cách điều khiển động cơ hoàn chỉnh trong đề tài này sẽ là sự kết hợp giữa khóa mờ, PID kinh
điển và tham chiếu mô hình chuẩn. Một khâu lai kết hợp nhiều lý thuyết có thể phức tạo về thuật
toán xử lý nhưng sẽ tốt hơn về đáp ứng.
Thật ra, với bộ thông số PID tìm nhờ GA, ta hoàn toàn có thể sử dụng bộ điều khiển kinh
điển để đáp ứng yêu cầu đặt ra của bài toán, việc xây dựng thêm mô hình diễn tả đầy đủ đặc tính
của động cơ được người viết xem là một phương án để đối phó với các biến loạn của nhiễu tác
động lên hệ thống.
Với lý thuyết trình bày, con người không cần can thiệp vào các khâu thiết kế, ta sẽ quen dần
với việc nhờ máy móc làm toàn bộ các công việc mà con người đã dạy cho nó!
Bằng việc sử dụng nhân điều khiển P89LPC922 với các tính năng tương đối mạnh của nó, ta
có thể làm được nhiều việc cho các mô hình điều khiển nhỏ, rất thích hợp cho đề tài của sinh viên.
Ứng dụng của đề tài:
i. Là modul cho các đối tượng điều khiển cần dẫn động, hoặc mô hình đối tượng
cần công suất thay đổi. Rất thích hợp cho các đội thi Robocon năm nay. ☺
ii. Trong phạm vi ứng dụng rộng hơn, mang tính thương mại, có thể tạo thành
modul điều khiển động cơ hòan thiện thỏa mãn các chuẩn thông thường<về
giao tiếp ngoại vi, chất lượng cần đạt, các thông số kĩ thuật khác về đầu vào-
đầu ra của sản phẩm>
iii. Bằng việc giao tiếp máy tính, đề tài là mô hình tương đối tốt để điều khiển các
đối tượng khác, như lò nhiệt chẳng hạn, khi đó, thông số chỉnh đổi là giá trị
cập nhật của sensor: thay vì cần thông tin từ encoder, ta cần thông tin từ sensor
nhiệt.
VII. Dự định:
Sử dụng họ ARM32 bits của Philips (LPC2214) nhằm phát triển công việc tính toán!
Trang VI.1
(VII) Tài liệu tham khảo
VIII. Tài liệu tham khảo:
(1) Giáo trình môn vi xử lý-ThS Hồ Trung Mỹ-NXB ĐHQG TPHCM.
(2) Giáo trình môn Lý thuyết điều khiển tự động-Phó GS-TS Nguyễn Thị Phương Hà-
TS Huỳnh Thái Hoàng- NXB ĐHQG TPHCM.
(3) Giáo trình môn Lý thuyết điều khiển hiện đại-Phó GS-TS Nguyễn Thị Phương Hà-
NXB ĐHQG TPHCM tháng 8 năm 2005.
(4) Giáo trình môn Điện tử công suất-ThS Huỳnh Văn Kiểm-Tài liệu học kì 2 năm học
2004-2005.
(5) Datasheets và User manual MCU P89LPC920/921/922 (Philips Semiconductor)
(6) The PID Control Algorithm: ‘How it works, how to tune it, and how to use it’- John
A. Shaw- Process Control Solutions.
(7) Neural network for controls-Edited by W.Thomas Miller, III, Richard S.Sutton and
Paul J.Werbos-The MIT Press.
(8) New Results on the Synthesis of PID Controllers-Guillermo J. Silva, Aniruddha
Datta, S. P. Bhattacharyya-IEEE TRANSACTIONS ON AUTOMATIC CONTROL, VOL.
47, NO. 2, FEBRUARY 2002.
(9) Fuzzy Control-Kelvin M.Passino-Stephen Yurkovich-Department of Electrical
Engineering-The Ohio State University-Addison Wesley Longman Inc.
(10) Biomimicry-Kelvin M.Passino-Stephen Yurkovich-Department of Electrical
Engineering-The Ohio State University-Addison Wesley Longman Inc.
(11) Đề tài thảo luận LTĐKTĐ nhóm 8 lớp DD02KSTN: ‘Những kết quả mới về tổng
hợp bộ điều khiển PID’-Nguyễn Đức Hoàng, Võ Lê Duy Tân,Vũ Hoàng Dũng- Khoa
học và tuổi trẻ.
(12) C51 Primer: ‘An Introduction To The Use Of The Keil C51 Compiler On The
8051 Family’, ©Hitex Ltd.
(13) Application Note: driver LMD18200 (©National Semiconductor)
Từ khóa tìm kiếm các tài liệu sử dụng:
English: Neural network, PID, Genetic Algorithms (GA), reference model,
classical control, modern control, hybrid method, P89LPC922, LMD18200,
power electronic, micro controller, real time operation.
Tiếng Việt: mạng nơron, điều khiển hiện đại, điều khiển kinh điển, mô hình
tham chiếu, điện tử công suất, vi xử lý, điều khiển thời gian thực.
Trang VII.1
Các phiên bản cập nhật
Các phiên bản cập nhật:
Ngày 8/10/2005: Sử dụng mô hình tham chiếu để điều khiển
Ngày 20/11/2005: Sử dụng khâu PID kinh điển kết hợp Fuzzy switch.
Ngày 30/11/2005: Điều khiển kết hợp PID kinh điển và mô hình tham chiếu.
Ngày 12/12/2005: Sử dụng lý thuyết mới để tìm bộ thông số PID-GA sử dụng tri thức
chuyên gia.
Ngày 16/12/2005: Chỉnh sửa form trình bày.
Ngày 23/12/2005: Sửa lại phần lý thuyết về mô hình tham chiếu.
Hochiminh city University of Technology,
Saturday, December 24, 2005
KHOA HỌC VÀ TUỔI TRẺ
Notes:
Bản cập nhật mới nhất có ở trang:
Các giải thuật và code của phần này có ghi chi tiết trong Files pdf.
-----@-----
Phiên bản cập nhật: 200512231800
-----@-----
Các file đính kèm theo tài liệu này:
- Ứng dụng lý thuyết hiện đại thiết kế modul điều khiển động cơ DC.pdf