Kết quả mô phỏng thu được như sau: Bằng cách thay đổi các hệ số Kp, Ki, Kd của bộ điều khiển PID, ta có thể đưa ra một số kết luận tổng quan nhất về ảnh hưởng của các khâu P,I,D đối với
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỈ THUẬT TP HỒ CHÍ MINH
KHOA: ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG
- -
BÁO CÁO
ĐỒ ÁN MÔN HỌC 1
ĐỀ TÀI : ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC
BẰNG THUẬT TOÁN PID
Thành phố Hồ Chí Minh – Tháng 1-2010
Trang 2ĐỀ TÀI: ĐIỀU KHIỂN TỐC ĐỘ ĐỌNG CƠ DC BẰNG THUẬT TOÁN PID
NỘI DUNG:
I- Giới thiệu chung :
1.Các phương pháp điều khiển tốc độ động cơ DC
1.1.Phương pháp điều khiển vòng hở
1.2.Phương pháp điều khiển vòng kin
2.Vấn đề ổn định tốc độ động cơ DC
3.Vấn đề lựa chọn bộ điều khiển cho động cơ DC
II- Thuật toán PID số
1.Lý thuyết về PID
2.Khảo sát sự ảnh hưởng của các khâu P,I,D bằng Simulink đối với đáp ứng của động cơ
DC
3.Tuning PID
III- Thiết kề bộ điều khiển PID số trên vi điều khiển AT89S52
1.Sơ đồ kết nối phần cứng
2.Giải thuật chương trình
3.Chương trinh C cho vi điều khiển
IV- Kết luận:
Trang 3
I- Giới thiệu chung:
Động cơ điện DC ngày nay vẫn còn được sử dụng rộng rãi trong nhiều lĩnh vực
khác nhau.Vấn đề ổn định tốc độ động cơ là cần thiết trong một số quá trinh công
nghiệp.Có rất nhiều phương pháp khác nhau để thực hiện yêu cầu này mà phương
pháp điều khiển tốc độ theo thuật toán PID là khá phổ biến
I.1.Khảo sát một số đăc tính của động cơ điện DC
Phương trình cân bằng điện áp phần ứng:
với e a = K e * *w
Phương trình cân bằng moment:
M dt = J + T L + B.w
Với Mdt = K m * * i a
Từ các phương trình trên , ta có hệ phương trình biến trạng thái của động cơ:
I.2.Động cơ DC với bộ điều khiển PID:
Hàm truyền của bộ PID: G PID (s) = Kp + Kd.s +
Hệ thống điều khiển động cơ được mô tả như sau:
-
Sơ đồ mô phỏng trên Simulink:
D U
T
Trang 5Kết quả mô phỏng thu được như sau:
Bằng cách thay đổi các hệ số Kp, Ki, Kd của bộ điều khiển PID, ta có thể đưa ra một số kết luận tổng quan nhất về ảnh hưởng của các khâu P,I,D đối với chất lượng đáp ứng của động
cơ như sau:
Ảnh hưởng của việc tăng các thông số Kp, Ki, Kd Chỉ số chất lượng Rise Time Độ vột lố Thời gian xác lập Sai số xác lập
Như vậy: Đáp ứng (tốc độ ) của động cơ với bộ điều khiển PID đã được cải thiện một cách
đáng kể về các chỉ số chất lượng như độ vọt lố , thời gian xác lập, sai số xác lập
Trang 6II- Thuật toán PID:
Setpoint (Giá trị đặt) là giá trị mong muốn đạt được tại ngõ ra của đối tượng điều khiển
Process variable (Biến quá trình ): tín hiệu hồi tiếp mà bộ
điều khiên nhận được từ đối
tượng điều khiển
Control variable : giá trị ngõ
ra của bộ điều khiển
Error: giá trị sai lệch giữa giá trị đặt và giá trị hiện tại ở ngõ ra của đối tượng điều khiển và bộ điều khiển PID luôn đưa ra tín hiệu điều khiển CV dựa trên giá trị của error Output : giá trị ngõ ra của đối tượng điều khiển
1) Hoạt động của khâu P: (khâu tỉ lệ) ,
khâu này luôn đưa ra tín hiệu điều khiển
luôn tỉ lệ với giá trị sai lệch:
Hàm truyền của khâu P liên tục:
Với Kp: hệ số tỉ lệ
error = setpoint – process variable
Pout: ngõ ra của bộ điều khiển P
Khi chuyến qua miền rời rạc thì ta có
phương trình : Pout(k) = Kp* error(k)
Như vậy, để thực hiện khâu P trong miền rời rạc ta làm như sau:
*Tiến hành lấy mẫu (thu thập dữ liệu tại ngõ ra và so sánh với giá trị đặt) tại thời điểm (k-1).Ts và thời điểm kTs
* Tính giá trị sai lệch error tại thời điểm kTs
* Đưa ra tín hiệu điều khiển theo nguyen tắc : Pout = Kp* error
Ta thấy tín hiệu Pout phụ thuộc vào hệ số Kp, hệ số nầy có được giá trị tối ưu nhờ quá
trình tunning bộ PID Nếu Kp quá lớn có thể làm cho hệ thống dao động có chu kì , gây
ra độ vọt lố cao.Nếu Kp quá nhỏ thì tạo ra tín hiệu Pout nhỏ Như vậy, khi thay đổi kp làm ảnh hưởng đến các chỉ tiêu chất lượng như độ vọt lố , giá trị offset
Trang 72.Hoạt động của khâu D ( khâu vi phân): luôn đưa ra tín hiệu điều khiển tỉ lệ với tốc độ
thay đổi của giá tri sai lệch
Dout(t) = Kd*
Rời rạc phương trình trên theo phương pháp sai phân lùi ta có:
Dout(k) = Kd *( e(k) – e(k-1) )
Như vậy, để thực hiện khâu D trong miền rời rạc ta tiến hành như sau:
* Lấy mẫu tại thời điểm k Ts rồi từ
đó tính giá trị sai lệch tại thời điểm
này
*Tính giá trị sai lệch giữa giá trị sai lệch tai thời điểm lấy mẫu và thời
điểm trước đó 1 chu kỳ lấy mẫu
Sự kết hợp của khâu P và D: ( bộ điều khiển PD):
Ngõ ra của bộ PD: CV=Kp*error(t) + Kd* = Kp*(Sp – Pv) + Kd* .
Tại thời điểm t =0 + , lúc này động cơ chưa quay, tức là Pv=0, trong khi đó Sp thay
đổi từ 0 đến giá trị đặt trước Sp , như vậy ngõ ra của bộ PD so với bộ P thì được cộng
thêm 1 đại lượng Kd* , và như vậy sẽ làm động cơ gia tốc nhanh hơn
Tại thời điểm t >0, lúc nầy động cơ đã quay , do Sp là hằng số nên
Kd* = - Kd* ,và như vậy khi động cơ đã gia tốc rồi khâu thì D có tác
dụng làm giảm Cv , chính đặc điểm này khâu D có thể giảm độ vọt lố của đáp ứng
Kết luận: Tác dụng của khâu D là khắc phục được hiện tượng vọt lố và dao động là
nhược điểm của khâu P nhưng về mặt toán học thì khâu D không có tác dụng làm
giảm offset ( giá trị xác lập của đáp ứng và giá trị đặt )
3.Hoạt động của khâu I: (khâu tích phân ): đưa ra tín hiệu điều khiển dựa trên giá trị
của sai lệch và thời gian xảy ra sai lệch
Trang 8Khi chuyển qua miền rời rạc : u(KT) = Ki dt + Ki dt hay: u(KT) = [u(k-1)T] + .(e[(k-1)T] + e[kT])
Như vậy, khâu I luôn đưa ra tín hiệu điều khiển Iout > 0 khi còn tồn tại giá tri sai lệch e(t) tại thời điểm hiện tại và thời điểm trước đó một chu kì lấy mẫu
Để thực hiện khâu I trong miền rời rạc ta tiến hành như sau:
Lấy mẫu tại thời điểm hiện tại , từ đó tính giá trị sai lệch tại thời điểm này
Lấy tổng giá tri sai lệch này và giá trị sai lệch trước đó rồi nhân cho Ki
Cộng dồn giá trị Iout này với Iout trước đó một chu kì lấy mẫu
Lưu giá trị sai lệch và Iout hiện tại cho lần tính tiếp theo
4 Bộ điều khiển PID: là sự kết hợp của các khâu P,I,D do đó nó khắc phục được
nhược điểm của mỗi khâu riêng lẻ
Như vậy , ngõ ra của bộ PID là:
CV(kT) = Kp*[ Sp – Pv(KT)] + Iout[(k-1)T] + Ki*( e(kT) +e[(k-1)T] ) +
+ Kd*[ e(kT) – e(k-1)T ]
Hiện tượng Reset Wind_up: thực chất đây là hiện tượng gây ra bởi đặc điểm hoạt động của khâu I Khâu I liên tục lấy tổng giá trị sai lệch tại thời điểm lấy mẫu hiện tại
và thời điểm trước đó, nhưng vì lý do nào đó mà khi bộ PID hoạt động, giá trị sai lệch error luôn luôn tồn tại thì khâu I sẽ đưa ra tín hiệu Iout rất lớn tức là giá trị Cv đặt lên
đối tượng điều khiển sẽ rất lớn, nhuwg thường thì các đối tượng điều khiển bị giới hạn
bởi một số đặc tính cơ, điện…
5 Vấn đề tunning bộ PID:
Tunning PID là tìm các thông sô Kp,Ki,Kd tối ưu sao cho đáp ứng tại ngõ ra thỏa mãn yêu cầu về chất lượng cho trước
Đối tượng điều khiển trong phạm vi đề tài là động cơ DC là đối tượng không phức tạp
lắm, tuy nhiên do chưa biết các thông số về đặc tính cơ , điện , do vậy việc tìm cụ thể
mô hình toán học của động cơ là khó khăn, do vậy sẽ tiến hành tunning PID cho động
cơ theo phương pháp điều chỉnh và quan sát
Tăng dần hệ số Kp , đến giá trị nào đó thì xảy ra vọt lố hoặc dao dộng của vận tốc
Tăng giá trị Kd lên để loại bỏ vọt lố do khâu P gây ra., nhưng vẫn còn tồn tại offset
Tăng dần giá trị Ki lên để loại bỏ giá trị offset ,nếu tăng Ki quá lớn sẽ gây ra dao động
Trang 9
C- Thiết kế bộ điều khiển PID số cho động cơ DC trên vi điều khiển AT89S52
Các đặc điểm về phần cứng của Vi điều khiển AT89S52 vừa đủ cho ứng dụng thiết
kế bộ PID cho động cơ DC, tuy nhiên do một số nguyên nhân chủ quan cũng như khách quan không cho phép thiết kế một cách hoàn hảo bộ PID, đó cũng là hạn chế của đề tài
I Sơ đồ nguyên lý phần cứng
1.Khối nguồn:
NGUON 5V
1 2
7805
AC 15v
1
2
2200uF
BRIDGE
4
2
0
D2 LED
2200uF
1K
2.Vi điều khiển AT89S52:
P0.0
P3.0
RN3
3 4 5 6 7 8 9
P0.7 P0.5 P1.6
RN1
2 3 4
1
P2.6 P3.6
P1.5
P3.1
P1.7
1uF
P0.2
RN1
2 3 4 5 6 7 8 1
9
P3.3
P1.4
P3.2
P2.7 P3.4
+Vcc
P1.2
P3.5
P0.1
10k
+Vcc
AT89S52
9
29 30 31
40 1
2 3 4 5 6 7 8
26 27 28
10 11 12 13 14 15 16
39 38 37 36 35 34 33 32
RST
PSEN ALE/PROG EA/VPP
VCC P1.0/T2
P1.1/T2-EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P0.4 P0.3
P0.6
+Vcc
P1.3
P1.0
+Vcc
P1.1
P2.5
RN2
2 3 4 5 6 7 8 1
9
Trang 103.Encorder:
Encoder có nhiệm vụ thu thập giá trị vận tốc của động cơ tại các thời điểm lấy mẫu dưới dạng xung , ngõ ra xung này được đưa vào chân T0 của bộ đếm C0 trên vi điều khiển Giá trị vận tốc được tính theo công thức:
n = ( vòng/ phút)
Trong đó N 0 =200 xung/ vòng
N: số xung đọc được trong khoảng thời gian Ts
Ngõ ra của encoder được đưa vào các cổng Smitch trigger trước khi
đưa vào chân T0 của bộ đếm
74HC14
ENCODER
1
2
3
0
TO
74HC14
+Vcc
Trang 114.Module hiển thị LCD:
0
HI
2
0
LCD-1602
5.Mạch công suất điều khiển động cơ:
1K
1k
P0.7
D4 LED
MOTOR DC
24V DC OPTO
10k 10K
H1061
+Vcc
P0.4
10K
Q1 C1815
DIODE
Trang 126.Khối nhập liệu (keypad 4x4)
P2.4
10 5
6
4 2
P2.7
P2.2
11
P2.3
P2.5
P2.6
12 9
16
P2.1
1
P2.0
13