11
Băm xung (PWM) là gì Trong phần timer ta đã học tạo ra các xung có thời gian ở mức 1 = thời gian ở mức 0

Băm xung (PWM) là gì

Embed Size (px)

DESCRIPTION

bam xung PWM

Citation preview

Page 1: Băm xung (PWM) là gì

Băm xung (PWM) là gì

Trong phần timer ta đã học tạo ra các xung có thời gian ở mức 1 = thời gian ở mức 0

Page 2: Băm xung (PWM) là gì

Xung pWm

• Xung pwm có chu kì không đổi. Nhưng thời gian mức 1 có thể khác hoặc bằng thời gian mức 0

Duty cycle

Period

Page 3: Băm xung (PWM) là gì

Xung PWM để làm gì?

• Nếu chúng ta cấp vào 2 bóng đèn xung có cùng tần số, và mỗi bóng đèn có duty cycle khác nhau

• => thì bóng đèn có độ rộng xung(duty cycle) rộng hơn thì sáng nhiều hơn

• Nếu thay bóng đèn bằng động cơ. Thì động cơ nào được cấp xung có độ rộng xung(duty cycle) lớn hơn thì quay nhanh hơn

Page 4: Băm xung (PWM) là gì

Cho nên:

• Dùng pwm để điều khiển tốc độ động cơ• Hay điều khiển độ sáng bóng đèn• Và nhiều chức năng khác

• Nguyên lý đơn giản là bật tắt liên tục. Bóng đèn nào có thời gian bật lớn hơn thì sáng hơn và ngược lại

Page 5: Băm xung (PWM) là gì

Bộ PWM của PIC18f4520

• Có 2 bộ tạo xung• PWM1• PWM2Pwm1 cấp xung ra trên chân CCP1/ RC2Pwm2 cấp xung ra trên chân CCp2/RC1 hoặc RB3

Muốn sử dụng các chân ccp này cần đặt tris ở mức 0( đầu ra)

Page 6: Băm xung (PWM) là gì

Cách bộ tạo xung hoạt động

PR2

OUT PUT

TMR2

Comparator

CCPRxH

CCPRxL

Comarator

R Q

S

CCPxCON<5:4>

TRIS BIT

Page 7: Băm xung (PWM) là gì

Thiết lập chu kì và độ rộng xung

• Chu kì = (PR2+1)*4*TOSC*(TMR2 prescaler value)• Độ rộng= (A*TOSC*(TMR2 prescaler value)• A là: giá trị gộp lại từ thanh ghi 8 bit CCPRxL và 2

bít CCPxCON<5:4>• X là 1 hoặc 2. đại diện cho bộ CCP1 và CCP2

• PR2 là thanh ghi 8 bit nên giá trị không quá 256

Page 8: Băm xung (PWM) là gì

Ví dụ tạo xung 1Khz. Duty cycle = 70%

• Sử dụng thạch anh 4 MHz=> TOSC = 1/4 us• Xung 1khz = > chu kì xung là 1000 (us)• Duty cycle = 70% = 70.1000/100 = 700 (us)

• Chọn hệ số TMR2 prescaler = 4• => PR2+1= 1000/4/0.25/4= 250=>PR2=249• A = 700/(4x0.25) = 700

Page 9: Băm xung (PWM) là gì

Thư viện PWM.H

• Có 3 hàm để sử dụng• ClosePWMx: cấm hoạt động kênh x• OpenPWMx: khởi tạo kênh x• SetDCPWMx: cài đặt độ rộng xung cho kênh x

• X: là kênh 1 hoặc 2

Page 10: Băm xung (PWM) là gì

Ví dụ tạo xung 1khz. Duty cycle = 70%

• Đã tính được PR2 = 249• A = 700• #include<p18f4520.h>• #include<pwm.h>• #pragma config OSC = HS• #pragma config WDT = OFF• #pragma config MCLRE= OFF

• void main()

Page 11: Băm xung (PWM) là gì

• {• TRISC=0; // su dugn CCP1/ RC2• T2CONbits.T2CKPS1=0;• T2CONbits.T2CKPS0=1;// TMR2 prescaler =4• ADCON1= 0x0f;• OpenPWM1(249);// khoi tao Pwm1• SetDCPWM1(700);// do rong xung là 700• while(1);

• }