如何利用單片機PWM實現各種波的輸出呢? 每日快訊

2023-07-06 15:25:02 來源:智能車與機器人技術交流

一、PWM

PWM調制技術---------包含調節占空比以及頻率。


【資料圖】

PWM用途------在電源輸出以及電機驅動方面用途廣泛。

電源輸出:調節不同頻率或同一頻率的電壓輸出,以及控制電流輸出等等。

電機驅動----網上找了好多資料,大部分用的驅動芯片,這樣的話就不需要太復雜的時序,但是有些電機可以直接用單片機進行驅動,根本用不著驅動芯片以及驅動器,提高成本,希望下面的介紹對希望直接驅動電機的有所幫助。

二、利用PWM輸出相位差為任意值的波形

1、可以用普通定時器輸出。這個方法我感覺有點,不做介紹。

2、用PWM寄存器輸出。設PWM輸出比較模式。

PWM模式包含:輸出比較,PWM模式,強制輸出等

PWM頻率確定由PSC和ARR確定。CCR確定占空比。

PWM輸出比較模式里CCR確定的其實是相位,PWM模式CCR確定的則是 占空比。

輸出這樣幾路波形,其實PWM模式設為比較輸出,且為翻轉模式,再設置CCR值其實就可以輸出了。

void TIM3_Init(u16 arr,u16 psc)

{

TIM3- >ARR=arr;TIM3- >PSC=psc;   TIM3- >CCMR1|=1< <3;  TIM3- >CCMR1|=3< <4;

。。。。。。。。。。。。。。

}

main函數:

TIM3_Init(1000-1,72-1);TIM3- >CCR1=250-1;TIM3- >CCR2=500-1;TIM3- >CCR3=750-1;TIM3- >CCR4=1000-1;

輸出結果相位差45,度,占空比則50。CNT從0計數,當CNT=CCR,波形翻轉,CNT溢出重新從0計數,再計數到CCR,此時再次翻轉,相位差就形成了。

三、PWM輸出正余弦波

PWM輸出余弦波,先生成PWM余弦規律變化的數字,然后設成對應的占空比。生成正余弦數字,可以利用c語言在線編譯工具生成,在里面寫入函數,然后寫入你單片機程序的數組,如果你的數是固定的,函數如下:

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)//通過系數可以調整輸出有效值大小    sinData[i] = tem;    printf("%d,",tem);}printf("\\r\\n");

}

將數字寫入單片機占空比就可以生成各種不同相位的函數,可以調函數中fz數值。

標簽:

上一篇:環球資訊:串口通信基礎知識介紹
下一篇:最后一頁