無(wú)感方波控制
考慮到技術(shù)實(shí)現(xiàn)的細(xì)節(jié),一般論文對(duì)工程應(yīng)用的直接幫助不大,不如芯片廠商提供的應(yīng)用筆記和開(kāi)源項(xiàng)目實(shí)用。工程師大都比較務(wù)實(shí),需要的是即學(xué)即用,至少是有借鑒意義的技術(shù)知識(shí)和經(jīng)驗(yàn)。
無(wú)感方波控制的參考資料,首推開(kāi)源項(xiàng)目BLHeli。它起先是基于8位單片機(jī)C8051F330的匯編語(yǔ)言程序,最初用于微型直升機(jī)定速控制,改善效果非常明顯。作為過(guò)來(lái)人,筆者認(rèn)為BLHeli是難得的匯編語(yǔ)言編程示范,值得好好學(xué)習(xí)和吸收。另外,無(wú)論是編寫(xiě)匯編程序,還是進(jìn)行程序分析,有了扎實(shí)的匯編語(yǔ)言基礎(chǔ),你會(huì)感到有如神助。這里推薦讀者先學(xué)習(xí)王爽老師的《匯編語(yǔ)言》,之后再吃透BLHeli程序,就打下非常好的匯編語(yǔ)言基礎(chǔ),以后一定會(huì)受益頗多!只不過(guò),BLHeli后期改用32位單片機(jī)STM32F051,更名為BLHeli32之后,代碼就不再開(kāi)源了。雖然功能豐富了許多,但隨著無(wú)感FOC的流行和單片機(jī)的飛速發(fā)展,以及功能定制化受到限制,BLHeli32并未能像BLHeli當(dāng)初那樣炙手可熱。
無(wú)感FOC
無(wú)感FOC的參考資料,現(xiàn)在還是比較豐富的,但商業(yè)上有諸多限制。
有的廠商提供了完整的程序,但里面是C語(yǔ)言和匯編語(yǔ)言的混合編程,匯編指令是和該廠商專有的DSP引擎綁定的,要達(dá)到廠商演示性能,只能使用其特定芯片。
有的廠商提供了全自動(dòng)的電機(jī)控制代碼生成器,看似只要輸入各種參數(shù),就能自動(dòng)生成代碼,非常省事,但最大的問(wèn)題是生成的代碼幾乎不存在可讀性,出現(xiàn)底層Bug時(shí)很難排查問(wèn)題,而且所生成的代碼也無(wú)法滿足高性能應(yīng)用的要求。
有的廠商將優(yōu)秀的控制算法以硬件的形式固化到了單片機(jī)內(nèi)部,用戶無(wú)法了解其實(shí)現(xiàn)細(xì)節(jié),只能在程序中調(diào)用其功能,輸入?yún)?shù)就可以得到滿意的性能,但需要購(gòu)買這種特定的芯片。
有的廠商給出了全部的C語(yǔ)言代碼,但核心算法(如無(wú)感FOC的位置估計(jì)部分)是以庫(kù)的形式存在的,或者是將關(guān)鍵的核心參數(shù)用另外的程序自動(dòng)計(jì)算后提供給用戶,用戶無(wú)法得知參數(shù)計(jì)算的具體過(guò)程。
還有廠商使用一顆低階芯片(如8051)完成接口通信和一些相對(duì)低速的處理,同時(shí)用協(xié)處理器硬件執(zhí)行快速的算法任務(wù),如FOC的各種變換、PI調(diào)節(jié)、數(shù)字濾波、三角函數(shù)計(jì)算等。
綜上來(lái)看,各個(gè)廠商開(kāi)放的代碼實(shí)例和硬件參考,都有著各種各樣、有意無(wú)意的限制,要么是難懂,要么是不全,要么是硬件非常貴,特別是開(kāi)發(fā)板上的MAXON電機(jī)就價(jià)值幾百塊人民幣,著實(shí)不利于初學(xué)者上手。
廠商的應(yīng)用筆記,筆者強(qiáng)烈推薦Microchip的AN1078應(yīng)用筆記。大家可以下載早期的代碼壓縮包,因?yàn)樵缙诘拇a結(jié)構(gòu)清晰、易于理解。而且,最好配合官方的MCLV控制板學(xué)習(xí),使用配套的上位機(jī)有利于學(xué)習(xí)和確認(rèn)。雖然里面嵌入了DSP引擎的匯編語(yǔ)言,但是查閱指令手冊(cè)、配合PICKIT3調(diào)試器,一步一步理解起來(lái)還是非常容易的。這個(gè)程序非常經(jīng)典,而且具備一定的實(shí)用價(jià)值,務(wù)必要吃透。
無(wú)感FOC的開(kāi)源項(xiàng)目,自然首推VESC了,其開(kāi)發(fā)者本杰明(Benjamin Vedder)也給出了參考的算法論文,大家可以看看論文的數(shù)學(xué)描述是如何轉(zhuǎn)化為代碼的。VESC的算法程序的各種“魔改”版本,以及所謂的去開(kāi)源化自研項(xiàng)目,基本上撐起了視頻網(wǎng)站上無(wú)感FOC視頻秀的半邊天。它使用STM32F405作為主控,頻率高達(dá)168MHz,全部采用硬件浮點(diǎn)運(yùn)算,配備USB接口的上位機(jī)顯示,電機(jī)參數(shù)等可以通過(guò)程序自動(dòng)測(cè)量和整定,值得深入學(xué)習(xí)。其不足之處在于,開(kāi)發(fā)平臺(tái)使用的操作系統(tǒng)不為大家所熟悉,單片機(jī)使用的操作系統(tǒng)也比較特殊,初學(xué)者不易理解。它最早是為滑板車直驅(qū)開(kāi)發(fā)的,電流可以非常大,而車輪直徑小,以大電流強(qiáng)拖確實(shí)可以滿足要求。但是,用于高壓植保機(jī)那種大型螺旋槳的快速啟動(dòng),就會(huì)出現(xiàn)來(lái)回?cái)[動(dòng)的問(wèn)題,必須先將螺旋槳強(qiáng)拖對(duì)齊后再行啟動(dòng)??紤]到STM32F405售價(jià)相對(duì)較高,在算法公開(kāi)的情況下,很多人都會(huì)想到將其算法移植到更加便宜的ARM M3,甚至是M0核單片機(jī)上,這就考驗(yàn)工程師的功力了。當(dāng)然,不用這個(gè)算法,也可以在M0核上實(shí)現(xiàn)乃至超過(guò)VESC的啟動(dòng)算法的效果的。最近,VESC也展示和開(kāi)源了基于高頻注入以及靜音型高頻注入的算法,效果也相當(dāng)不錯(cuò),只是需要測(cè)量電機(jī)的相電流,而且所需的運(yùn)放比較貴,以致項(xiàng)目成本較高。
無(wú)感控制算法
無(wú)感方波控制算法
無(wú)感方波控制,說(shuō)是沒(méi)有傳感器,實(shí)際是使用無(wú)刷電機(jī)線圈作為傳感器。方波控制也叫做六步驅(qū)動(dòng),電機(jī)旋轉(zhuǎn)一周要經(jīng)歷6種驅(qū)動(dòng)狀態(tài)。它的特點(diǎn)是在電機(jī)旋轉(zhuǎn)的任何時(shí)刻,三個(gè)電機(jī)端子的一個(gè)接電源正極,一個(gè)接電源地,一個(gè)浮空。這樣,在浮空端子上就能檢測(cè)到電機(jī)線圈的反電動(dòng)勢(shì),當(dāng)永磁體經(jīng)過(guò)線圈時(shí),反電動(dòng)勢(shì)會(huì)出現(xiàn)由正轉(zhuǎn)負(fù)或由負(fù)轉(zhuǎn)正的變化。這個(gè)時(shí)刻就是所謂的“反電動(dòng)勢(shì)過(guò)零點(diǎn)”,它剛好與線圈對(duì)齊,是一個(gè)固定的參考位置?;谌齻€(gè)電機(jī)端子接電阻網(wǎng)絡(luò)形成的虛擬中性點(diǎn),單片機(jī)就可以通過(guò)比較器對(duì)浮空相電壓與虛擬中性點(diǎn)電壓進(jìn)行比較,根據(jù)比較器的翻轉(zhuǎn)確定過(guò)零點(diǎn),進(jìn)而根據(jù)先前的換相時(shí)間推算出下一步換相的時(shí)刻。如此,不斷檢測(cè)對(duì)應(yīng)的過(guò)零點(diǎn),并據(jù)此換相,就實(shí)現(xiàn)了電機(jī)的連續(xù)運(yùn)轉(zhuǎn)。
考慮到反電動(dòng)勢(shì)與電機(jī)轉(zhuǎn)速成正比,當(dāng)電機(jī)靜止時(shí),反電動(dòng)勢(shì)為零,無(wú)法檢測(cè)過(guò)零點(diǎn)。而當(dāng)電機(jī)轉(zhuǎn)速過(guò)低時(shí),反電動(dòng)勢(shì)太小,信噪比過(guò)低,無(wú)法準(zhǔn)確檢測(cè)過(guò)零點(diǎn)。畢竟有PWM調(diào)制的地方,電路噪聲都小不了。這就是說(shuō),可靠的過(guò)零點(diǎn)檢測(cè)有最低轉(zhuǎn)速要求。
一般來(lái)說(shuō),無(wú)感方波啟動(dòng)算法實(shí)質(zhì)上都是盲啟,即啟動(dòng)時(shí)根本不知道電機(jī)轉(zhuǎn)子的位置,而是直接按默認(rèn)的換相狀態(tài)驅(qū)動(dòng),嘗試檢測(cè)過(guò)零點(diǎn)。如果在默認(rèn)時(shí)間內(nèi)沒(méi)有檢測(cè)到對(duì)應(yīng)的過(guò)零點(diǎn),那就按下一個(gè)換相狀態(tài)驅(qū)動(dòng)并檢測(cè)過(guò)零點(diǎn)……直至檢測(cè)到合適的過(guò)零點(diǎn),電機(jī)正常驅(qū)動(dòng)。在此基礎(chǔ)上加以改進(jìn),也能得到令人滿意的啟動(dòng)性能。由此可見(jiàn),絕大部分論文稱“電機(jī)靜止時(shí)反電動(dòng)勢(shì)為零,無(wú)法檢測(cè)過(guò)零點(diǎn),所以無(wú)法啟動(dòng)”,有人云亦云之嫌,快速啟動(dòng)的實(shí)現(xiàn)在于理想條件和現(xiàn)實(shí)感知之間的權(quán)衡。想要知道一款無(wú)感驅(qū)動(dòng)器是不是盲啟,可以在保證安全的前提下,以小電流啟動(dòng)電機(jī),用手捏住電機(jī)軸或其驅(qū)動(dòng)的槳葉,只要電機(jī)連續(xù)來(lái)回?cái)[動(dòng)就可以判定為盲啟。這樣的驅(qū)動(dòng)器無(wú)法在靜止?fàn)顟B(tài)下保持對(duì)轉(zhuǎn)子位置的跟蹤。電機(jī)控制器性能不能僅看空載演示,一定要加負(fù)載。大電流鎖定后的慢速?gòu)?qiáng)拖只能適應(yīng)小慣量負(fù)載或空載,不能算超低速閉環(huán)控制,只能算開(kāi)環(huán)強(qiáng)拖,沒(méi)什么實(shí)用價(jià)值。電感只有幾十微亨的航模電機(jī)和幾十毫亨電感的工業(yè)電機(jī)的控制特性大不相同,電感大的電機(jī)往往更好控制。
盲啟可以滿足大部分應(yīng)用需求,但存在一些限制。例如,某視頻網(wǎng)站上讓四旋翼飛行器在水中“飛行”的一個(gè)非典型應(yīng)用,可以明顯看到,原本在地面啟動(dòng)非常快速、平滑的螺旋槳,在水中的表現(xiàn)卻大相徑庭,有來(lái)回?cái)[動(dòng)強(qiáng)行定位的表征,就像動(dòng)物被電擊時(shí)四肢肌肉繃緊一樣。究其原因,就在于這個(gè)電機(jī)的驅(qū)動(dòng)仍然采用的是盲啟算法。對(duì)于螺旋槳負(fù)載,剛啟動(dòng)時(shí)速度低,空氣阻力可忽略不計(jì),螺旋槳慣性力矩占主導(dǎo)地位,只要將啟動(dòng)PWM的占空比設(shè)為適當(dāng)?shù)慕?jīng)驗(yàn)值,就可以快速拉動(dòng)螺旋槳產(chǎn)生足夠的反電動(dòng)勢(shì)以供檢測(cè)。期間,檢測(cè)過(guò)零點(diǎn)到連續(xù)換相也就幾十到幾百毫秒的時(shí)間,幾無(wú)感覺(jué),如同有霍爾傳感器一樣順暢。但在水中就不一樣了,水的密度遠(yuǎn)大于空氣,阻力比慣性力矩還大,只能加大啟動(dòng)PWM的占空比來(lái)加速拖動(dòng)螺旋槳,這樣就可以看到傳統(tǒng)無(wú)感方波啟動(dòng)算法的慢動(dòng)作。這種水下應(yīng)用,要時(shí)刻保持對(duì)轉(zhuǎn)子位置的跟蹤,才能提供快速正反轉(zhuǎn)或極低速旋轉(zhuǎn)來(lái)調(diào)節(jié)機(jī)器姿態(tài),解決方案是采用高頻注入法或加裝磁編碼器。
無(wú)感方波的換相控制,還有一種不使用反電動(dòng)勢(shì)信號(hào),而使用磁鏈信號(hào)的方法。這種方法的應(yīng)用比較少,一般做法是先對(duì)浮空相反電動(dòng)勢(shì)信號(hào)進(jìn)行積分得到磁鏈信號(hào),然后比較磁鏈信號(hào)與設(shè)定閾值,決定換相時(shí)機(jī)。兩種方法的區(qū)別在于,反電動(dòng)勢(shì)過(guò)零點(diǎn)信號(hào)與換相點(diǎn)信號(hào)不一致,對(duì)零度進(jìn)角來(lái)說(shuō)有30°偏移,也就是檢查到過(guò)零點(diǎn)后,要再過(guò)30°電角才能換相;而磁鏈信號(hào)與換相點(diǎn)信號(hào)是一致的,可以方便地調(diào)節(jié)換相進(jìn)角,比使用反電動(dòng)勢(shì)過(guò)零信號(hào)的方法響應(yīng)更快、更可靠,穿越機(jī)的應(yīng)用便是實(shí)證。考慮到電機(jī)是電感元件,其電流滯后于電壓,為了實(shí)現(xiàn)高效控制以及提高輸出功率,我們需要提前施加電壓,就好像內(nèi)燃機(jī)的點(diǎn)火進(jìn)角,點(diǎn)火時(shí)刻需要根據(jù)轉(zhuǎn)速實(shí)時(shí)調(diào)整。這里可以理解為提前換相,而且是所有換相點(diǎn)都相對(duì)于過(guò)零點(diǎn)一致提前。
無(wú)感FOC算法
無(wú)感FOC比無(wú)感方波更復(fù)雜一些,但論其本質(zhì)也不難。無(wú)感FOC控制算法基本上包含三部分,一是坐標(biāo)系變換,二是電流調(diào)節(jié),三是位置估計(jì),其中以位置估計(jì)最為關(guān)鍵。
接下來(lái),重點(diǎn)探討無(wú)感FOC的位置估計(jì)算法。由無(wú)感方波的基本原理可知,在六步驅(qū)動(dòng)中,總有一個(gè)電機(jī)端子是浮空的,此相半橋臂的功率開(kāi)關(guān)管皆截止,阻抗無(wú)限大,所以可以直接采集這個(gè)端子的反電動(dòng)勢(shì)過(guò)零點(diǎn)作為換相依據(jù)。但無(wú)感FOC的情況完全不同,每一相的上下橋功率開(kāi)關(guān)管都是使用互補(bǔ)PWM驅(qū)動(dòng)的,端子要么為電源電壓,要么接地,沒(méi)有浮空相,因此無(wú)法檢測(cè)過(guò)零點(diǎn)信號(hào)。
既然無(wú)法直接檢測(cè),那就只能研究間接方法,由此產(chǎn)生了兩類基本的位置估計(jì)算法。要提醒讀者的是,前述無(wú)感方波控制的過(guò)零點(diǎn)位置每60°跳躍一次,6次換相總計(jì)跳躍360°電角,而無(wú)感FOC控制需要的是連續(xù)的位置信號(hào)!
由反電動(dòng)勢(shì)或磁鏈信號(hào)得到位置信息
第一類位置估計(jì)算法由反電動(dòng)勢(shì)或磁鏈信號(hào)得到位置信息,是主流方法,性能良好,但很難在極低速或靜止?fàn)顟B(tài)下持續(xù)跟蹤信號(hào)。優(yōu)秀的設(shè)計(jì)可以實(shí)現(xiàn)速度過(guò)零的連續(xù)跟蹤,在快速反轉(zhuǎn)的情況下也能正常工作,具體策略有三種。
第一種是間接得到反電動(dòng)勢(shì)信號(hào),思路是構(gòu)建一個(gè)電機(jī)數(shù)學(xué)模型,與真實(shí)的電機(jī)一起運(yùn)行。對(duì)于同樣的電壓輸入,理論上真實(shí)電機(jī)的電流應(yīng)該和電機(jī)模型的電流一致,但實(shí)際中必然有所差別,遂用控制器加以補(bǔ)償。一旦電機(jī)模型和真實(shí)電機(jī)的電流相同,就認(rèn)為補(bǔ)償結(jié)束,這時(shí)就可以對(duì)補(bǔ)償量濾波,得到反電動(dòng)勢(shì)。進(jìn)而,對(duì)兩相正交坐標(biāo)系中的兩個(gè)反電動(dòng)勢(shì)信號(hào)做反正切運(yùn)算,解算出連續(xù)的位置信號(hào)。具體的討論和實(shí)現(xiàn),參見(jiàn)MicrochipAN1078應(yīng)用筆記。
第二種也基于反電動(dòng)勢(shì)信號(hào),但與第一種不同,它根據(jù)電機(jī)穩(wěn)態(tài)運(yùn)行時(shí),平行于磁體方向(d軸方向)的反電動(dòng)勢(shì)為0這個(gè)事實(shí),通過(guò)鎖相環(huán)控制保持其始終為0。這樣就可以通過(guò)檢測(cè)d軸反電動(dòng)勢(shì)是否為0來(lái)調(diào)節(jié)給定速度,進(jìn)而對(duì)速度積分,即在每個(gè)控制周期對(duì)速度值進(jìn)行累加得到位置信息。這個(gè)位置信息又決定了d軸反電動(dòng)勢(shì)是否為0,如此構(gòu)成閉環(huán)控制。這是本書(shū)所用的策略,后續(xù)章節(jié)會(huì)詳細(xì)解釋。
第三種不使用反電動(dòng)勢(shì)信號(hào),而是使用磁鏈信號(hào)。對(duì)于磁鏈信號(hào),共有三種解算方法,第一種方法是對(duì)兩相正交的磁鏈信號(hào)求反正切,直接得出位置。第二種方法是利用外差法通過(guò)鎖相環(huán)得到位置?;阪i相環(huán)的控制一般都比較穩(wěn)定,位置信號(hào)比較平滑,低速特性比較好,適合那種轉(zhuǎn)速不高的應(yīng)用,如滾筒洗衣機(jī)的那種直驅(qū)型外轉(zhuǎn)子無(wú)刷電機(jī)。其最大的問(wèn)題是,一旦堵轉(zhuǎn),就會(huì)出現(xiàn)失步,不適合高動(dòng)態(tài)響應(yīng)的應(yīng)用。第三種方法是直接估算三相靜止坐標(biāo)系中的轉(zhuǎn)子磁鏈,但考慮到速度變化時(shí)很難進(jìn)行相位誤差補(bǔ)償,用得不多。實(shí)際工程應(yīng)用以前兩種方法為主,Infineon公司最初使用的是反正切法,后期改用了鎖相環(huán)法,性能都不錯(cuò),但均不支持零速和極低速時(shí)的位置估計(jì)。
高頻注入算法
第二類位置估計(jì)算法其實(shí)就是高頻注入算法,它利用電機(jī)的d、q軸電感差異來(lái)檢測(cè)位置,最大的優(yōu)勢(shì)是支持零速跟蹤位置,結(jié)合脈沖定位的方式,可以做到完全無(wú)反轉(zhuǎn)、平滑順暢的快速啟動(dòng),在M0核、M3核上都可以實(shí)現(xiàn)。其缺點(diǎn)是有高頻噪聲,而且響度還比較大,盡管提高PWM頻率、隨機(jī)抖動(dòng)占空比、隨機(jī)改變PWM頻率,或者提高采樣激勵(lì)頻率,可將噪聲頻率提高到聽(tīng)域以外,但難免有諧波成分被人耳感知。當(dāng)然,實(shí)施高頻注入的前提是,電機(jī)制造上保證d、q軸電感存在差異,否則也無(wú)能為力。
綜合來(lái)看,TI公司的FAST估算器性能占優(yōu),足以覆蓋絕大多數(shù)應(yīng)用,但由于使用磁鏈信號(hào)的位置估計(jì)仍然不能在零速和極低速下保持轉(zhuǎn)子位置跟蹤,也就是不能估計(jì)轉(zhuǎn)子位置,所以要結(jié)合高頻注入法進(jìn)行全速域控制。
經(jīng)過(guò)多年的發(fā)展,無(wú)感控制基本算法已日漸成熟,可能最后的挑戰(zhàn)就在于電動(dòng)自行車、滑板車的表貼式輪轂電機(jī)的驅(qū)動(dòng)。這種電機(jī)的d、q軸電感差異極小,很難用高頻注入算法來(lái)解算位置信號(hào),而且基于反電動(dòng)勢(shì)的算法根本不適用。這種電機(jī)的產(chǎn)量巨大,如果能夠?qū)崿F(xiàn)重載零速啟動(dòng),無(wú)反轉(zhuǎn)、無(wú)抖動(dòng)、平滑順暢的啟動(dòng),那將會(huì)產(chǎn)生顛覆性影響。
責(zé)任編輯:彭菁
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423136 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68521 -
控制算法
+關(guān)注
關(guān)注
4文章
166瀏覽量
21712
原文標(biāo)題:干貨文章! 無(wú)感FOC應(yīng)該從哪里學(xué)起,寶典來(lái)了~
文章出處:【微信號(hào):多摸象,微信公眾號(hào):多摸象】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論