1 引言 目前,隨著汽車工業的發展,能源短缺問題日趨嚴峻。為此,國家科技部啟動了“863電動汽車重大專項”,而開關磁阻電機(Switched Reluctance Motor,簡稱SRM)以其啟動轉矩大、調速范圍寬等優點被作為未來電動汽車的理想驅動電機之一。開關磁阻電機是一種必須在控制器協調控制下才能運轉起來的電機,因而控制器性能的好壞直接影響電機的運轉性能。以往控制系統所采用的CPU主要有三種類型:一是采用51系列8位單片機,這種處理器處理速度相對緩慢,功能簡單,外圍電路比較復雜。二是采用196系列16位單片機,這種處理器處理速度比較快,但由于內部外設模塊不夠豐富,因而外圍電路仍相對復雜。三是采用240系列DSP,這種處理器處理速度快,內部外設模塊豐富,但芯片價格昂貴,所以不能得到較廣泛的應用。本文選用Atmel公司出品的Atmega16作為CPU來控制開關磁阻電機,大大提高了性價比。 2 AVR系列單片機 AVR單片機是目前最新的單片機系列之一,具有速度高、片內硬件資源豐富等優點,可作為真正意義上的單片機使用。它的最大特點是低功耗和高速度,其掉電方式、閑置方式至工作方式下的耗電約為1μA~2.5μA。該系列單片機采用現代微處理器流水管線預取指令技術,淘汰了機器周期的概念。它以時鐘周期為指令執行的基本時間單位,每個時鐘周期可執行一條指令。時鐘頻率通常采用4MHz~8MHz,故最短的指令執行時間為250ns~25ns。在12MHz頻率下,指令的吞吐量為12MIPS,這是一般MCS-51單片機速度的12倍。AVR系列片內含有模擬比較器,與輸入捕捉功能配合可進行多種模擬控制和轉換。它借鑒了某些機型的高速輸入輸出HSIO和可編程計數陣列PCA的概念,實現了本身的輸入捕捉、輸出比較和脈沖寬度調制輸出功能,從而成為脈沖信號測量、開關量按時控制及某些直流馬達調速的得力工具。在軟件開發方面,AVR單片機內含容量不等的閃速程序存儲器(Flash Memory,簡稱Flash),可反復擦寫至少1000次,極大地方便了產品開發和軟件修改。Flash存儲器中的程序可由PC機串行下載,亦可在通用寫入器上以并行方式寫入。 3 開關磁阻電機工作原理 所謂磁阻電機是指電機各磁路的磁阻隨轉子位置而改變,因而電機的磁場能量也將隨轉子位置的變化而變化,并將磁能變換成機械能。這種結構與步進電動機相似,開關磁阻電動機的運行亦遵循“磁阻最小原理”,即磁通總是沿著磁阻最小的路徑閉合。而具有一定形狀的鐵心在移動到最小磁阻位置時,必使自己的主軸線與磁場的主軸線重合。圖1為四相開關磁阻電機結構圖,當定子D-D‘極勵磁時,所產生的磁力會力圖使轉子旋轉到轉子極軸線1-1’與定子極軸線D-D’重合的位置,并使D相勵磁繞組的電感最大。若以圖1中定、轉子所對的位置作為起始位置,然后依次給D-A-B-C相繞組通電,轉子會逆著勵磁順序以逆時針方向連續旋轉;反之,若依次給B-A-D-C相通電,則轉子會沿順時針方式轉動。可見,開關磁阻電動機的轉向與相繞組的電流方向無關,而僅取決于相繞組通電的順序。 4 系統設計要求及結構實現 對于額定功率為0.75kW、轉速為50~2000r.p.m的8/6極SRM,在低速時可采用PWM方式來控制,而在高速時則應采用單脈沖控制。電機轉子每轉過15°,位置傳感器PIA和PIB會發生變化并產生一次相中斷,之后MSP430依據外部操作要求(如正傳或反轉)及當前狀態來決定下一次輸出狀態并送給數字比較器,當與下一次中斷信號一致時,它會向CPU發送一次中斷,并輸出相信號給邏輯電路,最后驅動電動機。同時依據此中斷信號計算轉速,以作為高速單脈沖工作狀態的參考點(對于高速單脈沖,由于在高速時沒有足夠時間精確計算開關角的大小,因而本設計采取每相固定導通30°的控制方式,其實現方法待后詳述)。 當轉速給定后,即可采用調節電位器輸出模擬量送給Atmega16的A/D模塊。系統中的LED用于顯示轉換速等信息,鍵盤用于設定各參量(如方向等)。其控制結構框圖如圖2所示。 4.1 PWM控制 AVR的T/C1除具有定時、計數、輸入捕捉和輸出比較功能外,還可構成兩個脈沖寬度調制PWM輸出通道。由于經緩沖的PWM輸出可驅動電機,且其轉速正比于OCR1A或OCR1B寄存器的內容。因此,可以利用OCR1A輸出PWM波,再將該信號與各路相輸出信號相與后輸出,從而實現控制各路相信號以及低速調速之目的。 4.2 高速單脈沖控制 采用高速單脈沖控制方式時,可使關斷角保持不變,從而使開通角在較寬的范圍內進行調節,最終實現高速高速。由于AVR系列單片機具有輸入捕捉功能,因此可將PIA或PIB信號送給ICP腳,然后讓ICP1寄存器首先捕捉脈沖上升沿發生的時間,接著再捕捉下一次上升沿發生的時間,然后用這段時間除以相間隔的角度15°就可得到標準單脈沖數。當然,由于中斷處理需要一定的時間,所以要通過軟件修正。這樣就可以高精度控制高速運轉時的開通角和關斷角,從而實現高速單脈沖的軟件控制。 5 軟件示例 5.1 相輸出子程序示例 ;正轉相輸出 .def xiin=r16 ;相輸入信號寄存器 ;==================== xinoutz:in xiin,pind ;將相輸入信號送給寄存器 andi xiin,$03 ;相與只剩下相信號 cpi xiin,$01 ;是否da輸出 brbc 1,daout ;相等,da輸出 cpi xiin,$03 ;是否ab輸出 brbc 1,about ;相等,ab輸出 cpi xiin,$02 ;是否bc輸出 brbc 1,bcout ;相等,bc輸出 cpi xiin,$00 ;是否cd輸出 brbc 1,cdout ;相等,cd輸出 ;==================== ;反轉相輸出 ;==================== xinoutf:in xiin,pind ;將相輸入信號送給寄存器 andi xiin,$00 ;相與只剩下相信號 cpi xiin,$01 ;是否da輸出 brbc 1,daout ;相等,da輸出 cpi xiin,$02 ;是否ab輸出 brbc 1,about ;相等,ab輸出 cpi xiin,$03 ;是否bc輸出 brbc 1,bcout ;相等,bc輸出 cpi xiin,$01 ;是否cd輸出 brbc 1,cdout ;相等,cd輸出 ;==================== daout:sbic pinb,4 ;開通a相低電平有效 sbic pinb,7 ;開通d相? sbis pinb,5 sbis pinb,6 ret about:sbic pinb,4 ;開通a相 sbic pinb,6 ;開通b相 sbis pinb,5 sbis pinb,7 ret bcout:sbic pinb,5 ;開通c相 sbic pinb,6 ;開通b相? sbis pinb,7 sbis pinb,4 ret cdout:sbic pinb,5 ;開通c相 sbis pinb,7 ;開通d相? sbis pinb,4 sbis pinb,6 ret 5.2 速度采集顯示子程序示例 .include "m16def.inc" .org $001c rjmp adcint .def channel=r29 ;模擬通道號 .def lresult=r2 ;轉換低字節 .def hresult=r3 ;轉換高字節 .def temp=r16 .equ sample=$0060 ;采樣數據1緩沖區首地址 .equ sample2=$0063 ;采樣數據2緩沖區首地址 .def round=r17 ;顯示回合計數器 .def outer=r19 ;存放外環計數器 .def inner=r18 ;存放內環計數器 .equ slabel=$0400 ;字符碼首地址 .def hxian=r2 ;存放預顯示高字節 .def lxian=r1 ;存放預顯示低字節 ;采集顯示速度占用系統資源r1r2s3r4r16,$60~$69 adcin:ldi channel,$04 ;從4通道開始 out admux,channel ldi r16,$ee ;自由運行方式 out adcsr,r16 ;啟動轉換 clr xh ;建立sram指針 ldi x1,$60 inc channel ;通道號增1 out admux,channel ;選通道4 sbi adcsr,3 ;開啟ad中斷 ldi r28,$03 ;轉換次數 adhere:rjmp adhere ;等待中斷 adcint:in lresult,adcl ;讀轉換結果 in hresult,adch st x+,lresult dec r28 brne adnextc rjmp adret adnextc:ldi r28,$03 ;轉換次數 inc channel ;通道號加1 out admux,channel ;選下一個通道 cpi x1,$70 ;轉換的是通道7嗎 brme adret ;否,返回 cbi ADCSR,7 ;是,停止轉換 adret:reti 6 結束語 實際使用證明:Atmel公司出品的Atmega16系列單片機具有處理速度快,內部外設功能模塊豐富等優點,是一種性價比較高的單片機,特別適用于電池供電、便攜式以及電機驅動等系統。本文的開關磁阻電機充分利用了該單片機豐富的內部外設模塊,因而簡化了外圍電路,大大提高了性價比。 |