0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)述FOC電機(jī)控制之SVPWM原理(下)

jf_78858299 ? 來源:Spring嵌入式工作室 ? 作者:SpringLtc ? 2023-04-20 16:07 ? 次閱讀

2.3 計(jì)算相鄰兩個(gè)基本矢量電壓的作用時(shí)間:

扇區(qū)判斷結(jié)束后,就是計(jì)算相鄰兩個(gè)基本矢量電壓的作用時(shí)間

在扇區(qū)1時(shí),由U6和U4合成,設(shè)在一個(gè)時(shí)間周期Ts內(nèi),U4作用的時(shí)間為T4,U6作用的時(shí)間為T6。由 基本矢量電壓在αβ軸上的投影 和 目標(biāo)矢量電壓在αβ軸上的投影 分別相等建立等式:

圖片

圖片

圖片

圖片

圖片

圖片

到這里,計(jì)算出來的公式看著有點(diǎn)復(fù)雜,所以我們通過下面的方式稍稍簡(jiǎn)化一下,記:

圖片

則在各個(gè)扇區(qū)內(nèi)的作用時(shí)間就分別為:

圖片

到這里,合成目標(biāo)矢量電壓Uref需要的兩個(gè)相鄰矢量電壓Ux,Uy以及分別作用的時(shí)間Tx,Ty就計(jì)算好了,但這里計(jì)算出來的時(shí)間不一定剛好滿足Tx+Ty=Ts,當(dāng)Tx+Ty>Ts時(shí)需要進(jìn)行等比例縮小處理,處理方式如下:

圖片

當(dāng)Tx+Ty

圖片

2.4 三路PWM占空比計(jì)算

目標(biāo)矢量電壓的所在扇區(qū)知道了,相鄰兩個(gè)基本矢量電壓及其作用時(shí)間也知道了,接下來就是7段式SVPWM的生成了。所謂的7段式SVPWM,即在一個(gè)周期Ts內(nèi),基本電壓矢量的作用順序?yàn)?/p>

圖片

作用的時(shí)間分別為:

圖片。

以在第1扇區(qū)為例:基本電壓矢量作用的順序?yàn)?/p>

圖片,

對(duì)應(yīng)的三相電壓波形為:

圖片

這里,可能會(huì)問,Tx,Ty和U4,U6是怎么對(duì)應(yīng)的呢?為什么要先U4再U6呢?把各個(gè)扇區(qū)的作用順序豎著列出來就能看出來了:

扇區(qū) U0 Ux Uy U7 Uy Ux U0
1 0 4 6 7 6 4 0
2 0 2 6 7 6 2 0
3 0 2 3 7 3 2 0
4 0 1 3 7 3 1 0
5 0 1 5 7 5 1 0
6 0 4 5 7 5 4 0
1 0 4 6 7 6 4 0

可以看出,從一個(gè)扇區(qū)進(jìn)入相鄰的另一個(gè)扇區(qū)時(shí),只有一個(gè)基本矢量電壓發(fā)生改變。即通過這樣的作用順序,可以減小開關(guān)管的切換次數(shù),從而減少開關(guān)損耗,尤其是在負(fù)載電流較大時(shí)更應(yīng)該減小開關(guān)切換次數(shù)。

然后就是根據(jù)基本矢量電壓的作用時(shí)間去計(jì)算逆變H橋的占空比了,

仍然先以第1扇區(qū)為例:基本矢量電壓作用的順序?yàn)?/p>

圖片

即在一個(gè)周期Ts時(shí)間內(nèi),前面定義的開關(guān)函數(shù)

S(C)=1的時(shí)間為圖片,

S(B)=1的時(shí)間為圖片

S(A)=1的時(shí)間為圖片。

對(duì)應(yīng)的ABC三路PWM的占空比就分別為圖片。注意的是,看上面的三相電壓波形可知,輸出的PWM波時(shí)高電平中間對(duì)齊,所以在對(duì)你所使用的微控制器MCU的PWM定時(shí)器進(jìn)行配置的時(shí)候要注意設(shè)置好計(jì)數(shù)方向(一般先向上計(jì)數(shù)在向下計(jì)數(shù))和輸出極性(超過閾值為高電平)。

對(duì)于其他幾個(gè)扇區(qū)類似,這里不再重復(fù)詳細(xì)敘述,列個(gè)表出來

