You are on page 1of 16

I HC BCH KHOA H NI

VIN IN T - VIN THNG


----------

Phng php iu xung PWM iu khin ng c mt chiu DC

Nhm 21 Sinh vin: TRN XUN TRNG 20092932

MC LC V. iu xung (PWM) iu khin ng c

1.Phng php iu xung PWM l g?........................1 2.Nguyn l ca xung PWM .. 3.Cc cch to xung PWM iu khin 4.PWM trong iu khin ng c

1.Phng php iu xung PWM l g? -Phng php iu ch PWM c tn ting anh l Pulse Width Modulation l phng php iu chnh in p ra ti hay ni cch khc l phng php iu ch da trn s thay i rng ca chui xung vung dm m s thay i in p ra. Cc PWM khi bin i th c cng 1 tn s v khc nhau v rng ca sn dng hay hoc l sn m

Trn l th dng xung khi iu khin bng PWM. Vi rng xung u ra tng ng v c tnh bng %. Ty thch do chng ta iu khin. 2.Nguyn l ca xung PWM

y l phng php c thc hin theo nguyn tc ng ngt ngun ci ti v mt cch c chu k theo lut iu chnh thi gian ng ct. Phn t thc hin nhin v trong mch cc van bn dn. Xt hot ng ng ct ca mt van bn dn. Dng van ng ct bng Mosfet

Gin xung

Trn l mch nguyn l iu khin ti bng PWM v gin xung ca chn iu khin v dng in p u ra khi dng PWM. * Nguyn l : Trong khong thi gian 0 - to ta cho van G m ton b in p ngun Ud c a ra ti. Cn trong khong thi gian to T cho van G kha, ct ngun cung cp cho ti. V vy vi to thay i t 0 cho n T ta s cung cp ton b , mt phn hay kha hon ton in p cung cp cho ti. + Cng thc tnh gi tr trung bnh ca in p ra ti : Gi t1 l thi gian xung sn dng (kha m ) cn T l thi gian ca c sn m v dng, Umax l in p ngun cung cp cho ti. ==> Ud = Umax.( t1/T) (V) hay Ud = Umax.D

vi D = t1/T l h s iu chnh v c tnh bng % tc l PWM Nh vy ta nhn trn hnh th dng iu ch xung th ta c : in p trng bnh trn ti s l : + Ud = 12.20% = 2.4V ( vi D = 20%) + Ud = 12.40% = 4.8V (Vi D = 40%) + Ud = 12.90% = 10.8V (Vi D = 90%) 3.Cc cch to xung PWM iu khin to c ra PWM th hin nay c hai cch thng dng : Bng phn cng v bng phn mm. Trong phn cng c th to bng phng php so snh hay l t trc tip t cc IC dao ng to

xung vung nh : 555, LM556...Trong phn mn c to bng cc chip c th lp trnh c. To bng phn mn th chnh xc cao hn l to bng phn cng,nn ngi ta hay s dng phn mn to PWM.Trong phm vi yu cu ca ti nhm chng em chn cch hai,c th l lp trnh cho PIC 16F877A. a) To bng phng php so snh to c bng phng php so snh th cn 2 iu kin sau y : + Tn hiu rng ca : Xc nh tn s ca PWM + Tn hiu ta l tinshieuej xc nh mc cng sut iu ch (Tn hiu DC) Xt s mch sau :

