前段時間提到中頻靜電除塵器控制器,我仔細分析了單相和三相SPWM驅動時間,完成了STM32F103處理器上的SPWM程式碼編寫,並用示波器測試了訊號和波形,邏輯分析儀。
STM32F103的TIMER1和TIMER2支援互補的PWM輸出,我選擇TIMER1的CH1,CH2,CH3用於A,B,C三相驅動;
處理器的時脈頻率為72MHz,透過以下程式碼將互補PWM輸出的死區時間設定為4us;
SPWM_PWM_TIMER->BDTR = 0x80C4.
產生半週期正弦數據表,根據正弦信號的頻率和PWM頻率的值,計算出正弦信號週期需要劃分的區間,即計算每個正弦信號數據的平均值,並根據最大正弦數據和PWM信號的最大佔空比值計算每個區間的佔空比值;
當SPWM的頻率為10kHz,正弦訊號的頻率為50Hz時,輸出的SPWM訊號會經過兩級1kΩ電阻+0.1uF電容的低通濾波電阻,可以看到非常完美的正弦訊號。
一開始我想透過DMA自動將SPWM計算出的佔空比值設定到TIMER的CCR暫存器中,實現半完成中斷和完成中斷時DMA快取的更新,但因為在半完成中斷和完成中斷中頻率也可能發生變化操作,會導致DMA中資料數量的動態變化,使得SPWM輸出的正弦波訊號不連貫,產生高頻成分。
最後,透過TIMER的更新中斷,在PWM訊號的每個週期更新三相CCR暫存器的值。
以上是使用 STMMCU 實現靜電除塵器控制器的 SPWM ase/ase 逆變器的詳細內容。更多資訊請關注PHP中文網其他相關文章!