2013.11.14 bai tn vi dieu khien pid dong co dc

9
FL061 KHOA CƠ KHÍ BỘ MÔN CƠ ĐIỆN TỬ Điều Khiển Tốc Độ Động Cơ DC Bằng 1. Gii !hi"u PID là cách viết tắc của các từ Prootio!al "t# l$%& I!t'(ral hà-%. / 2 3t hi$! r3t l* !h4!( +ế! !a PID v5! là (i i th 7t + tro!( các >!( <?!( +i8 9hi:! t@ + !(. B: (i ,! cE cái hi: r PID t i J <=!( - t v) <? +i8 9hi:! v tr) của - t car "2'% tr ! 2' "+Q chGi...% cE (ắ! - t + !( cG DC. B !( cG i!h ra - t l@c +: - t +4M!( thN!( !h4 tro!( hU!h 6. HU!h 1. Ví dụ điều khiển vị trí xe trên đường thẳng Vi F là l@c <o + !( cG t,o ra +i8 9hi:! 2'. Wa! +X 2' Y v tr) l@c F "- t cách t@ + !(% +: +R 2' +ế! + !( v tr) O vSi các !ha!h "[a t r' o! '%& \! + !h " -all ov'r hot%. ] t +i8 r3t t@ !hi !& !ế v tr) hi$! t,i của 2' r3t 2a v tr) -o 9hác ai ^"'rror% lS!& ch !( ta cX! tác + !( l@c F lS! +: !ha!h +G! (i ! +: c !( th>c hEa _ t4Y!( !à là <=!( ` a! h$ t ế! t)!hZ F Kb' "1% /ro!( +E K là - t h !( ^ <4G!( !ào +E -à ch !( ta (Vi là h$ ^ cX! +i8 9hi:! t>c 9ho !( cách từ +i:- O +ế! v tr) hi$! t,i c +4a ' tiế! v8 0 cà!( !ha!h cà!( t^t. d rà!( !ế K lS! thU F ce!( tiế! v8 v tr) O. / !hi !& l@c F ` á lS! J (ia t^c cho 2' r3t ! F -a%. Khi 2' + +ế! v tr) O "t>c ' 0%& thU t l@c F 0 "vU F Kb t)!h 2' v5! tiế t?c tiế! v8 ! h i và l$ch +i:- O v8 ! h Fac lt o[ ]'cha!ical !(i!''ri!( jHC]k/ 1

Upload: cao-quang-hung

Post on 04-Nov-2015

212 views

Category:

Documents


1 download

DESCRIPTION

sdfs

TRANSCRIPT

TRNG AI HOC BACH

KHOA C KHB MN C IN T

iu Khin Tc ng C DC Bng PID

1. Gii thiuPID l cch vit tc ca cc t Propotional (t l), Integral (tch phn) v Derivative (o hm). Tuy xut hin rt lu nhng n nay PID vn l gii thut iu khin c dng nhiu nht trong cc ng dng iu khin t ng. gip bn c cihiu r hn bn cht ca gii thut PID ti s dng mt v d iu khin v tr ca mt car (xe) trn ng thng. Gi s bn c mt xe ( chi...) c gn mt ng c DC. ng c sinh ra mt lc y xe chy ti hoc lui trn mt ng thng nh trong hnh 6.

Hnh 1.V d iu khin v tr xe trn ng thngGi F l lc do ng c to ra iu khin xe. Ban u xe v tr A, nhim v t ra l iu khin lc F (mt cch t ng) y xe n ng v tr O vi cc yu cu: chnh xc (accurate), nhanh (fast response), n nh (small overshot).Mt iu rt t nhin, nu v tr hin ti ca xe rt xa v tr mong mun (im O), hay ni cch khc sai s(error) ln, chng ta cn tc ng lc F ln nhanh chng a xe v O. Mt cch n gin cng thc ha tng ny l dng quan h tuyn tnh:F=Kp*e (1)Trong Kp l mt hng s dng no m chng ta gi l h s P (Propotional gain), e l sai s cn iu khin tc khong cch t im O n v tr hin ti ca xe. Mc tiu iu khin l a e tin v 0 cng nhanh cng tt. R rng nu Kp ln th F cng s ln v xe rt nhanh chng tin v v tr O. Tuy nhin, lc F qu ln s gia tc cho xe rt nhanh (nh lut II ca Newton: F=ma). Khi xe n v tr O (tc e=0), th tuy lc F=0 (v F=Kp*e=F=Kp*0) nhng do qun tnh xe vn tip tc tin v bn phi v lch im O v bn phi, sai s e li tr nn khc 0, gi tr sai s lc ny c gi l overshot (vt qu). Lc ny, sai s e l s m, lc F li xut hin nhng vi chiu ngc li ko xe v li im O. Nhng mt ln na, do Kp ln nn gi tr lc F cng ln v c th ko xe lch v bn tri im O. Qu trnh c tip din, xe c mi dao ng quanh im O. C trng hp xe dao ng cng ngy xng xa im O. B iu khin lc ny c ni l khng n nh. Mt xut nhm gim overshot ca xe l s dng mtthnh phnthng trong b iu khin. S rt l tng nu khi xe ang xa im O, b iu khin sinh ra lc F ln nhng khi xe tin gn n im O ththnh phnthng s gim tc xe li. Chng ta u bit khi mt vt dao ng quanh 1 im th vt c vn tc cao nht tm dao ng (im O). Ni mt cch khc, gn im O sai s e ca xe thay i nhanh nht (cn phn bit: e thay i nhanh nht khng phi e ln nht). Mt khc, tc thay i ca e c th tnh bng o hm ca bin ny theo thi gian. Nh vy, khi xe t A tin v gn O, o hm ca sai s e tng gi tr nhng ngc chiu ca lc F (v e ang gim nhanh dn). Nu s dng o hmlm thnh phnthng th c th gim c overshot ca xe.Thnh phnthng ny chnh l thnh phn D (Derivative) trong b iu khin PID m chng ta ang kho st. Thm thnh phn D ny vo b iu khin P hin ti, chng ta thu c b iu khin PD nhu sau:F=Kp*e + Kd*(de/dt) (2)Trong (de/dt) l vn tc thay i ca sai s e v Kd l mt hng s khng m gi l h s D (Derivative gain).S hin din ca thnh phn D lm gim overshot ca xe, khi xe tin gn v O, lc F gm 2 thnh phn Kp*e > =0 (P) v Kd*(de/dt) =2000) display_NegNegNeg(); else { a=n/1000; b=(n%1000)/100; c=((n%1000)%100)/10; d=((n%1000)%100)%10; if(a==1) display_digit4(); display_digit3(b); display_digit2(c); display_digit1(d); } }void init_PID (void){ #define T0 0.1 kp=40; kd=0.1; ki=0.1; a0 = kp + ki*T0/2.0 + kd/T0;//1 a1 = -kp + ki*T0/2.0 - 2*kd/T0;//-1 a2 = kd/T0;//0}void main(){ init_systems(); init_PID(); //ADC setup_adc(ADC_CLOCK_INTERNAL ); setup_adc_ports (PIN_A0); //AN0 set_adc_channel(0); delay_us(10); while(true) { v_set = read_adc()/3; // max = 256/3 = 85 display_encoder(speed); run_motor(speed); delay_ms(100); }}