Vi tn s xc nh c l f = 1/(ln.C1.(R1+2R2) nn ch cn iu chnh R2 l c th thay i rng xung d dng. Ngoi 555 ra cn rt nhiu cc IC to xung vung khc.

c) To xung vung bng phn mm y l cch ti u trong cc cch to c xung vung. Vi to bng phn mn cho chnh xc cao v tn s v PWM. Vi li mch ca chng ta n gin i rt nhiu. Xung ny c to da trn xung nhp ca CPU. C th xt vi PIC 16F877A: 3.1.2 iu khin tc ng c DC bng phng php PWM i vi iu khin tc ng c DC trong robot, phng php c s dng ph bin nht l iu ch rng xung (Pulse Width Modulation) hay c gi tt l iu xung, bm xung hoc PWM. Nguyn l ca phng php ny l bt tt nhanh ngun in cp vo ng c to ra mt tn hiu xung. Khi vic bt tt tn s ln (thng s dng t 1kHz n 20kHz), ng c s chy vi 1 tc n nh nh moment quay. Thi gian cp ngun cho ng c l T-on, thi gian tt ngun ng c l T-off. Vic thay i thi gian T-on v T-off lm thay i in p hiu dng cp cho ng c. i vi ng c DC, tc ng c tng i t l thun vi in p cp cho ng c. V vy, bng cch thay i rng ca xung, ta thay i c tc ca ng c DC. i lng biu din mi quan h gia T-on v T-off c gi l duty cycle: duty_cycle = Ton / ( Ton + Toff ) V d: Ta cp ngun ng c trong 0.8ms, sau tt 0.2ms. Nh vy: T-on = 0.8ms; T-off = 1ms. Tn s PWM l:

f = 1 / ( Ton + Toff ) = 1 / ( 0.8ms + 0.2ms ) = 1/1ms = 1KHz duty_cycle = Ton / ( Ton + Toff ) = 0.8 / ( 0.8 + 0.2 ) = 0.8 = 80%

V tc ng c DC t l vi duty cycle nn tc ng c t tng ng 80% tc ti a.

Tnh ton duty cycle iu khin tc ng c DC

3.1.3 iu xung PWM dng vi iu khin iu xung PWM bng phn mm: iu xung PWM mt cch n gin l a 1 chn no ca vi iu khin ln mc 1, sau a xung mc 0. Cng vic ny c lp i lp li lin tc s to ra xung, v tc ca ng c s tng ng vi duty cycle. V d: iu xung trn chn A0 : Code RA0=1; Delay_ms(Ton); RA0=0;

Delay_ms(Toff);

Tuy nhin, nu thc hin bng cch ny th vi iu khin s lun dnh thi gian cho vic iu xung PWM. Do , cc cng vic khc nh nhn tn hiu t cm bin, iu khin cc c cu s b nh hng.

iu xung PWM bng phn cng gii quyt vn vic iu xung PWM bng phn mm chim phn ln thi gian hot ng ca vi iu khin, PIC16F877A c h tr 2 knh iu xung bng phn cng 2 chn C1 (CCP2) v C2(CCP1) s dng TIMER2. Ngha l, khi ta khai bo iu xung PWM mt tn s v duty cycle no th vi iu khin s thc hin cng vic xut xung mt cch lin tc v t ng cho n khi ta thay i cc gi tr khai bo. Khi , ta c th lm cc cng vic khc mt cch d dng m khng phi mt thi gian cho vic duy tr xung PWM.

Cc hm h tr vic iu xung bng phn cng ca CCS: Ghi ch: Ch cp n cc i s ca cc hm c phc v cho vic iu xung PWM. o setup_timer_2 (mode, period, postscale) mode: T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16 period: 0-255 postscale: 1

Tn s iu xung PWM: f = fosc / [ 4*mode*(period+1) ] o setup_ccp1(mode) v setup_ccp2(mode) mode: CCP_PWM: chn ch PWM. CCP_OFF: tt ch PWM. o set_pwm1_duty(value) v set_pwm2_duty(value) Nu value l gi tr kiu int 8bit: duty_cycle = value / ( period+1 ) Nu value l gi tr long int 16bit: duty_cycle = value&1023 / [4*( period+1 )] Nu khng cn iu xung qu mn th nn iu xung gi tr value 8bit cho n gin. V d: Ta mun iu xung PWM vi tn s 10kHz vi tn s thch anh (fosc) s dng l 20MHz (value 8bit). f=fosc/[4*mode*(period+1)] <=> 10000 =20000000/ [ 4*mode*(period+1) ] <=> mode(period+1) = 500 Vi mode = [1,4,16] v period = 0-255 ta c th chn: o mode = 4; period = 124 o mode = 16; period = 32

