Đ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.
ĐểtìmhệthứcPIDrờirạc,taxétđồthịsauđây:
Chúthích:‐đườngchấmgạchbiểudiễnvậntốccầnthiế
tv_set.
‐đườnggạchgạchbiểudiễnvậntốcthựctếcủađộngcơ.
Δt
0
e1
1
e2
e0
t (s)
V
2
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
4
‐đườnggạchđậmlàđồthịrờirạchóacủavậntốcđộng
cơ.
‐Δt làthờigianlấymẫu.
Thànhphầntíchphân:
e(t)dt=limΔt‐‐>0(Σe(t)Δt).DođókhilấygầnđúngΔt=ε>0,tacó:
e(t)dt≅Σe(i)Δt,i=0,1,2,3…
Thànhphầnviphân:
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.
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
5
DođótađiềukhiểnvậntốctheoxungPWM(PulseWidth
Modulation),cụthểlàdutycycle.
VậycácngõvàovàracủabộđiềukhiểnPIDnhưsau:
Ngõvào:e=vậntốchiệntại(v_cur)
‐vậntốcthiếtlập(v_set)
Ngõra:u=%dutycycle
Phụthuộcgiữa%dutyvàvậntốcđcgầnnhưtuyếntínhnên
đểđơngiản,tagiảsửnóhoàntoàntuyếntính.Vậy,ta
cóthểđiều
khiểnvậntốcđcthôngqua%duty.
3.Sơđồmạch:
Giớithiệucácthànhphầntrongmạchvàchứcnăng:
• ViđiềukhiểnchínhcủamạchđiềukhiểnlàPIC16F88của
Microchip.PIC16F88có7kênhADC10bit,1PWMđểđiều
khiểnđc.
Dođó,tasửdụng4kênhADCdùngđểnhậpdữliệu(hệsốPID
chỉnhbằngtayvàvậntốcmongmuốn).ChânADCnốivớimộtcầuphân
ápbằngbiếntrở.
Giátrịbiếntrởlàmthayđổiđiệnápdạnganalogtrên
chânADC,vàPIClấyđiệnápđóchuyểnthànhgiátrịdigital.Việctính
toáncụthểxinxemphần5củabáocáonày.
PWM(PulseWidth
Modulation)làmộtmodulemởrộngcủaPIC
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.
• Chip74LS06làcổngNOT.Mụcđíchđểkhuyếchđạixung
clockcủa
encodertrướckhiđưavàoT0CLKI.
• Mạchsửdụng2nguồn:5Vchocácchiphoạtđộngvà24Vcho
độngcơ.
Docáchđấudâydướiđây,tacóchânRB2củaPIC16F88=0/1thì
đcquaythuận/
nghịchchiềukimđồnghồ.
SauđâylàsơđồmạchđượcvẽbằngOrCAD9.2.ThứtựchânIC,
cáchnốidâycụthể,côngdụngcủacácchânđặcbiệtxinxemtrênsơđồ
mạchnày.
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
7
VCC
Tu 30 pico x 2
J3
Dong co
1
2
Bien tro
VCC
Quay phai
/Quay
trai
S1
SW DIP-2
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
3
6
7
8
9
10
11
12
13
Vss
VDD
OSC2/CLKOUT
MCLR/RA5/Vpp
OSC1/CLKIN
RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3
RA4/AN4/TOCKI
RB0/INT/CCP1
RB1/SDI/SDA
RB2
RB3/CCP1/PGM
RB4/SCK/SCL
RB5
RB6/AN5/T1CLKI
RB7/AN6
C4
R5
100
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
11Wednesday , April 27, 2005
Title
Size Document Number Rev
Date: Sheet
of
U2
L293
2
7
10
15
1
9
3
6
11
14
4
5
13
12
16
8
1A
2A
3A
4A
1/2EN
3/4EN
1Y
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
D1
He so Ki
VCC
VCC_CIRCLE
1= 5V
2=24V
3= mass
4MHz
He so Kp
VCC
VCC
C1
R1
R
D4
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
8
Mạchcó2chếđộhoạtđộng:tựđộngvàbằngtay.
Chếđộtựđộng:cáchệsốKp,Ki,Kdđượclậptrìnhsẵn.Cáchệsốnàycóđượcsau
quátrìnhthựcnghiệmtheophươngphápthứhaicủa
Ziegler‐Nichols.(thựctếcó
thểxemnhưđâylàphươngphápgiảZiegler‐Nichols.Lído:việcxácđịnhchukì
củadaođộngkhiđốitượngbịdaođộngtheophươngphápZiegler‐nicholslàrất
khólấyđượcm
ộtcáchchínhxác)
Chếđộbằngtay:cáchệsốKp,Ki,Kdcóđượctừcácbiếntrở,dongườidùngđiều
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.
9
Start
Quay
t
r
ái ?
PIN_B2 = 0
Quay trái
PIN_B2 =1
Quay phải
PID tự
động ?
Kp= Kp_t;
Ki= Ki_t;
Kd= Kd_t;
Kp, Ki, Kd lấy từ các
biến trở vào
(xem phần tính toán)
Lấy tốc độ yêu
cầu (v_set) từ
biến trở
Lấy tốc độ từ
encoder
(v_cur)
Tính toán các thông số :
e2= v_set- v_cur ;
e_sum= e2 + e1;
e_del= e2 - e1;
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.
b. Đọcvàtínhvậntốcthựcsựcủađộngcơtừencoder:
TasửdụngTimer0ởchếđộcountervớixungclockcóđượctừencoder.
Timer1ởchếđộtimer16bit.
Encoder200
xung/vòng
Trướctiênđếmsốxungtrong1000μs:timer1sẽtrànsau1000μs,
trongthờigianđó,timer0đếmsốxungnhậnđược.Khitimer1tràn,
chươngtrìnhthựchiệnngắt.GiátrịtừTimer0chínhlàsốxungtrong1000
μs.TagọigiátrịnàylàT0.
Nhưvậy,sốvòng/phút=(sốxung/200)/(60*1000)ms
=(sốxung/ms)*12.10
6
hayvậntốcđcv_cur=T0*12.10
6
(vòng/phút)
c.HệthứcPIDcuốicùng:
duty=duty+Kp*e2+Ki*e_sum+Kd*e_de l
Điều khiển vận tốc động cơ DC dùng bộ điều khiển PID.
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
tháibền
KP Giảm Tăng Ítthayđổi Giảm
KI Giảm Tăng Tăng Triệttiêu
KD Ítthayđổi Tăng Tăng Ítthayđổi
Tathấyphươngphápnày cónhiềunhượcđiểmnhư:khôngcócơsở
toánhọcvữngchắc,khôngtốiưu(vìtấtcảđềuchọnhếtsứcngẫunhiên
trongmộtvùnggiá
trịnào đó).Tuyvậy,độngcơcóthểcóđápứngtốt,và
độquáđiềuchỉnhtheonhưwebsitetrênđưaralàkhôngquá25%(trong
khiphươngphápkhácthìthườngcóđộquáđiềuchỉnh(hayvọt
lố)chừng
40%).ĐápứngcủađộngcơsẽcàngʺtốtʺnếuthờigianlấymẫuPIDcàng
nhỏ.