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