Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID. 3
CơsởLýthuyết
1. ThuậtđiềukhiểnPIDvàviệcrờirạchóanó:
Trongmiềnthờigian,bộđiềukhiểnPIDđượcmôtảbằngmôhìnhvào
ra:
=+ +
∫
0
()
() () ()
t
Pi d
de t
Ut Ket K etdt K
dt
trongđóe(t)làtínhiệungõvào,u(t)làtínhiệungõracủabộđiều
khiển.
Tuynhiên,đốivớiViĐiềukhiểnnóichung,việctínhtoáncácthành
phầnP,I,D‐nóicáchkháclàtínhcác
tíchphânhayđạohàmtrongcông
thứctrênlàkhôngthựchiệnđược.Lýdo:CPUkhôngthểtínhtoán
chínhxáctớimứcΔt=0,nghĩalàkhôngliêntục.
Dođó,tachỉcóthểtínhtoángầnđúng
bằngcáchtachoΔt=εrất
nhỏnhưnglớnhơn0.
de(t)/dt=lim
Δt‐‐>0{[e(t2)‐e(t1)]/Δt}.DođókhilấygầnđúngΔt=ε>0,
tacó:
de(t)/dt=[e(i+1)‐e(i)]/Δt
,i=0,1,2,3…
Tómlại,tacó:
u(i)=Kp*e+Kd*[e(i+1)‐e(i)]/
Δt+Ki*Σe(i)Δt
Đặt e_delta(i+1)=e(i+1)‐e(i)
e_sum(i+1)=Σe(i)=e_sum(i)+e(i+1)
Trongcôngthứctrên,thờigiansamplingtimeΔtlàrấtnhỏ,tabỏ
quaΔt.Saunày,khitìmcáchệsốKd,Kib
ằngthựcnghiệm,KdvàKi
lúcđóđãbaogồmcảΔt.
Khiđó,côngthứctrênđượcviếtlạinhưsau:
u(i)=Kp*e+Ki*e_sum+Kd*delta_e
điềukiệnbiên:u(0)=duty>0.
2. Đốitượngđiềukhiển:
ĐốitượngđiềukhiểnlàvậntốcđộngcơDC(đc).Tabiếtvậntốc
độngcơDCphụthuộcdòngđiệnhayđiệnápmàtacấpchonó(dĩ
nhiênphảinằm
trongkhoảngchophépcủađc).Cụthểởđâysử
dụngđc24VDC,dođóđiệnápcấpkhôngđượcquá24V.Tuynhiên,
việccấpápchođctrongmộtkhoảngrộngtừ0đến24Vlàkhókhăn.
16F88.Nócóchứcnăngtạoramộtdãyxungcó%dutyvàtầnsốxácđịnh.
Cácgiátrị%dutyvàtầnsốcủaxunghoàntoàncóthểhiệu
chỉnhbằng
phầnmềm.
ChânT0CLKIcủaPIC16F88làchânvàocủaxungclockbộđịnhthời
0.Chânnàyđượcnốivớidâytínhiệucủaencoder.Timer0lúcnàycóchức
năngcounterđếm
sốxungpháttừencoder.Timer1sẽđịnhthờitrong1
khoảngthờigian.KhiTimer1tràn,talấygiátrịcủaTimer0.Dựavàogiátrị
duty
Chu kỳ T
Tần số f = 1/T
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID. 6
này,cóthểtínhđượcvậntốcđcởthờiđiểmnày.Phầntínhtoánxemmục
5.
• DriverđiềukhiểnđclàchipL293củaTexasInstruments.Chip
nàycócácđặc điểmsau:
Dòngtốiđa1A,
quádòng1.2A.
Điệnáptốiđalà33V.
Cóthểláicùnglúc2đcDC.Tuynhiên,tachỉsửdụng1cầuHđể
điềukhiển1đc.TachọncầuH1cócácchânngõvàolà
chânenable1/2EN,
chânchọnchiềuquay1A,2A.Cácchânralà1Y,2Y.Chân1/2ENđượcnối
vớichâncấpxungPWMcủaPIC16F88.
1
2
4
3
U15
7406
14 7
1
3
5
9
11
13
2
4
6
8
10
12
U16
PIC16F88
5
14
15
4
16
17
18
1
2
D3
VCC
Dieu
chinh
toc do
mong
muon
VCC
J1
Encoder
1
2
3
VCC_CIRCLE
J2
Nguon
1
2
3
Y1
PWM
R3
100
SW1
Reset
VCC
version2 by
DC Motor controller sche.
B
2Y
3Y
4Y
GND
GND
GND
GND
VCC1
VCC2
VCC_CIRCLE
1/4=Open/Close >PID tu dong./bang
tay.
2/3=Open/Close >quay trai/quay phai.
1=mass
2=fase A
3=5V
D2
C2
VCC
Encoder
feedback
R4
100
He so Kd
PHAN HANG DUY THAI 20202382
R6
100
R2
1K
VCC
chỉnhtùyý.
Trongcảhaichếđộ,vậntốcđượcthiếtlậpthôngquabiến
trở.
4.Sơlượcvềgiảithuậtlậptrình:
Cáckýhiệu:
Kp,Ki,KdlầnlượtlàcáchệsốKp,Ki,Kd.
Kp_t, Ki_t, Kd_t lần lượt là các giá trị tìmđược từ thực
nghiệm.
e2làsailệchhiệntại(tronglúcđang
xét).
e1làsailệchngaytrướcđó.
e_sumlàtổngcủatấtcảcácsailệchtừlúcbắtđầuđếnthời
điểmđangxét.
e_dellàhiệusốcủahaisailệche2
vàe1,haynóicáchkhác,đó
làđộbiếnthiênsailệch.
V_setlàtốcđộđượcthiếtlậpquabiếntrở.
V_curlàtốcđộhiệntạiđọcđượctừencoder.
Dutylàsốph ầntrămduty
cyclecủaxungPWMcầncungcấp.
Banđầu: Dutyphảicómộtgiátrịkhác0,mụcđíchđểđộngcơthắnglựcquán
tính.
e1=e2=0
e_sum=0
e_del=0
Theođótacólưuđồsau:
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
e1=e2;
duty= duty + Kp*e2 + Ki*e_sum + Kd*e_del;
// Day la he thuc tinh PID roi rac.
Xuất xung PWM với duty tính được
No
Yes
No
Yes
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID. 10
5.Mộtsốtínhtoántronglậptrình
a. Đọcvàtínhgiátrịtừbiếntrở:
• ViĐiềukhiểnPIC16F88củaMicrochip™cótấtcả7kênhADC10bit,
nằmtrêncácchânAN0đếnAN6.
• Biếntrởsửdụngtrongmạch
làloạiVolume10KΩ,cácbi ếntrởhạndòng
cótrịsốrấtnhỏ(330Ω)nêncóthểbỏquakhitínhtoán.
• ResolutioncủaADClà10bit=1024.GiátrịADCđọcvàolàtừ0Æ1023
• Vớicác
biếntrởđiềuchỉnhgiátrịKp,Ki,Kd,tagángiátrịtươngứnglà
0Æ100.Nhưvậy,bướcthayđổinhỏnhấtlà100/1024=0.0976.Điềunày
cónghĩalàKx=giátrịđọctừADC
*0.0976.
• Tương tự như vậy, với biến trở thiết lập tốcđộ, ta gán gi á trị tốcđộ
tươngứnglà0Æ300vòng/phút.Bướcthayđổinhỏnhấtlà300/1024=
0.293.Nghĩalà
tốcđộv_set=giátrịđọctừADC*0.293.
11
6.Cáchđiềuchỉnhcáchệsố:
(Phầnnàyđượcthamkhảotrựctiếptừtrangweb />
ĐầutiêntachỉnhchoKp=1vàKd,Ki=0.NghĩalàchỉđiềukhiểnP.
SauđótatăngKplêndầndần,vàquansátđộngcơ.Khithấyđộngʺdao
độngʺ,nghĩalànólúcnhanh
lúcchậm,talấyKptạiđónhânvới0.6để
tínhtoán.NghĩalàKp_t=0.6*Kp_daođộng.
SauđótatăngKdlênd ầndần(giữnguyênKp),nếuKdquálớnsẽ
làmđộngcơbịdao
độngmạnh.GiảmKdlạichođếnkhiđộngcơhếtdao
động.
ĐiềuchỉnhKilàkhónhất,bắtđầutừgiátrịrấtnhỏ,vídụlấyKi=1/
Kdchẳnghạn.Hệsố
Kikhông cầnlớnvìđộngcơtựnóđãchứathành
phầnKi (thểhiệnởmoment quán tính, hay sức ì củađộng c ơ). Dođó,
thườngvớiđốitượngđiềukhiểnlànhiệtđộhayđộng
cơ(cácđốitượngcó
quántính)thìchỉcầnbộđiềukhiểnPDlàđủ.
BảngsauchỉrõcácảnhhưởngcủaKp,Ki,Kdđếncácđặctínhcủahệ
thống:
Đápứngcủahệthống Thời gian
tăng
Vọtlố Thời gianổn
định
Sai lệch so với trạng