圖片

圖片

這里說明一下,前面進(jìn)行Clarke變換和park變換的所有電壓電流參數(shù)都是標(biāo)幺值,這里的Uα和Uβ采用的也是標(biāo)幺值。

我們合成的輸出目標(biāo)矢量電壓也用標(biāo)幺值表示(令Uref_max=1),并令Ts=1時(shí),這里的系數(shù)K就等于常數(shù)1,這樣的話,我們計(jì)算的時(shí)間Ta,Tb,Tc就等于占空比。下面簡(jiǎn)單證明一下why。

仍以第1扇區(qū)為例:

已知最終的目標(biāo)矢量電壓最大不失真的幅值為圖片,

圖片,我們已經(jīng)計(jì)算的有圖片,

圖片(這里的Ux,Uy已經(jīng)是標(biāo)幺值)

令Uref_max=1把目標(biāo)矢量電壓標(biāo)幺值化,再令Ts=1,就可以把非零電壓作用的時(shí)間轉(zhuǎn)化為標(biāo)幺值。

所以,我們?cè)诔绦蛴?jì)算處理的時(shí)候,直接令K=1,然后按照上面列表計(jì)算出來的Ta,Tb,Tc就可以直接作為占空比了,占空比再乘以PWM定時(shí)器的計(jì)數(shù)周期值,就可以得到比較寄存器的值了,這樣計(jì)算量就減小很多了,然后就完成了整個(gè)SVPWM的操作。

剩下的就是PWM定時(shí)器相關(guān)的操作了,這里不詳說,后面有時(shí)間我再針對(duì)DSPSTM32這兩款處理器做簡(jiǎn)要介紹。

04.算法流程

