用dsPIC33E系列dsp做的一個半無橋PFC電路,將會涉及到以下幾個問題:
1)半無橋電路的基本原理
2)Microchip官方提供的smps_control_library算法函數(shù)的使用
3)dsp內(nèi)部40位累加器的小數(shù)表示方法
4)dsp中斷時,context寄存器切換
5)C代碼中,一些重要函數(shù)的分析
最近,在Microchip官網(wǎng)上找到了一個AC-DC電源資料,輸入90Vac--264Vac,輸出12V62.5A(750W)。電源前端PFC用了一個半無橋的PFC電路,DC部分用了一個全橋軟開關(guān)電路。
Microchip官網(wǎng)上提供了該電源完整的電路原理圖和PCB板圖,并且附有原代碼,供對數(shù)字電源感興趣的工程師研究學習。下圖就是該電源的實機圖。
雖然,這樣一臺樣機從硬件到軟件的設(shè)計都能代表官方的最高水準,但對想進一步學習數(shù)字電源的工程師來說卻有一些問題:
1)做數(shù)字電源要動手實踐,要弄一臺樣機,沒有渠道,成本也高。
2)原代碼中有一些目前還用不到的功能,如:在線刷新DSP等。這些功能多少會分散對數(shù)字電源主要功能的關(guān)注。
3)雖然提供原代碼,但并沒有詳細的講解,讀起來非常吃力。
4)代碼不是用MCC生成的,代碼編寫的工作量較大。
因此,筆者在學習該代碼的過程中,以半無橋PFC為模板,自己重新繪制了PCB板圖,以MCC為基礎(chǔ),重新編寫了代碼,dsp用的是dsp33ep128gs806。下面把筆者在此過程中的一些經(jīng)驗與大家分享,如有不對之處,還望指正。
上面兩圖就是筆者根據(jù)官方的版本重新設(shè)計的原理圖和PCB板圖。
首先來講講半無橋PFC的工作原理:
圖1
當交流電源Vac處于正半周,Q1導通時,電流按照藍線所示流動,Q1關(guān)斷后,電流如紅線所示流動。
圖2
當交流電源處于負半周時,電流的方向如圖所示。
通過上面的工作原理,可以知道,半無橋PFC比傳統(tǒng)的帶整流橋的PFC少了一個整流二極管壓降,因此能提高效率。當交流電源處于正半周時,如果讓Q2始終處于導通狀態(tài)時,電流會經(jīng)過Q2和L2返回到交流電源。當交流電源處于負半周時,Q1始終導通,與正半周時同理。由于Q2(Q1)導通時的壓降小于D4(D3)導通時的壓降,因此還能進一步提升PFC的工作效率。
dsp的資源分配:
AN0(Pin13):與CMP1A共用。mosfet電流采樣(即電感電流),電感電流過流保護。
AN1(Pin14):PFC輸出電壓采樣。
AN2(Pin15):交流相電壓(火線)對地電壓采樣。
AN3(Pin16):交流相電壓(零線)對地電壓采樣。
CMP2C(Pin17):PFC輸出電壓,過壓保護比較器。
AN8(Pin27):輔助電源電壓監(jiān)控。
DACOUT1(Pin32):dsp內(nèi)部變量監(jiān)控引腳。
RD0,RB5(Pin46、47):Led燈。
PWM2H、PWM2L(Pin62、63):mos管柵極PWM控制。
官方的原代碼并不是用MCC生成的。筆者比較喜歡用MCC,因為用MCC生成的代碼錯誤少,編寫工作量小,修改容易。下面開始MCC配置。
ADC1、CMP1、CMP2和PWM,還有TMR2加入。其它外設(shè)都是非必要的,可以先不加,用的時候再添加。
在“Pin Module”中,可以自己命名引腳的名稱,一般筆者都會根據(jù)引腳的功能重新命名,這樣編寫代碼時,能“一目了然”的明白引腳的用途。
用一個定時器定時點亮LED燈,標示程序是否在正常運行。
注意要用PWM2,選“獨立時基,主控占空比”。并分別設(shè)置PWM工作周期:10us,占空比:50%(設(shè)50%用于調(diào)試,環(huán)路閉環(huán)后可修改)。“Special Event Trigger Control”用于控制電壓環(huán)路的采樣頻率,電壓環(huán)路的采樣頻率設(shè)為50KHz,所以“Output Postscalar”設(shè)為2。
PWM I/O設(shè)為冗余輸出,F(xiàn)ault Control的信號源設(shè)為CMP2,用于輸出電壓過壓后的快速保護。
“Trigger Control”用于控制電流環(huán)路的采樣頻率,電流環(huán)路的采樣頻率設(shè)為100KHz,所以“Output Divider”設(shè)為1。
PFC的控制模式是平均電流型控制。
ADC的設(shè)置:mos管的電流采樣用PWM2的主觸發(fā)。交流輸入電壓和PFC直流輸出電壓采樣要用PWM模塊的特殊事件觸發(fā)。
CMP1用于電感電流的過流保護。但要注意,要把DAC Output打開。因為在調(diào)試過程中,我們無法像模擬電源中那樣測試電路中每一個點的波形,有些點的波形根本就是在dsp內(nèi)部的,因此,可以通過將dsp內(nèi)部的數(shù)據(jù)通過DAC輸出,讓調(diào)試者觀察dsp內(nèi)部的工作狀態(tài)。
CMP2用于輸出過壓保護。
MCC配置完成。生成代碼。
在生成的代碼“tmr2.c”中添加:
讓LED燈閃亮。將該程序編譯后,燒錄進DSP中,電路板上的LED就應該閃,表明程序已經(jīng)正常工作了。
在下一節(jié),筆者試著分析一下dsp內(nèi)部40位累加器的小數(shù)表示方式和小數(shù)的乘法運算。