关于dsp28335移相全桥
? ? 在網上找關于dsp28335移相寄存器的配置問題,找了好多還是沒有百度到現在這個問題終于解決了于是吧關于epwm的配置貼到這里,具體配置看圖
?
?
?
?
?
?
?
?
?
?
?
?
?
?
這就是具體的配置過程,主要是PHSEN寄存器使能?EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;,還有?EPwm2Regs.TBCTL.bit.SWFSYNC =
?1;?EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;這些寄存器配置相當的關鍵。還有就是在定時器中斷中使用移相寄存器的時候,需要調用移相寄存器的時候與要用到這兩
個移相寄存器
?
?
? ? ? 如果不寫入下面這個寄存器的話,不會發生移相。
? ? ?最終經過移相逆變后的實驗波形如圖
?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
?
具體配置看https://blog.csdn.net/Aaron_Suen/article/details/84932812是ADC采集電壓電流,定時器中斷函數實現雙閉環。
2.模糊自適應PID 控制算法
為了擺脫經典PID 算法中各種因素之間的相互影響,可以把比例、積分和微分作用分別用比例因子P、積分因子I和微分因子 D 表示,相互之間沒有關聯,互不影響。運算公式如下:
? ? ? ? ? ? ? ? ? △u(n)=P*[e(n)―e(n-1)]+1/I*e(n)*Kii+D*[e(n)―2*e(n-1)+e(n-2)]
其 中 :
P、I 和 D 分別是比例因子、積分因子和微分因子,K i i 是積分作用強度因子?其中:A 為偏差限值。即當偏差絕對值|e|從接近A到A/2方向,積分作用從0.2~100% 逐步增強。
當偏差 |e|>A 時,積分不完全起作用 。與經典 PID 算法相比,比例因子 P、積分因子I和微分因子D的作用與比例系數Kp、積分時間Ti 和微分時間Td 的作用相似,P 值越大,比例作用越強,P 值越小,比例作用越弱;I 越小,積分作用越強,I 值越大積分作用越弱;D 值越大,微分作用越強,D 值越小,微分作用越弱。但有明顯不同:⑴ 比例因子P、積分因子I和微分因子
⑵ 積分因子I和微分因子D與積分時間Ti和微分時間Td的數值差別很大,不能根據經驗進行設置;
⑶ 積分作用強度因子Kii與偏差有關,具有模糊自適應能力,能夠根據偏差的大小自動調節積分作用的強弱。根據偏差的大小和性質建立模糊控制規則。當偏差大或較大時,增強控制作用,以盡快消除偏差;當偏差較小時,減少控制作用,以減少因測量誤差引起的波動 。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?設△T1= 量程*1.0%
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 設△T2= 量程*0.25%
當偏差|e|在△T1~A之間和|e|>A時,按照公式計算。當偏差|e|在△T1~△T2之間時,增加 P、I 作用,減弱 D 作用,PID 參數做
以下修正:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?P’=P*(1+(|e|-△T2)/(△T1-△T2)*c1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?I’=I*(1-(|e|-△T2)/(△T1-△T2)*c2)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? D’= D*(1-(|e|- △T2)/(△T1- △T2)*c3)
以新的 P ’、I ’和 D ’代替 P 、I和 D 參與公式計算。
系數c1、c2、c3與偏差∣e∣在△T1~△T2之間的次數有關,范圍為0.05~0.50。當偏差|e|在0~△T2之間時,減弱各調節作用,P I D 參數做以下修正:
? ? ? ? ? ? ? ? ? ? ? ? ? ? P’=P*(1+(|e|-△T2)/△T2*0.20)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?I’=I*(1-(|e|-△T2)/△T2*0.10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? D’= D*(1+(|e|-△T2)/△T2*0.20)
當偏差|e| 在0~△T1 之間發生振蕩時,根據振蕩特性自動在±0.25范圍內修改 P 、I 、D 參數。
其控制流程。首先根據經驗缺點比例因子P、積分因子I和微分因子D 的初值,設置偏差限值△T1、△T2 和A,假設設定值為 r,測量值為 y ,初始化e(n-1)=0,e(n-2)=0,然后計算偏差e(n)=r n -y n ,根據偏差e(n)大小,利用公式自動計算Kii和調整P、I和D的值,計算PID 輸出。如果采樣周期到,進入下一個循環重新計算。
程序中具體實現如下:
? Fuzzy_pid.E0 = V_Set - V_Now ;
? ? if( Fuzzy_pid.E0<= Fuzzy_pid.A /2)
? ? ? ? Fuzzy_pid.Kii = 1;
? ? else
? ? ? ? Fuzzy_pid.Kii = 1-0.8*(2*fabss(Fuzzy_pid.E0)-Fuzzy_pid.A)/Fuzzy_pid.A;
? ? if(Fuzzy_pid.E0 >=Fuzzy_pid.T2&&Fuzzy_pid.E0 <=Fuzzy_pid.T1 )
? ? ? ?{
? ? ? ?Fuzzy_pid.P1 = ?Fuzzy_pid.P*(1+(fabss(Fuzzy_pid.E0)-Fuzzy_pid.T2)/
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(Fuzzy_pid.T1-Fuzzy_pid.T2)*Fuzzy_pid.C1);
? ? ? ? Fuzzy_pid.I1 = ?Fuzzy_pid.I*(1-(fabss(Fuzzy_pid.E0)-Fuzzy_pid.T2)/
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(Fuzzy_pid.T1-Fuzzy_pid.T2)*Fuzzy_pid.C2);
? ? ? ? Fuzzy_pid.D1 = ?Fuzzy_pid.D*(1-(fabss(Fuzzy_pid.E0)-Fuzzy_pid.T2)/
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(Fuzzy_pid.T1-Fuzzy_pid.T2)*Fuzzy_pid.C3);
? ? ? ? Fuzzy_pid.P = Fuzzy_pid.P1;
? ? ? ? Fuzzy_pid.I = Fuzzy_pid.I1;
? ? ? ? Fuzzy_pid.D = Fuzzy_pid.D1;
? ? ? ?}
? ? Fuzzy_pid.SUM+=
? ? ? ? ? ? ? ? ? Fuzzy_pid.P*(Fuzzy_pid.E0-Fuzzy_pid.E1)+
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1/Fuzzy_pid.I*Fuzzy_pid.E0*Fuzzy_pid.Kii+
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Fuzzy_pid.D*(Fuzzy_pid.E0-2*Fuzzy_pid.E1+Fuzzy_pid.E2);
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的关于dsp28335移相全桥的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12306模拟登录
- 下一篇: win7/win10 + VS2015