接著上一篇的坐標(biāo)變換(上一篇鏈接:https://mp.weixin.qq.com/s/4PbY2FbnXcN2ai4aolGVcg)

上篇已經(jīng)介紹,由park逆變換計(jì)算得到Uα,Uβ

step1:扇區(qū)判斷

計(jì)算圖片,根據(jù)U1,U2,U3的符號(hào)計(jì)算N=4C+2B+A,再結(jié)合扇區(qū)表判斷所處的扇區(qū)。

C語(yǔ)言代碼示例:

v.U1 = v.Ubeta;                                         \\
    v.U2 = ( v.Ualpha*0.8660254) - (v.Ubeta*0.5);           \\
    v.U3 = (-v.Ualpha*0.8660254) - (v.Ubeta*0.5);           \\
    v.Sector = 0;                                           \\
    if(v.U1 > 0)    v.Sector += 1;                          \\
    if(v.U2 > 0)    v.Sector += 2;                          \\
    if(v.U3 > 0)    v.Sector += 4;                          \\

step2:計(jì)算基本矢量電壓作用時(shí)間(占空比)

計(jì)算圖片,并根據(jù)扇區(qū)確定相鄰兩個(gè)基本矢量電壓及其作用時(shí)間,然后對(duì)作用時(shí)間進(jìn)行等比例縮小處理或引入零矢量電壓處理,使得總的作用時(shí)間等于Ts,或總的占空比等于1。

C語(yǔ)言代碼示例:

v.Tx = v.Ubeta;                                         \\
    v.Ty = ( v.Ualpha*0.8660254) + (v.Ubeta*0.5);           \\
    v.Tz = (-v.Ualpha*0.8660254) + (v.Ubeta*0.5);           \\
    switch(v.Sector)                                        \\
    {                                                       \\
        case 1:{                                            \\
            v.t1=v.Tz; v.t2=v.Ty;                           \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Tb = 0.5*(1-v.t1-v.t2);                       \\
            v.Ta = v.Tb + v.t1;                             \\
            v.Tc = v.Ta + v.t2;}break;                      \\
        case 2:{                                            \\
            v.t1=v.Ty; v.t2=-v.Tx;                          \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Ta = 0.5*(1-v.t1-v.t2);                       \\
            v.Tc = v.Ta + v.t1;                             \\
            v.Tb = v.Tc + v.t2;}break;                      \\
        case 3:{                                            \\
            v.t1=-v.Tz; v.t2=v.Tx;                          \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Ta = 0.5*(1-v.t1-v.t2);                       \\
            v.Tb = v.Ta + v.t1;                             \\
            v.Tc = v.Tb + v.t2;}break;                      \\
        case 4:{                                            \\
            v.t1=-v.Tx; v.t2=v.Tz;                          \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Tc = 0.5*(1-v.t1-v.t2);                       \\
            v.Tb = v.Tc + v.t1;                             \\
            v.Ta = v.Tb + v.t2;}break;                      \\
        case 5:{                                            \\
            v.t1=v.Tx; v.t2=-v.Ty;                          \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Tb = 0.5*(1-v.t1-v.t2);                       \\
            v.Tc = v.Tb + v.t1;                             \\
            v.Ta = v.Tc + v.t2;}break;                      \\
        case 6:{                                            \\
            v.t1=-v.Ty; v.t2=-v.Tz;                         \\
            if((v.t1+v.t2)>1){                              \\
                v.t1 = v.t1/(v.t1+v.t2);                    \\
                v.t2 = v.t2/(v.t1+v.t2);                    \\
            }                                               \\
            v.Tc = 0.5*(1-v.t1-v.t2);                       \\
            v.Ta = v.Tc + v.t1;                             \\
            v.Tb = v.Ta + v.t2;}break;                      \\

step3:計(jì)算PWM定時(shí)器比較寄存器值

這個(gè)很簡(jiǎn)單,就是用占空比乘以定時(shí)器的計(jì)數(shù)周期

C語(yǔ)言代碼如下:

EPwm1Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Ta);
EPwm2Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Tb);
EPwm3Regs.CMPA.half.CMPA = (int16)(MPeriod * Svpwm1.Tc);
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電壓
    +關(guān)注

    關(guān)注

    45

    文章

    5620

    瀏覽量

    116009
  • SVPWM
    +關(guān)注

    關(guān)注

    14

    文章

    614

    瀏覽量

    90658
  • FOC
    FOC
    +關(guān)注

    關(guān)注

    20

    文章

    324

    瀏覽量

    42891
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何理解foc控制 伺服電機(jī)foc控制

    如何理解foc控制FOC控制是一種高級(jí)電機(jī)控制技術(shù),可以提高
    的頭像 發(fā)表于 07-31 17:28 ?2803次閱讀
    如何理解<b class='flag-5'>foc</b><b class='flag-5'>控制</b> 伺服<b class='flag-5'>電機(jī)</b>有<b class='flag-5'>foc</b><b class='flag-5'>控制</b>嗎

    SVPWM/FOC

    那位是用79F9211和STM32F103做SVPWMFOC的高手,請(qǐng)聯(lián)絡(luò),有償,我的MAIL:txftn@163.com
    發(fā)表于 03-20 15:19

    必學(xué)的BLDC電機(jī)控制算法——FOC簡(jiǎn)述

    =0Id=0 。之后我將詳細(xì)介紹一這個(gè)算法的數(shù)學(xué)原理和一些自己的理解。FOC矢量控制總體算法簡(jiǎn)述輸入:位置信息,兩相采樣電流值,(3相電流、電機(jī)
    發(fā)表于 10-14 10:51

    深入淺出講解FOC算法與SVPWM技術(shù)

    參考資料:【自制FOC驅(qū)動(dòng)器】深入淺出講解FOC算法與SVPWM技術(shù)FOC入門教程FOC實(shí)現(xiàn)過程中主要公式整理永磁
    發(fā)表于 08-30 06:22

    FOC電機(jī)控制相關(guān)資料下載

    FOC電機(jī)控制,一份基于國(guó)產(chǎn)M0核MCU平臺(tái),風(fēng)機(jī)量產(chǎn)程序,包含龍博格電機(jī)觀測(cè)器,SVPWM,順逆風(fēng)啟動(dòng),五段式與七段式調(diào)制等源碼,完全可以
    發(fā)表于 11-10 09:34

    實(shí)現(xiàn)電機(jī)SVPWM旋轉(zhuǎn)的FOC頻率大概是多少

    我設(shè)計(jì)了一個(gè)FOC板。首先,我想在不使用其他變換的情況實(shí)現(xiàn)SVPWM,以使電機(jī)先旋轉(zhuǎn)。PWMC_SetPhaseVoltage(pwmcHandle, Valphabeta);所以我
    發(fā)表于 12-19 07:44

    手把手教你無感FOC電機(jī)控制,MATLAB代碼生成

    華夏電子工作室:2023年6月8日下午3點(diǎn)(15:00)電機(jī)控制MATLAB代碼生成系列課程直播第一季。邀請(qǐng)各位工程師準(zhǔn)時(shí)來直播間討論和觀看。屆時(shí)代碼全開源。 下面我們來說一FOC簡(jiǎn)
    發(fā)表于 05-29 10:12

    簡(jiǎn)述FOC電機(jī)控制SVPWM原理(上)

    SVPWM(Space Vector Pulse Width Modulation),即空間矢量脈寬調(diào)制。SVPWM的理論基礎(chǔ)是平均值等效原理,即在一個(gè)開關(guān)周期Ts內(nèi),對(duì)基本矢量電壓加以組合,使其
    的頭像 發(fā)表于 04-20 16:06 ?8858次閱讀
    <b class='flag-5'>簡(jiǎn)述</b><b class='flag-5'>FOC</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b><b class='flag-5'>之</b><b class='flag-5'>SVPWM</b>原理(上)

    電機(jī)foc是什么意思 svpwmfoc的區(qū)別

    SVPWM是一種基于矢量控制的功率電子調(diào)制技術(shù),與FOC不同的是,SVPWM通過調(diào)節(jié)電壓幅值和相位角度控制
    發(fā)表于 05-02 10:54 ?1.3w次閱讀

    嵌入式--所有電機(jī)控制FOC的總結(jié)

    嵌入式–FOC的總結(jié)我們?cè)诤芏嘣O(shè)計(jì)上會(huì)用到FPGA控制電機(jī),比如伺服電機(jī),直流無刷電機(jī),也有很多人用STM32來
    發(fā)表于 05-05 14:29 ?20次下載
    嵌入式--所有<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>的<b class='flag-5'>FOC</b>的總結(jié)

    電機(jī)控制---SVPWM扇區(qū)判斷的實(shí)現(xiàn)以及推導(dǎo)過程

    電機(jī)控制SVPWM扇區(qū)判斷的實(shí)現(xiàn)以及推導(dǎo)過程 1.一般的Svpwm模塊中,輸入量為Vα、Vβ,得到三相計(jì)數(shù)器的Compare的值,最后輸出U、V、W三相電壓。在
    發(fā)表于 05-05 11:05 ?5次下載
    <b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>---<b class='flag-5'>SVPWM</b>扇區(qū)判斷的實(shí)現(xiàn)以及推導(dǎo)過程

    電機(jī)控制--FOC的優(yōu)勢(shì)

    FOC(Field-Oriented Control),即磁場(chǎng)定向控制,也稱矢量變頻,是以數(shù)學(xué)、物理理論為基礎(chǔ),對(duì)電機(jī)磁場(chǎng)矢量進(jìn)行精確控制電機(jī)
    發(fā)表于 05-05 11:14 ?15次下載
    <b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>--<b class='flag-5'>FOC</b>的優(yōu)勢(shì)

    BLDC電機(jī)控制算法FOC簡(jiǎn)述

    最近做完了一個(gè)直流無刷電機(jī)電機(jī)調(diào)速項(xiàng)目,查閱了各種大神所寫的博客和論文,在這里我只做一小小的總結(jié):(PS最近有遇到相關(guān)課題,發(fā)現(xiàn)以前的描述并不完整,因此又補(bǔ)充了一些。) FOC
    的頭像 發(fā)表于 05-19 16:34 ?2093次閱讀
    BLDC<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>算法<b class='flag-5'>之</b><b class='flag-5'>FOC</b><b class='flag-5'>簡(jiǎn)述</b>

    如何理解foc控制 伺服電機(jī)foc控制

    FOC控制是一種高級(jí)電機(jī)控制技術(shù),可以提高電機(jī)的功率、效率和控制精度。
    的頭像 發(fā)表于 06-10 17:39 ?3886次閱讀

    FOC電機(jī)與BLDC電機(jī)的比較

    FOC電機(jī)與BLDC電機(jī)在電動(dòng)車及其他應(yīng)用領(lǐng)域中都扮演著重要角色,但它們?cè)?b class='flag-5'>控制方式和性能特點(diǎn)上存在一些差異。以下是對(duì)FOC
    的頭像 發(fā)表于 11-21 15:25 ?1518次閱讀