Tải bản đầy đủ (.doc) (19 trang)

Điều khiển động cơ DC dùng thuật toán PID

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 (1.2 MB, 19 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CƠ KHÍ CHẾ TẠO MÁY
KHOA CƠ KHÍ CHẾ TẠO MÁY
BỘ MÔN CƠ ĐIỆN TỬ
BỘ MÔN CƠ ĐIỆN TỬ
…o0o…
Điều khiển động cơ DC dùng PID
YÊU CẦU GIỚI HẠN ĐỀ TÀI
YÊU CẦU GIỚI HẠN ĐỀ TÀI
- Thiết kế mạch cầu H điều khiển tốc độ động cơ DC theo phương pháp
điều chỉnh độ rộng xung (PWM).
- Tìm hiểu thuật toán điều khiển vòng kín PID theo hai phương pháp:
 Ziegler – Nichols (Z – N).
 Cohen – Coon (C – C).
- Viết giao diện chương trình điều khiển động cơ DC theo thuật toán
điều khiển vòng kín PID bằng cả hai phương pháp Z – N và C – C.
CƠ SỞ LÝ THUYẾT
CƠ SỞ LÝ THUYẾT
Giới thiệu chung về thuật toán điều khiển vòng kín PID
Bộ điều khiển PID là một bộ điều khiển vòng kín được sử dụng rộng rãi
trong công nghiệp. Sử dụng bộ điều khiển PID để điều chỉnh sai lệch giữa
giá trị đo được của hệ thống (process variable) với giá trị đặt (setpoint) bằng
cách tính toán và điều chỉnh giá trị điều khiển ở ngõ ra.
Sơ đồ hệ thống điều khiển dùng PID
Một bộ điều khiển PID gồm 3 thành phần:
 Khâu P (proportional) – tạo tín hiệu điều khiển tỉ lệ với sai lệch (error
– e)
 Khâu I (integral) – tạo tín hiệu điều khiển tỉ lệ với tích phân theo thời
gian của sai lệch
 Khâu D (derivative) – tạo tín hiệu điều khiển tỉ lệ với vi phân theo


thời gian của sai lệch.
2
Điều khiển động cơ DC dùng PID
Bảng sau cho ta thấy rõ ảnh hưởng của các thông số K
P
, K
I
, K
D
đến hệ thống
điều khiển bằng PID:
Effects of increasing parameters
Parameter Rise Time Overshoot Settling Time S.S. Error
K
p
Decrease Increase Small Change Decrease
K
i
Decrease Increase Increase Eliminate
K
d
Small Change Decrease Decrease None
Nhận xét:
 K
P
dùng để giảm thời gian tăng trưởng.
 K
D
dùng để giảm độ vọt lố và thời gian xác lập.
 K

I
dùng để loại trừ sai số ở trạng thái ổn định.
Rời rạc hóa bộ điều khiển PID
Hàm truyền của bộ điều khiển PID theo thời gian:
( )
( ) ( ) ( )
P I D
de t
u t K e t K e t dt K
dt
= + +

Bộ điều khiển số không thể lấy mẫu liên tục theo thời gian nên cần phải rời
rạc hóa các khâu của bộ hiệu chỉnh PID:
 Khâu tỉ lệ:
( ) ( )
P P
K e t K e n≈
 Khâu tích phân:
0
0
( ) ( )
t
N
i i S
K e t dt K T e n



 Khâu vi phân:

( ) [ ( ) ( 1)]
d d
S
e t e n e n
K K
dt T
− −

Suy ra hàm truyền của bộ điều khiển PID số sẽ là:
0
1
( ) ( ) ( ) [ ( ) ( 1)]
N
P i S d
S
u n K e n K T e n K e n e n
T
= + + − −

Với:
P
i
i
K
K
T
=
;
d P D
K K T=

Bộ điều khiển PID rời rạc đọc sai số, tính toán và xuất ngõ ra điều khiển
theo một khoảng thời gian xác định (không liên tục) gọi là thời gian lấy mẫu
(T). Thời gian lấy mẫu cần nhỏ hơn đơn vị thời gian của hệ thống.
3
Điều khiển động cơ DC dùng PID
Thiết kế bộ PID số theo phương pháp Ziegler – Nichols (Z – N)
Z – N là phương pháp thiết kế bằng thực nghiệm, được sử dụng trong trường
hợp không thể xây dựng mô hình toán học cho đối tượng điều khiển.
Điều kiện: khi đưa trạng thái làm việc của hệ đến biên giới ổn định thì mọi
giá trị của tín hiệu trong hệ thống điều phải nằm trong giới hạn cho phép.
Các bước tiến hành:
- Trước tiên, sử dụng bộ P lắp vào hệ kín (hoặc dùng bộ PID và chỉnh
các thành phần K
I
và K
D
về giá trị 0). Khởi động quá trình với hệ số
khuếch đại K
P
thấp, sau đó tăng dần K
P
tới giá trị tới hạn K
gh
để hệ kín
ở chế độ giới hạn ổn định, tức là tín hiệu ra h(t) có dạng dao động
điều hòa. Xác định chu kỳ tới hạn T
gh
của dao động.
- Xác định thông số của bộ điều khiển theo bảng sau :
Bộ điều khiển

K
P
T
N
T
V
P
0,5 K
gh
_ _
PI
0,45 K
gh
0,83 T
gh
_
PID
0,6 K
gh
0,5 T
gh
0,125 T
gh
//Một số tài liệu ghi là T
N
= 0,85 T
gh
(bộ điều khiển PI). T
V
= 0,12 T

gh
(bộ
điều khiển PID).
Hệ số tích phân :
P
I
N
K
K =
T
Hệ số vi phân :
D P V
K = K .T
4
Điều khiển động cơ DC dùng PID
Thiết kế bộ PID số theo phương pháp Cohen – Coon (C – C)
C – C là phương pháp thiết kế dựa trên một số đáp ứng điển hình của hệ
thống, cung cấp khả năng ước lượng để tính toán các thông số của hệ thống.
Các bước thực hiện:
- Khởi động hệ thống và đợi cho trạng thái tương đối ổn định.
- Tạo một bước nhảy của tín hiệu đầu vào.
- Quan sát đáp ứng đầu ra sau một khoảng thời gian.
- Dựa vào đáp ứng đầu ra, xác định các thông số (bằng phép đo):
 t
0
: Thời điểm bắt đầu thực hiện bước nhảy của tín hiệu đầu vào.
 t
2
: Thời điểm giá trị của tín hiệu đầu ra thực hiện được nửa
bước nhảy (0.5B).

 t
3
: Thời điểm giá trị của tín hiệu đầu ra đạt được 63.2% bước
nhảy (0.632B).
 A: Độ lớn bước nhảy của tín hiệu đầu vào.
 B: Độ lớn bước nhảy của tín hiệu đầu ra.
- Từ đó suy ra các thông số quá trình:
 t
1
= (t
2
- ln(2) t
3
)/(1 - ln(2))
 τ = t
3
- t
1

 τ
DEL
= t
1
- t
0

 K = B/A
5
Điều khiển động cơ DC dùng PID
- Dựa vào các thông số K, τ và τ

DEL
ta có thể tính được K
C
, T
I
và T
D
dựa
theo các biểu thức trong bảng dưới đây:
- Cuối cùng thu được các thông số đặc trưng của bộ PID số:

K
P
= K
C

K
I
= K
C
/t
I

K
D
= K
C
*t
D
So sánh giữa Z – N và C – C


Cả 2 phương pháp này đều cung cấp khả năng ước lượng các thông số
quá trình của bộ PID số.

Phương pháp Z – N đòi hỏi phải theo thực nghiệm là chính.

Phương pháp C – C yêu cầu tính toán nhiều hơn là thực nghiệm.
6
Điều khiển động cơ DC dùng PID
THIẾT KẾ VÀ THI CÔNG
THIẾT KẾ VÀ THI CÔNG
Sơ đồ khối của mô hình thi công:
Mạch nguyên lý của khối điều khiển:
Mạch nguyên lý của khối hồi tiếp vận tốc từ Encorder:
7
Điều khiển động cơ DC dùng PID
Mạch nguyên lý của khối cách ly:
Mạch nguyên lý của khối công suất:
8
Điều khiển động cơ DC dùng PID
Tính toán Encorder:
Tính toán Encorder:
Tần số đáp ứng:
Động cơ dùng Encorder Incremental với 2 kênh xung A (dây trắng) và B
(dây vàng) với thông số là 100 xung/vòng cho mỗi kênh  Để tăng độ phân
giải lên 4 lần (tức 400 xung/vòng), ta thiết kế mạch hồi tiếp tốc độ như sau:
 Dùng 1 cổng EX-OR (74HC86) để bắt tất cả các cạnh lên và cạnh
xuống của 2 kênh xung A và B.
 Cho vi điều khiển nhận ngắt ngoài với bất cứ sự thay đổi nào của đầu
vào là ngõ ra của cổng EX-OR trên.

Tốc độ tối đa của động cơ khoảng 3800 vòng/phút ở điện áp nguồn 24VDC.
Suy ra tần số tối đa của Encoder là:
max_encoder
3800
= *400 0,025Mhz
60

f
Ở đây dùng vi điều khiển ATMEGA32 với tần số thạch anh ngoại là 16Mhz
 hoàn toàn đáp ứng được tần số của Encorder.
Chu kỳ lấy mẫu (T
mẫu
):
Trong chương trình Codevision dùng biến đếm count kiểu nguyên không
dấu unsigned long (16 bit) có giá trị lớn nhất là 65535.
Ta có:
max_encoder mau mau
6
65535
*T 65535 T 2.6s
0,025*10
< => < =
f
Như vậy chọn T
mẫu
= 10 ms là hoàn toàn thỏa mãn điều kiện trên.
Sai số khi lấy mẫu với T
mẫu
= 10 ms:
Cứ 10 ms lấy mẫu sẽ đếm được count xung  1 phút = 60000 ms lấy mẫu

sẽ đếm được 6000*count xung. Mặt khác, mạch hồi tiếp Encorder cho 400
xung/vòng  Tốc độ đáp ứng của động cơ sẽ là:
6000*count/400 = 15*count (vòng/phút)
Do sử dụng biến đếm count kiểu nguyên nên sai số của count sẽ là ±1  sai
số của tốc độ đáp ứng là ±15 vòng/phút.
9
Điều khiển động cơ DC dùng PID
VẤN ĐỀ VÀ GIẢI PHÁP
VẤN ĐỀ VÀ GIẢI PHÁP
Trong phương pháp C – C khi hệ đáp ứng quá chậm (t
3
đủ lớn) thì sẽ
xảy ra trường hợp t
1
<0 [vì t
1
= (t
2
- ln(2) t
3
)/(1 - ln(2))]  Lấy gốc thời
gian tính toán tại t
0
để giảm thiểu trường hợp đặc biệt này.
Tính toán các thông số của phương pháp C – C khi lấy thời điểm bắt
đầu thực hiện bước nhảy t
0
của tín hiệu đầu vào làm gốc thời gian:
T0 = t0 – t0 = 0;
T2 = t2 - t0;

T3 = t3 - t0;
T1 = (T2 - 0.69315 * T3) * 0.30685;
t = T3 - T1;
tdel = T1 – T0 = T1;
K = B / A;
r = tdel / t;
Kp = (16 + 3 * r) / (12 * K * r);
tI = tdel * (32 + 6 * r) / (13 + 8 * r);
tD = tdel * 4 / (11 + 2 * r);
Ki = Kp / tI;
Kd = Kp * tD;
10
Điều khiển động cơ DC dùng PID
Đồ thị Teechart trên PC vẽ không kịp do hai nguyên nhân:
 Cứ 10ms vi điều khiển gửi thông số lên PC một lần là quá
nhanh nên card màn hình onboard không thể đáp ứng kịp
 Tăng thời gian giãn cách giữa các lần gửi lên 60ms.
 Các sự kiện trong lập trình đồ họa thuộc luồng GUI Thread
(luồng chính MainThread của C#), còn sự kiện
serialPort1_DataReceived thuộc luồng ThreadPool Thread
(tức non-GUI Thread). Khi chương trình C# chạy nó nhảy qua
nhảy lại giữa hai luồng này làm giảm tốc độ đáp ứng của
chương trình nên Teechart vẽ không kịp.
 Dùng thêm câu lệnh this.Invoke(new
EventHandler(communication)); trong hàm sự kiện
serialPort1_DataReceived để chuyển sự kiện này sang luồng
chính nhằm cải thiện tốc độ đáp ứng của chương trình.
Hàm lệ thuộc giữa giá trị PWM và tốc độ động cơ không phải là hàm
tuyến tính  Viết chương trình giao diện đồ thị Teechart biểu thị mối
quan hệ giữa PWM và tốc độ tương ứng của động cơ (dùng Timer tạo

sự kiện mỗi lần Timer_Tick thì tăng PWM lên 30 đơn vị và hồi tiếp
về tốc độ động cơ tương ứng để vẽ lên đồ thị Teechart).
Từ đồ thị Teechart ta gióng các giá trị tương ứng của PWM và tốc độ
động cơ. Trong giao diện của phương pháp C – C ta lập bảng tra các
giá trị tương ứng của SP (tốc độ đặt trên PC) và PWM (truyền xuống
điều khiển động cơ).
11
Điều khiển động cơ DC dùng PID
LƯU ĐỒ GIẢI THUẬT
LƯU ĐỒ GIẢI THUẬT
12
Điều khiển động cơ DC dùng PID
KẾT QUẢ ĐẠT ĐƯỢC
KẾT QUẢ ĐẠT ĐƯỢC
Phương pháp Z – N:
13
Điều khiển động cơ DC dùng PID
Từ đồ thị trên ta tính được T
gh
= (960-780)/60 = 3 (chia 60 vì đơn vị trục
thời gian là 60ms). Suy ra Kp, Ki, Kd như sau:
14
Điều khiển động cơ DC dùng PID
15
Điều khiển động cơ DC dùng PID
Phương pháp C – C với tín hiệu vào (SP) nhảy từ 1500 lên 2490:
16
Điều khiển động cơ DC dùng PID
Bộ thông số Kp, Ki, Kd dò được dựa theo kết quả bộ thông số của
phương pháp Z – N:

17
Điều khiển động cơ DC dùng PID
Bộ thông số Kp, Ki, Kd dò được dựa theo kết quả bộ thông số của
Bộ thông số Kp, Ki, Kd dò được dựa theo kết quả bộ thông số của
phương pháp C – C:
phương pháp C – C:
18
Điều khiển động cơ DC dùng PID
KẾT LUẬN VÀ ĐỀ NGHỊ
KẾT LUẬN VÀ ĐỀ NGHỊ
Nhận thấy kết quả K
P
, K
I
, K
D
ở hai phương pháp Z – N và C – C là
khác nhau, do đó khi tùy chỉnh nên sử dụng tối ưu nguyên lý điều
khiển và phải kiểm tra lại độ chắc chắn của từng phương pháp.
Thường thì Z – N dùng để tùy chỉnh theo thực nghiệm, còn C – C
dùng để tính toán kiểm nghiệm lại kết quả. Nhưng không hẳn là
phương pháp C – C đã có độ tin cậy cao hơn phương pháp thực
nghiệm Z – N.
Kết quả của hai phương pháp chỉ là bộ thông số thô, nhưng dựa vào
đó ta có thể dò tìm được các bộ thông số chuẩn khác nhau cho động
cơ. Như vậy bộ thông số PID của động cơ không phải là duy nhất, nó
còn phụ thuộc vào nhiều yếu tố khác nhau trong hệ thống điều khiển.
Source code và giao diện download tai đây:
/>19

×