寫這篇文章之前,首先聲明此文章僅為個(gè)人觀點(diǎn),如果有不對(duì)的地方可以提出來,互相學(xué)習(xí)。
一、PWM
PWM調(diào)制技術(shù)---------包含調(diào)節(jié)占空比以及頻率。
PWM用途------在電源輸出以及電機(jī)驅(qū)動(dòng)方面用途廣泛。
電源輸出:調(diào)節(jié)不同頻率或同一頻率的電壓輸出,以及控制電流輸出等等。
電機(jī)驅(qū)動(dòng)----網(wǎng)上找了好多資料,大部分用的驅(qū)動(dòng)芯片,這樣的話就不需要太復(fù)雜的時(shí)序,但是有些電機(jī)可以直接用單片機(jī)進(jìn)行驅(qū)動(dòng),根本用不著驅(qū)動(dòng)芯片以及驅(qū)動(dòng)器,提高成本,希望下面的介紹對(duì)希望直接驅(qū)動(dòng)電機(jī)的有所幫助。
二、利用PWM輸出相位差為任意值的波形
1、可以用普通定時(shí)器輸出。這個(gè)方法我感覺有點(diǎn),不做介紹。
2、用PWM寄存器輸出。設(shè)PWM輸出比較模式。
PWM模式包含:輸出比較,PWM模式,強(qiáng)制輸出等
PWM頻率確定由PSC和ARR確定。CCR確定占空比。
PWM輸出比較模式里CCR確定的其實(shí)是相位,PWM模式CCR確定的則是 占空比。
輸出這樣幾路波形,其實(shí)PWM模式設(shè)為比較輸出,且為翻轉(zhuǎn)模式,再設(shè)置CCR值其實(shí)就可以輸出了。
void TIM3_Init(u16 arr,u16 psc)
{
TIM3-》ARR=arr;
TIM3-》PSC=psc;
TIM3-》CCMR1|=1《《3;
TIM3-》CCMR1|=3《《4;
。。。。。。。。。。。。。。
}
main函數(shù):
TIM3_Init(1000-1,72-1);
TIM3-》CCR1=250-1;
TIM3-》CCR2=500-1;
TIM3-》CCR3=750-1;
TIM3-》CCR4=1000-1;
輸出結(jié)果相位差45,度,占空比則50。CNT從0計(jì)數(shù),當(dāng)CNT=CCR,波形翻轉(zhuǎn),CNT溢出重新從0計(jì)數(shù),再計(jì)數(shù)到CCR,此時(shí)再次翻轉(zhuǎn),相位差就形成了。
三、PWM輸出正余弦波
PWM輸出余弦波,先生成PWM余弦規(guī)律變化的數(shù)字,然后設(shè)成對(duì)應(yīng)的占空比。生成正余弦數(shù)字,可以利用c語言在線編譯工具生成,在里面寫入函數(shù),然后寫入你單片機(jī)程序的數(shù)組,如果你的數(shù)是固定的,函數(shù)如下:
void get_sin_tab1( unsigned int point, unsigned int maxnum )
{
unsigned int i = 0, j = 0, k = 0;
float hd = 0.0; //弧度
float fz = 0.0; //峰值
unsigned int tem = 0;
j = point / 2;
hd = PI / j;
k = maxnum / 2; //最大值一半
for( i = 0; i 《 point; i++ )
{
fz = k * sin( hd * (i) ) + k;
tem = ( unsigned int )(fz * 1)//通過系數(shù)可以調(diào)整輸出有效值大小
sinData[i] = tem;
printf(“%d,”,tem);
}
printf(“\r\n”);
}
將數(shù)字寫入單片機(jī)占空比就可以生成各種不同相位的函數(shù),可以調(diào)函數(shù)中fz數(shù)值。
-
單片機(jī)
+關(guān)注
關(guān)注
6040文章
44602瀏覽量
637003 -
PWM
+關(guān)注
關(guān)注
114文章
5196瀏覽量
214398
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論