在很多工程應用中,需要使用到PWM波(脈寬調制),例如電機調速、溫度控制調整功率等。本文講述怎么利用單片機的一個定時器生成多路PWM波形。
一般的,PWM的周期t1是一個固定值,如1ms,10ms,100ms等,在一個周期中包含了高電平t2和低電平t3,它們的關系是t2+t3=t1。改變一個周期中高電平的時間,就能達到速度或者功率調整的目的。PWM適用于高速開關器件的控制,不適合于繼電器等低速開關元件的控制,因為繼電器等低速元件達不到如此快的開關速度。
PWM控制的關鍵是控制改變PWM的高電平時間t2,這個時間在其他子程序中由控制算法中進行修改,如PID控制算法。
1.JPG (17.07 KB, 下載次數: 52)
下載附件
2018-3-30 21:16 上傳
圖 1
在微處理器,如單片機中,實現一個定時器生成多路PWM的方法如下。
首先來看看用一個定時器實現一路PWM輸出的方法:
>>定義一個時間基準刻度t,這個也是計時器中斷周期,一般在程序中t不改變。PWM的周期、高低電平時間由若干個基準時間t組成;
>>定義一個全局計時變量n,n表示這段時間經過了多少個基準時間t;
>>定義一個全局計時變量n1,n1表示一個PWM的周期包含多少個基準時間t,n1=t1/t。一般在程序中n1,t1不改變。
>>定義一個全局計時變量n2,n2表示一個PWM周期中高電平包含多少個基準時間t,n2=t2/t。由于高電平的時間受其他算法控制改變的,n2也是隨時在改變。
程序的流程如下:
①初始化定時器,定時器中斷時間設置為t,如設置t為1ms或其他;
②初始化變量:n=0;//計時變量n清零
n1=t1/t;//一個PWM的周期t1包含了多少個基準時間t.
//假如設PWM周期為100ms,則n1=100;
n2=t2/t;//計算一個PWM中高電平時間t2由多少個基準時間//t組成。t2由其他控制算法改變。
③ 開始計時,打開定時器中斷。定時器中斷程序中n++;
當n<n2&& n<n1時,IO口輸出高電平;
當n>=n2&& n<n1時,IO口輸出低電平;
當n>n1時,返回步驟①進行下一個周期的PWM.
程序流程圖如下:
2.jpg (47.27 KB, 下載次數: 54)
下載附件
2018-3-30 21:16 上傳
圖2
如果在同一個定時器中需要多路PWM,再定義多組類似的變量,按照圖2 中流程處理即可。
更多精彩內容,盡在微信公眾號“永珂在線”
公眾號二維碼 - 小.jpg (16.04 KB, 下載次數: 54)
下載附件
2018-3-30 21:16 上傳
|