cho vic iu xung c mn (chn c nhiu gi tr duty cycle) ta chn mode = 4 v period = 124. Nh vy, duty_cycle t 0% n 100% ta cho value t 0 n 125. o value = 30 => duty_cycle = 30 / ( 124+1 ) = 0.32 = 32% o value = 63 => duty_cycle = 63 / ( 124+1 ) = 0.504 = 50.4% o value = 113 => duty_cycle = 113 / ( 124+1 ) = 0.904 = 90.4%

Code: setup_timer_2(T2_DIV_BY_4,124,1); setup_ccp1(CCP_PWM); set_pwm1_duty(30);

S dng CCP1 v CCP2 cho ng c tri v ng c phi, ta c th iu khin c tc ca 2 ng c ph hp trng thi lch khi vch trng ca robot. Cc chng trnh con tham kho: vic lp trnh c d dng, ta nn to cc chng trnh con x l tc . Sau y l chng trnh tham kho ca hm speed. o Speed (tc ng c tri, tc ng c phi) Tc : -100 n 100 (chy ngc 100% n chy thun 100%)

V d: speed(80,60) => ng c tri chy 80%, phi 60% // Cc hm h tr void left_motor_forward(int value) { MOTOR_LEFT_DIR=0; setup_timer_2(T2_DIV_BY_4,124,1); setup_ccp2(CCP_PWM); set_pwm2_duty(value); } void right_motor_forward(int value) { MOTOR_RIGHT_DIR=0; setup_timer_2(T2_DIV_BY_4,124,1); setup_ccp1(CCP_PWM); set_pwm1_duty(value); } void left_motor_reverse(int value) { MOTOR_LEFT_DIR=1; setup_timer_2(T2_DIV_BY_4,124,1); setup_ccp2(CCP_PWM); // Dieu xung 10kHz // Dieu xung 10kHz // Dieu xung 10kHz

set_pwm2_duty(value); } void right_motor_reverse(int value) { MOTOR_RIGHT_DIR=1; setup_timer_2(T2_DIV_BY_4,124,1); setup_ccp1(CCP_PWM); set_pwm1_duty(value); } void left_motor_stop() { setup_ccp1(CCP_OFF); } void right_motor_stop() { setup_ccp1(CCP_OFF); } // Chng trnh x l tc 2 ng c // 0:Stop,100:FORWARD 100%,-100:Reverse 100% void speed (signed int left_motor_speed, signed int right_motor_speed) // Dieu xung 10kHz

{ int left_pwm_value=0,right_pwm_value=0; /* Left motor */ if( left_motor_speed >= 0 ) { left_pwm_value = 1.25*left_motor_speed; // (125*left_motor_speed/100) left_motor_forward(left_pwm_value); } else { left_motor_speed = -left_motor_speed; left_pwm_value = 1.25*left_motor_speed; // (125*left_motor_speed/100) left_motor_reverse(left_pwm_value); } /* Right motor */ if( right_motor_speed >= 0 ) { right_pwm_value = 1.25*right_motor_speed; // (125*left_motor_speed/100) right_motor_forward(right_pwm_value);

} else { right_motor_speed = -right_motor_speed; right_pwm_value = 1.25*right_motor_speed; // (125*left_motor_speed/100) right_motor_reverse(right_pwm_value); } } 4.PWM trong iu khin ng c Trong ng c : iu m chng ta d nhn thy rng l PWM rt hay c s dng trong ng c iu khin ng c nh l nhanh , chm, thun ,nghch v n nh tc cho n. Ci ny c ng dng nhiu trong iu khin ng c 1 chiu. v s nguyn l ca mch iu khin ng c DC l :

y l mch n gin iu khin ng c. Nu mun iu khin ng c quay thun quay ngc th phi dng n cu H.

You might also like