一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

簡述FOC電機控制之SVPWM原理(下)

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

2.3 計算相鄰兩個基本矢量電壓的作用時間:

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

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

圖片

圖片

圖片

圖片

圖片

圖片

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

圖片

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

圖片

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

圖片

當Tx+Ty

圖片

2.4 三路PWM占空比計算

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

圖片,

作用的時間分別為:

圖片。

以在第1扇區(qū)為例:基本電壓矢量作用的順序為

圖片,

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

圖片

這里,可能會問,Tx,Ty和U4,U6是怎么對應(yīng)的呢?為什么要先U4再U6呢?把各個扇區(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

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

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

仍然先以第1扇區(qū)為例:基本矢量電壓作用的順序為

圖片

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

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

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

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

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

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

圖片

圖片

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

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

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

已知最終的目標矢量電壓最大不失真的幅值為圖片

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

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

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

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

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

04.算法流程

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

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

step1:扇區(qū)判斷

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

C語言代碼示例:

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ù)扇區(qū)確定相鄰兩個基本矢量電壓及其作用時間,然后對作用時間進行等比例縮小處理或引入零矢量電壓處理,使得總的作用時間等于Ts,或總的占空比等于1。

C語言代碼示例:

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:計算PWM定時器比較寄存器值

這個很簡單,就是用占空比乘以定時器的計數(shù)周期

C語言代碼如下:

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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電壓
    +關(guān)注

    關(guān)注

    45

    文章

    5683

    瀏覽量

    117097
  • SVPWM
    +關(guān)注

    關(guān)注

    14

    文章

    615

    瀏覽量

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

    關(guān)注

    21

    文章

    333

    瀏覽量

    43693
收藏 人收藏

    評論

    相關(guān)推薦

    如何理解foc控制 伺服電機foc控制

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

    從零開始電機FOC控制

    是FieldOrientationControl的縮寫,字面意思是場方向控制,在電機應(yīng)用場景就是磁場方向控制?,F(xiàn)在問題來了,挖掘技術(shù)哪家強?不是,走錯了再來,那么問題來了,就不能像小
    的頭像 發(fā)表于 04-23 19:34 ?767次閱讀
    從零開始<b class='flag-5'>之</b><b class='flag-5'>電機</b><b class='flag-5'>FOC</b><b class='flag-5'>控制</b>

    SVPWM/FOC

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

    必學(xué)的BLDC電機控制算法——FOC簡述

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

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

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

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

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

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

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

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

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

    簡述FOC電機控制SVPWM原理(上)

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

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

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

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

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

    電機控制--FOC的優(yōu)勢

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

    BLDC電機控制算法FOC簡述

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

    如何理解foc控制 伺服電機foc控制

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

    FOC電機與BLDC電機的比較

    FOC電機與BLDC電機在電動車及其他應(yīng)用領(lǐng)域中都扮演著重要角色,但它們在控制方式和性能特點上存在一些差異。以下是對FOC
    的頭像 發(fā)表于 11-21 15:25 ?3471次閱讀