μC/OS-II在無刷直流電動機控制中的應用
陶 源,朱文
(重慶大學,重慶400030)
摘要:設計了基于嵌人式實時操作系統IxC/OS II的無刷直流電動機轉速電流雙閉環控制系統。介紹了基于單片機dsPIC30F6010A的控制系統硬件結構,詳細說明了μC/OS II任務的分配和設計。μ/OS—II簡化了應用系統軟件的設計,可讀性強,便于維護和擴展功能。
關鍵詞:μC/OS-II;dsPIC30F6010A;無刷直流電動機;轉速電流雙閉環控制系統
中圖分類號:TM33 文獻標識碼:A 文章編號:1004—7018(2010)05—0031—03
0引言
無刷直流電動機是一種正在快速普及的電機類型。它不用電刷來換向,而是使用電子換向,與有刷直流電動機和感應電動機相比,具有許多優點,如更好的轉速轉矩特性、快速動態響應、高效率、長壽命、運轉元噪聲、較高的轉速范圍等,廣泛應用于家用電器、汽車、航空航天、消費品、醫療、工業自動化設備和儀器等行業。
μC/OS II是一個源碼公開、可移植、可固化、可裁剪、搶占式的嵌入式實時操作系統。μC/OS—II能管理64個任務,并提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、占用空間小、實時l眭能優良和可擴展性強等特點。本文基于嵌入式實時操作系統μC/OS—II和單片機dsPIC30F6010A設計了一個無刷電動機控制系統。與傳統的前后臺程序不同,基于μC/OS—II操作系統的程序設計,將一個大的應用程序分解成多個任務來完成,能很大程度地降低控制系統開發難度,縮短軟件開發周期。
1無刷直流電動機控制原理
無刷電動機的換相是通過電子方式控制的。轉子的位置由定子中嵌入的霍爾傳感器檢測,每當轉子磁極經過霍爾傳感器附近,它們就會發出一個高電平或低電平信號,表示轉子的北磁極或南磁極正經過該傳感器。根據三個霍爾傳感器信號的組合,就能確定換相的精確順序,給定子繞組通電,實現無刷電動機的旋轉。常用120。電角度無刷直電動機換相順序及轉繞組通電情況如圖1示。轉子每轉過60。電角度,其中一個霍傳感器就會改變狀態。完成一個電周期需要換相六次。而完成一個機械轉動,要重復的電周期數取決于轉子磁極對數。
2無刷電動機控制系統設計
無刷電動機轉速電流雙閉環控制系統框圖如圖2所示。外環為轉速環,內環為電流環。轉速環經PID運算后,為電流環提供電流給定。電流環再經PID運算,控制PWM占空比輸出,調節電機的轉速向給定速度變化。電流環的執行頻率要比轉速環高。
本硬件系統主要由微控制器、M0sFET三相逆變橋電路、功率驅動電路、檢測電路和保護電路構成,圖3為無刷電動機控制系統硬件框圖。dsPIc30F610A是一款專門為嵌入式電機控制應用設計的Mcu,具有輸入電平變化通知引腳、電機控制專用PwM模塊、PwM故障引腳FLTA,可同時采樣最多4路的ADc、串口等外設。cNl3、cNl4、cNl5為輸入電平變化通知(cN)引腳,當霍爾傳感器信號的電平發生變化時,產生電平變化通知中斷,捕捉無刷電動機霍爾傳感器信號。PwMlH~PwM3L可實現6個獨立或3對互補PwM輸出,驅動M0sFET三相逆變橋電路,控制繞組上施加的電壓,改變電機的轉速。無刷電動機在任意換相時刻,只有兩相繞組通電,故只需要一路電流采樣電路。但這種電流采樣為母線電流采樣,需要在PwM高電平的中點采樣電流值,才能得到較準確的相電流值。繞組電流流經采樣電阻,產生的電壓降經運放放大,一路輸入到ADc模塊的輸入通道AN3,進行電機相電流采樣,一路與設定****電流進行比較后,連接到PwM故障引腳F冊A,實現電機的過流保護。
為了提供速度給定,將一個電位器連接到ADc的一個輸入通道AN2。兩個開關用來控制電機的起停和正反轉。串口用來傳送嵌入式實時操作系統的任務運行狀態和電機速度信息給上位機顯示。
3基于μC/0s—II的軟件設計
3.1μC/os—II在dsPIc30F石010A上的移植
在μc/0s—II移植過程中,與應用程序有關的文件是os—cFG H和INcLuDEs.H,與處理器有關的文件有Os_CPU H、0s_CPU—c.c、os_cPll-A.AsM。
os cFG.H文件用來確定允許μc/0s—II的各種功能。
INcLuDEs.H是一個主頭文件,出現在每個c文件的開頭。可以把應用程序的頭文件添加其中。
os—cPU.H包括了用#denne定義的、與處理器有關的常數、宏以及數據類型。dsPIc30F6010A的堆棧從低地址向高地址遞增,定義Os_sTK_GR0wTH=O。開關中斷宏采用第三種方式,定義cPu狀態寄存器和堆棧寬度為16位。
Os_cPu_c.c文件中****必要的函數是OsTa—skstkInit,用于初始化任務的棧結構。
Os_cPu_A AsM文件中要求用戶編寫四個匯編語言函數:()SStanH’ghRdy()、0sctxsw()、Os—Intctxsw()、OsTickISR()。()SStartHighRdy()使就緒態任務中優先級****的任務開始運行,OsQxsw()執行任務級的切換,OsIntctxsw()在ISR中執行任務切換功能。()STickISR()為μc/Os—II提供一個周期性的時鐘源,來實現時間的延時和超時功能。下文中的定時器l中斷就是實現這個功能。
移植工作完成后,就要驗證移植的μc/Os—II是否能正常工作。采用運行/不運行測試方法,通過示波器觀察LED的波形,了解操作系統的運行情況。移植代碼測試成功后,一個多任務實時操作系統平臺就搭建成功。
3.2任務的分配
基于μc/Os—II的程序設計是將一個大的應用程序分成相對獨立的多個任務來完成。μc/Os—II內核對這些任務進行調度和管理。無刷電動機轉速電流雙閉環控制系統總體任務關聯圖如圖4所示。
3.3任務的設計
(1)起動任務
起動任務是在主程序中創建的,用于系統初始化(包括初始化系統時鐘定時器1,PwM輸出模塊,輸入電平通知(cN)功能,串口,ADc模塊,按鍵,定時器3),創建按鍵任務、轉速環任務和電流環任務,然后調用OsTaskDel(Os—PRIO一SELF)進行自我刪除,起動任務進入睡眠狀態。
(2)定時器1中斷任務
uc/Os-II的時鐘節拍是通過定時器1以中斷的形式實現的,中斷間隔為10 ms,以供系統處理諸如延時、超時等與時間有關的事件。在中斷子程序中,要調用系統函數OsTimeTick,以使用戶任務控制塊OsJcB中的時間延時項OsTcBDly減1,最后還要通過調用系統函數OsIntExit,返回到進入就緒態的****優先級任務,f而不是回到被中斷了的任務。
(3)輸入變化通知中斷任務
讀霍爾傳感器信號,使對應相序下的兩相繞組通電,并記錄一個機械周期所需要的時間,為轉速環任務中的速度計算提供時間參數。因為中斷要涉到cPu寄存器操作,因此中斷服務子程序要用匯編編寫,關于要處理的任務,可以用c語言寫,然后在此中斷程序中調用。
(4)A/D轉換中斷任務
在ADc模塊的初始化中,設定在PwM高電平中點對模擬輸入通AN3進行同時采樣。通常電機控制的PwM頻率為20 kHz,電流環調節周期為50μs,與PwM信號同周期。A/D轉換中斷服務子程序的清單,和上面的輸入變化通知中斷的一樣,只不過“執行用戶代碼做中斷服務”有所不同。
(5)速度環任務
執行周期為10ms,主要功能為讀取輸入變化通知中斷任務中,用定時器3記錄無刷電動機轉動一個機械周期所用的時間,計算出元刷電動機的實際轉速。然后與給定轉速值比較,通過PI運算,計算出內環電流環的給定電流值。同時,把電機的實際轉速通過串口傳遞給上位機。無刷電動機的速度V  T是一個電周期的時間,p是電機極數。
(6)按鍵任務
用于控制電機的起停和正反轉。默認狀態為停止、正轉。執行周期為100ms。當起動鍵按下時,開啟PwM輸出,打開定時器3,記錄電機換相時間,用于計算轉速。當停止鍵按下時,禁止PwM,清零OVDcON狀態改寫寄存器,回到初始狀態。
(7)PwM故障檢測中斷任務
當電機相電流過大時,可以起到過流保護作用。禁止PwM,清零OVDcON狀態改寫寄存器,回到初始狀態。
4實驗現象及分析
由于實驗條件的限制,只完成了轉速爭閉環實驗。在速度給定值為l 000 r/min、電機空載的條件下,以PwM占空比為50%起動時,單片機對無刷電動機實際轉速進行采樣,采樣周期為10 ms,并把采樣速度傳遞給上位機。首次只調整比例部分,將比例系數由小變大,并觀察系統所對應的響應,直到得到響應快、超調量小的響應曲線為止。然后湊試積分常數,先給一個較大值,并將上一步調整時獲得的比例系數略微減小,然后逐漸減少積分常數,并根據所獲得的響應曲線進一步調試比例系數和積分常數,直到消除靜態誤差,并保持良好的動態性能為止。圖5為kp=O.05、Ti=5時的轉速波形圖。
當電機穩定運行時,在電機輸出端,加上額定載后,電機的轉速波動圖如圖6所示。從圖6可知,給系統突加額定負載擾動時,轉速的動態速降為200 r/min,轉速在動態降落后逐漸恢復,達到新的穩態值,穩態值范圍在890~910 r/min之間。
5結語
嵌入式實時操作系統μc/Os—II被成功移植到dsPIc30t760lOA中,并完成無刷電動機外環轉速閉環控制。對于轉速單閉環調試系統,當突加負載時,動態速降較大,不能很好地控制電流和轉矩的動態過程。uc/Os—II的引入,可以將一個復雜的應用程序分解成多個獨立的任務來完成,提高系統的開發效率,降低開發難度,便于應用程序的功能擴展和維護,以適應日趨復雜的現代控制系統。
|