单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制),直接拿来做课设啦!
??本文介紹功率因數校正(PFC)的simulink仿真實現,并用PID控制器將功率因數調整為近似1。最后將控制器離散化,用C語言的形式編寫代碼實現PID控制simulink中的模型實現同樣的效果。(僅作為學習參考作用,若有不足請指出討論。)
單相功率因數校正PFC電路的simulink仿真(從電路圖搭建到C語言實現PID控制)
- 一、功率因數校正(PFC)電路原理
- 1.PFC含義
- 2.PFC電路原理
- 3.閉環控制設計原理
- 4.電壓外環的任務
- 5.電流內環的任務
- 二、Simulink仿真電路搭建
- 1.給定元器件參數
- 2.Boost電路搭建
- 3.PID控制電路搭建(搭建simulink自帶PID控制器)
- 4.測量電路搭建
- 5.電路匯總
- 三、仿真電路分析
- 1.直流輸出電壓波形及平均值
- 2.直流輸出電壓的FFT分析
- 3.整流器輸出電壓與電感電流波形
- 4.電網電壓和電網電流的波形圖
- 5.電流畸變系數、功率因數計算
- 四、C語言編寫PID控制器
- 1.搭建simulink中C語言的編譯環境
- 2.電路連接圖
- 3.C語言編寫的PID控制代碼
- 4.控制器分析
- 五、仿真文件獲取
- 1.積分獲取
- 2.免費獲取
- 六、其余電力電子電路
一、功率因數校正(PFC)電路原理
1.PFC含義
??功率因數校正(Power Factor Correction,PFC)電路,是指在傳統的不控整流中融入有源器件,使得交流側電流在一定程度上正弦化,從而減小裝置的非線性、改善功率因數的一種高頻整流電路。
??基本的單相PFC電路在單相橋式不可控整流器和負載電阻之間增加一個DC-DC功率變換電路,通常采用Boost電路(Boost電路原理及simulink仿真可以參考這個鏈接)。通過適當的控制Boost電路中開關管的通斷,將整流器的輸入電流校正成為與電網電壓同相位的正弦波,消除諧波和無功電流,將電網功率因數提高到近似為1。電路的原理圖如圖所示:
2.PFC電路原理
??假定開關頻率足夠高,保證電感LLL的電流連續;輸出電容CCC足夠大,輸出電壓uou_ouo?可認為是恒定直流電壓。電網電壓uiu_iui?為理想正弦,即ui=Um?sin(wt)u_i=U_m*sin(wt)ui?=Um??sin(wt),則不可控整流橋的輸出電壓udu_dud?為正弦半波,ud=∣ui∣=Um?∣sin(wt)∣u_d=|u_i|=U_m*|sin(wt)|ud?=∣ui?∣=Um??∣sin(wt)∣。
??當開關管QQQ導通時,對電感LLL充電,電感電流iLi_LiL?增加,電容CCC向負載放點;當QQQ關斷,二極管DiodeDiodeDiode導通時,電感兩端電壓uLu_LuL?反向,udu_dud?和uLu_LuL?對電容充電,電感電流iLi_LiL?減小。電感電流滿足:
??通過控制QQQ的通斷,即調節占空比DDD,可以控制電感電流iLi_LiL?。若能控制iLi_LiL?近似為正弦半波電流,且與udu_dud?同相位,則整流橋交流側電流也近似為正弦電流,且與電網電壓uiu_iui?同相位,即可達到功率因數校正的目的。為此,需要引入閉環控制。
3.閉環控制設計原理
??控制器必須滿足以下兩個要求:
??①實現輸出直流電壓uou_ouo?的調節,使其達到給定值;
??②保證電網側電流正弦化,且功率因數為1.
??即在穩定輸出電壓uou_ouo?的情況下,使電感電流iLi_LiL?與udu_dud?波形相同。采用電壓外環、電流內環的單相PFC雙閉環控制的原理圖如下所示:
4.電壓外環的任務
??電壓外環的任務是得到可以實現控制目標的電感電流指令值iL?i^{*}_LiL??。給定輸出電壓uo?u^{*}_ouo??減去測量到的實際輸出電壓uou_ouo?的差值,經過PI調節器后輸出電感電流IL?I^{*}_LIL??的指令。測量到的整流橋出口電壓udu_dud?除以其幅值UmU_mUm?后,可以得到udu_dud?表示波形的量ud’u^’_dud’?,ud’u^’_dud’?為幅值為1的正弦半波,相位與udu_dud?相同。IL?I^{*}_LIL??與ud’u^’_dud’?相乘,便可以得到電感電流的指令值iL?i^{*}_LiL??。iL?i^{*}_LiL??為與udu_dud?同相位的正弦半波電流,其幅值可控制直流電壓uou_ouo?的大小。
5.電流內環的任務
??電流內環的任務是通過控制開關管QQQ的通斷,使實際的電感電流iLi_LiL?跟蹤其指令值iL?i^{*}_LiL??。此處采用滯環電流控制法。根據電流的公式,當QQQ導通時電感電流增大,而當QQQ關斷時,電感電流減小。令iL?i^{*}_LiL??減去iLi_LiL?,若差值△iLi_LiL?大于規定的上限△iLmaxi_{L_{max}}iLmax??,則令QQQ導通,以增大iLi_LiL?;若差值△iLi_LiL?小于規定的下限△iLmini_{L_{min}}iLmin??,則令QQQ關斷,以減小iLi_LiL?。通過滯環控制,可以保證實際的電感電流iLi_LiL?在其指令值iL?i^{*}_LiL??附近波動,波動的大小與滯環寬度有關,即與設定的△iLmaxi_{L_{max}}iLmax??和△iLmini_{L_{min}}iLmin??相關。
二、Simulink仿真電路搭建
1.給定元器件參數
① 輸入電壓有效值為220V,頻率為50Hz;
② 輸出直流電壓指令u*o為400V;
③ 電感L=6mH;電容C=320uF;負載電阻R=160Ω;
④ 二極管整流橋:Rs=1e5Ω,Cs=1e-6F,Ron=1e-3Ω,Lon=0,Vf=0;
⑤ 開關管Q采用MOSFET,Ron=0.001Ω,Lon=0,Vf=0.8V,Ic=0,Rs=1e5Ω,Cs=inf;
⑥ Boost電路中二極管參數:Ron=0.001Ω,Lon=0,Vf=0.8V,Ic=0,Rs=500Ω,Cs=250e-9F。
⑦ Relay滯環電流控制模塊寬度設置為[-0.5,0.5],Switch on point為1,Switch off point為-1;
⑧ 仿真算法:ode23tb
2.Boost電路搭建
??Boost電路的搭建可以參考這篇文章。搭建好的電路圖如下:
3.PID控制電路搭建(搭建simulink自帶PID控制器)
4.測量電路搭建
??其中,功率因數計算函數如下:
5.電路匯總
三、仿真電路分析
??將powergui設置為離散模型,Ts=1e-6,PID控制器的P為0.02,I為10。
1.直流輸出電壓波形及平均值
??輸出電壓波形如下:
??輸出電壓平均值如下:
??可以發現,直流電壓波動周期為0.01s,頻率為工頻(50Hz)的兩倍。
2.直流輸出電壓的FFT分析
3.整流器輸出電壓與電感電流波形
4.電網電壓和電網電流的波形圖
5.電流畸變系數、功率因數計算
??可以看出,電壓和電流是同相位的,即功率因數基本為1(0.9997)。也可以觀察Fourier模塊的相角觀察到電流與電壓是同相位的,這滿足控制器實現電網側電流正弦化,且功率因數為1的要求,達到了PFC的目的。
四、C語言編寫PID控制器
1.搭建simulink中C語言的編譯環境
??拖出s-function-builder模塊。(需要去了解一下如何在simulink中搭建C語言的編譯環境,本文是裝好了進行應用。可以參考:鏈接1、鏈接2、鏈接3)
2.電路連接圖
3.C語言編寫的PID控制代碼
/** Include Files**/ #if defined(MATLAB_MEX_FILE) #include "tmwtypes.h" #include "simstruc_types.h" #else #include "rtwtypes.h" #endif/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */ #include <math.h> /* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */ #define u_width 1 #define y_width 1struct _pid{float SetSpeed;//定義設定值float ActualSpeed;//定義實際值float err;//定義偏差值float err_last;//定義最上前的偏差值float err_next;//定義上一個偏差值 float Kp,Ki,Kd;//定義比例、積分、微分系數 };static struct _pid pid={ 0,0,0,0,0,0.02,0.01,1.15 };float PID_realize(float Err) {//pid.SetSpeed=speed;//設定值 pid.err=Err;//pid.SetSpeed-pid.ActualSpeed;//誤差項 float incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err;//pid.Kd*(pid.err-2*pid.err_next+pid.err_last) ;//這里不用微分環節pid.ActualSpeed+=incrementSpeed;pid.err_last=pid.err_next;pid.err_next=pid.err;return pid.ActualSpeed; }//u0是輸入的誤差項,y0是控制器的輸出 void mytest_Outputs_wrapper(const real_T *u0,real_T *y0) {y0[0] =PID_realize(u0[0]); }4.控制器分析
①比例環節
??可以發現僅有比例環節的情況下系統存在穩態誤差,需要增加積分環節消除穩態誤差。
②比例積分環節
??引入比例積分環節后,系統的穩態誤差消失,輸出為給定的400V電壓。電網電流和電壓同相位,功率因數由和計算得近似為1。以上是C語言實現PID控制器的效果,具體的PID參數可自行設置。
五、仿真文件獲取
1.積分獲取
Matlab2017b仿真文件地址
2.免費獲取
關注公眾號【凱期可期】后臺回復:電力電子六、其余電力電子電路
其余電路參考
總結
以上是生活随笔為你收集整理的单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制),直接拿来做课设啦!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1个ieee1394端口_IEEE 13
- 下一篇: 时滞电力系统matlab,基于Wirti