bai_007_vxl_pic_pwm
TRANSCRIPT
-
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