BAI_007_VXL_PIC_PWM

  • Upload
    kspro

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    1/8

    BI7

    GII THIU KHO ST PWM

    S KHI PWM TNH CHU K XUNG PWM TNH H S CHU K PWM

    TP LNH C CHO PWM LNH NH CU HNH KHI CCP LNH THIT LP H S CHU K LNH SETUP_TIMER_2 - LNH NH CU HNH CHO TIMER_2 LNH SET_TIMERx(value) - LNH THIT LP GI TR BT U CHO TIMER

    CC CHNG TRNH NG DNG PWM

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    2/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    86 Bai 7: PWM cua PIC va lap trnh C.

    I. GII THIUVi iu khinPIC h 16F877A c 2b PWM dng iu khin tc ng c DC.

    Phn ny s kho st chi tit khi PWM ca PIC v tp lnh lp trnh C cho PWM.

    II. KHO ST PWM1. S KHI PWM

    PWM ca PIC16F877A c s khi nh hnh 7-1:

    Hnh7-1:

    S khi caPWM PIC 16F877A.

    Khi PWM gm c 2 mch so snh: mch so snh 8 bit vi mch sosnh 10 bit.

    Mch so snh 8 bit s so snh gi tr m ca timer2 vi gi tr ca thanh ghi PR2 (period register),gi tr trong timer2 tng t gi tr t trc cho n khi bng gi tr ca PR2 th mch so snh s set flip flopRS lm ng ra CCPx ln mc1. ng thi np gi tr 10 bit t thanh ghi CCPRxL sang thanh ghi CCPRxH,timer2 b reset v bt u m li cho n khi gi tr ca timer2 bng gi tr ca CCPRxH th mch so snhs reset flip flop RS lm ng ra CCPx v mc 0. Qu trnh ny lp li.

    Dng sng iu ch PWM nh hnh 7-2:

    Hnh 7-1:Dng sng PWM.

    Chu k khng thay i, mun thay i thi gian xung mc 1 th ta thay i h s chu k (dutycycle). Khi h s chu k thay i th in p hay dng trung bnh thay i.

    H s chu k cng ln th dng trung bnh cng ln, nu iu khin ng c s lm thay i tc .

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    3/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    Bai 7: PWM cua PIC va lap trnh C. 87

    2. TNH CHU K XUNG PWMChu k PWM ca PIC16F877A c tnh theo cng thc:

    2**4*]1)2[( TMROSCPWM PVTPRPERIOD

    Trong :OSCT l chu k ca t thch anh to dao ng

    2TMRPV (prescale value) gi tr chia trc ca timer2

    Khi gi tr ca timer 2 (TMR2) bng gi tr ca thanh ghi PR2 th 3 s kin theo sau s xy ra:

    Thanh ghi TMR2 bxa Tn hiu ng ra CCPx ln mc 1, ngoi tr h s chu k bng 0% th CCPx vn mc 0. H s chu kPWM c chuyn t thanh ghi CCPRxL sang thanh ghi CCPRxH.

    3. TNH H S CHU K XUNG PWMH s chu k c thit lp bi gi tr lu trong thanh ghi 10 bit gm CCPRxL 8 bit v 2 bit cn li l

    bit th 4 v th 5 trong thanh ghi CCPxCONk hiu l CCPxCON.Gi tr ca h s chu k l 10 bit nn c th thay i t 0 n 1023 to ra 1024 cp gi tr iu khin.

    Gi tr 10 bit th 8 bit c trng s ln lu trong thanh ghi CCPRxL v 2 bit cn li c trng s thp th CCPxCON.

    H s chu k ca PIC16F877A c tnh theo cng thc:

    2**)4:5:(_ TMROSCPWM PVTCCPxCONCCPRxLCYCLEDUTY

    III. CC LNH IU KHIN1. LNH NH CU HNH KHI CCP

    C php: setup_ccp1 (mode) or setup_ccp1 (mode, pwm)

    Thng s : model h ng s . Gi tr ca mode xem trong file thi t b, mt vi thng s :Disable the CCP: CCP_OFFSet CCP to PWM mode: CCP_PWM Enable Pulse Width Modulator

    Chc nng: Khi to khi CCP.

    Hiu lc: Cho t t c cc vi i u khi n PIC tch hp ph n cng CCP

    V d: setup_ccp1(CCP_PWM); khi to khi CCP1 c chc nng PWM

    2. LNH THIT LP H S CHU KC php: set_pwm1_duty (value)

    Thng s: valuec th l hng s 8 bit hoc 16 bit.

    Chc

    nng:

    Ghi gi tr 10 bit vo PWM thit lp h s chu k.

    Gi tr 10 bit c dng xc nh lng thi gian ca tn hiu PWM mc 1 trong mt chuk nh sau

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    4/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    88 Bai 7: PWM cua PIC va lap trnh C.

    value*(TOSC)*t2divTrong t2div l gi tr chia trc ca timer2 c thit lp lnh setup_timer2.

    V d: // cho tn s t thch anh l 20MHz, 1.2 khz frequency,// gi tr chi trc ca timer2 l t2div =16// the following sets the duty to 50% (or 416 us).

    long duty;

    duty = 512; // .000416/(16*(1/20000000))

    set_pwm1_duty(duty);

    3. LNH SETUP_TIMER_2 - LNH NH CU HNH CHO TIMER_2C php: setup_timer_2(mode, period, postscale)

    Thng s: mode c th l 1 trong cc thng s: T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4,T2_DIV_BY_16

    Periodl s nguyn c gi tr t 0 n 255 dng xc nh khi no gi tr timerb reset.

    postscalel s nguyn c gi tr t1 n 16 dng xc nh timer trn bao nhiu ln trckhi pht sinh tn hiu ngt.

    Chc nng: khi to cho TIMER2.

    Mode ch nh kiu b chia ca timer t tn s ca mch dao ng.

    Gi tr ca timer c th c hoc ghi dng lnh GET_TIMER2() v SET_TIMER2().

    TIMER2 l timer 8 bit.

    C hiu lc: cho tt c cc vi iu khin PIC c timer 2.

    V d: SETUP_TIMER_2 (T1_ DIV_BY_4,0XC0,2);

    S dng thch anh 20MHz, qua b chia 4 cn 5MHz, chu k l 200ns. Vi lnh khi to ny th timer2 s tng gi tr sau 4 chu k xung 200ns (tng ng800ns), s trn sau mi khong thi gian 153.6s v pht sinh yucu ngt sau 307.3 s.

    4. LNH SET_TIMERx(value) - LNH THIT LP GI TR BT U CHO TIMERC php: set_timerX(value) ; x l 0, 1, 2

    Thng s: valuel hng s nguyn 8 hoc 16 bit dng thit lp gi tr mi cho timer.

    Chc nng: thit lp gi tr bt u cho TIMER.

    C hiu lc: cho tt c cc vi iu khin PIC c timer.

    V d: SET_TIMER2 (0); //reset timer2

    IV. NG DNG PWM1. YU CU IU KHIN

    S dng PWM ca PIC16F877A iu khin tc ng c 10 cp.Cho tn s t thch anh l10MHz. Cho chu k PWM l 1ms. Hy tnh ton cc thng s iu khin ng c.

    Tnh ton:

    Tn s thch anh: MHzfOSC 10 nn chu k l: nsSMHzF

    T

    OSC

    OSC 1001,010

    11

    Chu k PWM: nsmSPVTPRPERIOD TMROSCPWM 000,000,11**4*]1)2[( 2

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    5/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    Bai 7: PWM cua PIC va lap trnh C. 89

    Ch bit c nsTOSC

    100 cn cc thng s 2,2 TMRPVPR th cha bit.

    Phi chn 1 thng s v tnh thng s cn li: ch 2PR c gi tr 8 bit t 0 n 255, cn2TMR

    PV c3 gi tr l chia 1, chia 4 v chia 16.

    Chn h s chia ln nht l 16 hay 162

    TMRPV

    Khi tm gi tr cn li 2PR :

    15616*100*4

    000,000,1

    **4]1)2[(

    2

    ns

    ns

    PVT

    PERIODPR

    TMROSC

    PWM

    Vy 1552 PR .Lnh khi to cho timer2 l: setup_timer_2(T2_DIV_BY_16, 155, 1)

    Tnh h s chu k:

    H s chu k thay i s lm gi tr trung bnh ca tn hiu thay i, h s chu k nh nht l bng 0khi tn hiu ra CCPx mc 0, h s chu k tng lm tn hiu xut hin v gi tr trung bnh tng, h schu k ln nht bng chu k ca PWM.

    Cho h s chu k bng chu k tnh ton gii hn h s chu k:

    MAXPWMPWMPERIODCYCLEDUTY

    _

    _

    Ta c cng thc: 2**)4:5:(_ TMROSCPWM PVTCCPxCONCCPRxLCYCLEDUTY

    Ta tm gi tr ln nht ca 4:5:CCPxCONCCPRxL .

    Suy ra:22

    _

    **

    _)4:5:(

    TMROSC

    PWM

    TMROSC

    MAXPWM

    PVT

    PERIOD

    PVT

    CYCLEDUTYCCPxCONCCPRxL

    62516*100

    000,000,1

    *)4:5:(

    2

    ns

    ns

    PVT

    PERIODCCPxCONCCPRxL

    TMROSC

    PWM

    PWM c phn gii l 10 bit tng ng vi h s chu k thay i t 0 n 1023, nhng vi yu cuny th h s chu k thay i t 0 n gi tr ln nht l 625.

    Vi gi tr ny ta thit lp s cp iu khin tc ng c, chn s cp l 10, thay i s cp bng 2nt nhn Tng v Gim. Ch khng tnh cp 0.

    Gi tr thay i cho mi cp l 62,5 lm trn l 62.

    Chng trnh c 4 nt nhn: START, STOP, UP, DW.

    Khi nhn UP th tng gi tr tng h s chu k, khi nhn DW th gim h s chu k, c kim tragii hn tng v gim, c kim tra ng c ang hot ng hay khng, nu ng c khng hot ng th chtng gi tr h s chu k, nu ng c ang chy th cp nht gi tr thay i, da vo bit tt bit trng thing c.

    Khi nhn START th ng c chy, khi nhn STOP th ng c ngng.

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    6/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    90 Bai 7: PWM cua PIC va lap trnh C.

    #include

    #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP

    #use delay(clock=10000000)

    #define START PIN_A0

    #define STOP PIN_A1

    #define UP PIN_A2

    #define DW PIN_A3

    int16 bientocdo=0;

    int1 tt;

    void main()

    {

    set_tris_A(0x07f);

    setup_ccp1(CCP_PWM);

    setup_timer_2(T2_div_by_16,155,1);

    bientocdo=0; //xoa bien toc do

    set_pwm1_duty(bientocdo); //DUTY=0, CAP THU 0 DE TAT DONG CO

    tt=0;

    while(1)

    {

    if (!input(UP)) //NHAN PHIM TANG TOC

    { delay_ms(100);

    if (bientocdo < 620)

    { bientocdo= bientocdo+62;

    If (tt==1)

    { set_pwm1_duty(bientocdo); }

    }

    }

    if (!input(DW)) //NHAN PHIM GIAM TOC

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    7/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    Bai 7: PWM cua PIC va lap trnh C. 91

    { delay_ms(100);

    if (bientocdo > 0)

    {bientocdo= bientocdo - 62;

    If (tt==1)

    { set_pwm1_duty(bientocdo); }

    }

    }

    if (!input(START)) //NEU NHAN PHIM START

    {

    set_pwm1_duty(bientocdo); //cho dco chay thuan

    tt=1;

    }

    if (!input(STOP)) // NEU NHAN PHIM STOP

    {

    bientocdo=0; tt=0;

    set_pwm1_duty(bientocdo); //DUNG DONG CO

    }

    }

    }

    B[I 6-1: IU KHIN NG C CHY VI TC CP 1, CHU K 1MS, H S CHU K 62, TNS THCH ANH 10MHZ.

    #include

    #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP

    #use delay(clock=10000000)

    void main()

    {

    setup_ccp1(CCP_PWM);

    setup_timer_2(T2_div_by_16,155,1);

    set_pwm1_duty(62);

    }

    B[I 6-2: IU KHIN NG C CHY VI TC CP 2, CHU K 1MS, H S CHU K 124, TNS THCH ANH 10MHZ.

    #include #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP

    #use delay(clock=10000000)

    void main()

    {

    setup_ccp1(CCP_PWM);

    setup_timer_2(T2_div_by_16,155,1);

    set_pwm1_duty(124);

    }

    TT 4:51:1 CONCCPLCCPR DCPWM _ PPWM_ CAP O

  • 7/22/2019 BAI_007_VXL_PIC_PWM

    8/8

    ai hoc s pham ky thuat tp HCM Khoa ien ien t Nguyen nh Phu

    92 Bai 7: PWM cua PIC va lap trnh C

    1 0 0 S 819S 0%2 10 8 S 819S 1%3 10+10 16 S 819S 2%4 20+10 24 S 819S 3%

    1023 819S 819S 100%

    0

    1

    2

    3

    4

    5

    6

    7

    1ms

    10ms