Đ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 Wonbinbk@gmail.com 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ừtrangwebhttp://www.acroname.com/brainstem/ref/h/i/iA.html) Đầ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ỏ. . Đ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ều khiển PIDvàviệcrờirạchóanó: Trongmiềnthờigian, bộ điều khiển PIDđượcmôtảbằngmôhìnhvào ra: =+. Chúthích:‐đườngchấmgạchbiểudiễn vận tốc cầnthiế tv_set. ‐đườnggạchgạchbiểudiễn vận tốc thựctếcủa động cơ. Δ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 Khiđó,côngthứctrênđượcviếtlạinhưsau: u(i)=Kp*e+Ki*e_sum+Kd*delta_e điều kiệnbiên:u(0)=duty>0. 2. Đốitượng điều khiển: Đốitượng điều khiển là vận tốc động cơ DC (đc).Tabiết vận tốc động cơ DC phụ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