前段時間提到中頻電除塵器控制器,我仔細分析了單相和三相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暫存器的值。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3