PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   PWM với PIC16F886 (http://www.picvietnam.com/forum/showthread.php?t=18360)

vakk 12-05-2012 10:27 AM

PWM với PIC16F886
 
Mọi người cho em hỏi về PWM trên pic16f886 ,thạch anhh tần số 20MHz, ra 220VAC từ 310VDC thì tần số PWM bao nhiêu là phù hợp.giả sử em đã chọn được tần số phù hợp ,giá trị max là 310 thì để có duty từ 5% tới 95% .
310 sẽ tương ứng với 95%, vậy 100% sẽ là ~327
vậy pulse max=(327*Tosc)*Prescale(timer2)=> f=1/(pulse max)
với 5%: thì giá trị cần nạp là 327*5/100~16;
với 95% sẽ là 310
vậy công thức tính bảng sin trong exel là 147*sin(2*3.14*t/n)+147+16;
đảm bảo giá trị max là 310 và min là 16
cho em hỏi những công thức trên có sai không.
Pic có 4 chân P1A,P1B,P1C,P1D nhưng hiện tại em chỉ xuất xung PWM ra được 2 chân là P1A và P1B (half bridge), làm thế nào em có thể đưa xung ra cả 4 chân để ghép với mạch cầu.
Thanks

vakk 15-05-2012 02:50 PM

ngày qua ngày :D
upppppppp

vakk 20-05-2012 01:37 PM

sau một hồi mò mẫm thì em thấy hình như con số 310 chỉ là con số tượng trưng, cái ta cần là tỉ số giữa độ rộng xung và chu kì vì vậy ta có thể chọn tần số PWM trước rồi tính ra giá trị lớn nhất. Sau khi mò mẫm chương trình của em bằng HTpic:

Trích:

Nguyên văn bởi vakk (Post 61986)
#include <pic16f886.h>
#include <htc.h>
__CONFIG(FOSC_HS&WDTE_OFF&PWRTE_ON&MCLRE_ON&CP_OFF &CPD_OFF&BOREN_OFF&IESO_OFF&FCMEN_OFF&LVP_OFF&DEBU G_OFF);
__CONFIG(BOR4V_BOR21V&WRT_OFF);
int i=0;

const unsigned int sine[500]={400,405,409,414,418,423,427,432,436,441,445,450, 454,459,463,467,472,476,481,485,489,494,498,503,
507,511,515,520,524,528,532,537,541,545,549,553,55 7,561,565,569,573,577,581,585,589,593,597,600,604,
608,612,615,619,622,626,629,633,636,640,643,646,65 0,653,656,659,662,665,668,671,674,677,680,683,686,
688,691,694,696,699,701,704,706,709,711,713,715,71 8,720,722,724,726,728,729,731,733,735,736,738,739,
741,742,744,745,746,747,749,750,751,752,753,754,75 4,755,756,757,757,758,758,759,759,759,760,760,760,
760,760,760,760,760,760,759,759,759,758,758,757,75 7,756,755,754,754,753,752,751,750,749,748,746,745,
744,742,741,740,738,736,735,733,731,730,728,726,72 4,722,720,718,716,713,711,709,707,704,702,699,697,
694,691,689,686,683,681,678,675,672,669,666,663,66 0,656,653,650,647,643,640,637,633,630,626,623,619,
616,612,608,605,601,597,593,589,586,582,578,574,57 0,566,562,558,554,550,546,541,537,533,529,525,520,
516,512,507,503,499,494,490,486,481,477,472,468,46 4,459,455,450,446,441,437,432,428,423,419,414,410,
405,401,396,392,387,382,378,373,369,364,360,355,35 1,347,342,338,333,329,324,320,315,311,307,302,298,
294,289,285,281,277,272,268,264,260,256,251,247,24 3,239,235,231,227,223,219,215,212,208,204,200,196,
193,189,185,182,178,175,171,168,164,161,157,154,15 1,148,144,141,138,135,132,129,126,123,120,117,115,
112,109,107,104,101,99,96,94,92,89,87,85,83,81,79, 77,75,73,71,69,67,66,64,62,61,
59,58,56,55,54,53,52,50,49,48,47,47,46,45,44,44,43 ,42,42,41,41,41,40,40,40,
40,40,40,40,40,40,41,41,41,42,42,43,43,44,45,45,46 ,47,48,49,50,51,52,53,55,
56,57,59,60,62,63,65,67,68,70,72,74,76,78,80,82,84 ,86,89,91,93,96,98,100,103,
106,108,111,114,116,119,122,125,128,131,134,137,14 0,143,146,150,153,156,159,163,166,170,173,177,180,
184,188,191,195,199,202,206,210,214,218,222,226,23 0,234,238,242,246,250,254,258,262,266,271,275,279,
283,288,292,296,301,305,309,314,318,323,327,331,33 6,340,345,349,354,358,363,367,372,376,381,385,390,
394
};
void PORT(void)
{
TRISA=0x00;
TRISB=0x00;
TRISC=0x00;
PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
}

void setduty(int duty)
{
int temp;
temp=duty&0x003;
CCP1CON=(CCP1CON&0x8C)|(temp<<4);
CCPR1L=duty>>2;

}


void PWM(void)
{
T2CON=0x00;//pre=1,post=1
TMR2IE=0;
TMR2IF=0;
TMR2=0;
PR2=199;
CCP1CON=0x8C;

PWM1CON=0x04;

}
void main(void)
{
PORT();

PWM();
TMR2ON=1;
while(1)
{
RC0^=1;

setduty(sine[i]);
while(!TMR2IF){}
i++;
if(i>=500) i=0;

TMR2IF=0;
}
}

tần số PWM là 25Khz.
Cho những ai cũng mới mò mẫm như em


Múi giờ GMT. Hiện tại là 07:54 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam