基于XC2267M的儀表盤步進電機控制
隨著現(xiàn)代電子技術的發(fā)展,中高檔汽車上的組合數(shù)字儀表越來越多地采用“機電一體化”的步進電機。步進電機又稱脈沖電動機,它能將輸入的脈沖信號變成不連續(xù)的機械動作,是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構。對步進電機的每一相來講,輸入的是一個脈沖列,只要控制好電脈沖,就能精確控制步進電機的角位移量,轉(zhuǎn)速和轉(zhuǎn)矩。從這個意義上來說,步進電機控制的核心是PWM(脈沖寬度調(diào)制)細分控制技術。
本文引用地址:http://www.ex-cimer.com/article/163231.htm
用單片機來控制步進電機已有近15年的發(fā)展歷史。出于降低總體成本的考慮,長期以來所采用的芯片都是8位單片機。由于單片機自身性能的局限性,對于步進電機的控制常常采用不徹底的細分控制或帶外設的細分控制。不徹底的細分控制一般是將步進電動機的控制位置數(shù)(以兩相步進電機為例)的四拍通電邏輯順序變?yōu)榘伺耐娺壿嬳樞?,從而將步進角降為原來的一半。這種方法細分度有限,電機運行極不平滑,而且對步進電機也有損傷。帶外設的細分控制能夠使步進電機的運行平滑穩(wěn)定,但增加了外部設備(如恒流斬波電路等),使得硬件設計趨于復雜,并且提高了成本。隨著科技的進步和單片機的進一步發(fā)展,16位單片機的價格不斷降低,使得其在步進電機控制上的廣泛應用成為可能。由于單片機自身功能曾強了,繁瑣的外部設備不再需要,軟件編程也變得相對簡單。這里即采用16位英飛凌單片機XC2267M實現(xiàn)步進電機的平穩(wěn)控制。
硬件選擇
Infineon XC2267M屬于XC2200微控制器系列,集成了電壓調(diào)節(jié)器和多種振蕩器,是全功能的16位單片CMOS微控制器。此方案主要使用的是XC2267M的CC2(Capture/Compare Unit2 捕獲/比較單元2)模塊。
CC2模塊提供了16個捕獲/比較通道以及同它們相配合的2個16位定時器,能支持16個內(nèi)部中斷。每個CC2通道都可捕獲內(nèi)部或外部事件,也可以比較計時器的內(nèi)容與給定值,并修改輸出信號。這里采用的是其中的8個通道配合8個I/O口控制4個步進電機。其中,SIN+和COS+為CC2通道,輸出PWM波形,SIN-和COS-為I/O口,進行0-1變化。
表1 CC2模塊各通道功能列表
由于單片機可以直接輸出幾路互不影響的PWM,所以無需依靠任何外部設備就可以同時實現(xiàn)對幾個步進電機的控制。
圖1 基于XC2267M的儀表盤步進電機控制示意圖(儀表盤其他模塊圖中未標明)
汽車儀表中應用的主要是兩相步進電機,即步進電機中有兩個獨立繞組(定子兩個相對極上的線圈串聯(lián)成為獨立繞組)。步進電機兩個繞組的夾角一般有90°和60°兩種樣式,實驗采用的是60°樣式的VID29-05,內(nèi)置減速比180:1的齒輪系,輸出軸的步距角最小為1/12°,最大角速度600°/s。
軟件編程
1確定細分度,建立變量賦值表
● 確定步進電機每圈的細分度,并根據(jù)細分度建立電機在每個位置的兩相PWM占空比表。這里采用的是15細分,即每步間隔24°。
● 根據(jù)兩相電壓表,結(jié)合所選用的單片機的特性建立對應的PWM寄存器賦值表,儲存在全局數(shù)組里。
● 根據(jù)所選用的步進電機型號的特性曲線,建立速度等級數(shù)組。步進電機的轉(zhuǎn)速完全和PWM寄存器賦值的速度有關。根據(jù)VID29-05的特性,速度數(shù)組里包含255個元素。這255個元素定義了PWM寄存器賦值的時間間隔,元素值越大,步進電機轉(zhuǎn)速越慢。
2 儀表盤步進電機驅(qū)動的編程注意事項
指針的運動要有“慣性”的視覺效果。即,指針從任意位置甲移動到目標位置乙的時候,在開始階段,要進行加速運動,運動至接近位置乙的時候,要進行減速,最后穩(wěn)定在位置乙。
加速減速的幅度與當前位置和目標位置的間距以及步進電機的選型相關。在指針轉(zhuǎn)動的過程中,對目標位置的變化要實時反應。只有在當前位置和目標位置的差距大于一定范圍時,指針才運動。步進電機不允許旋轉(zhuǎn)方向的突變,比如,電機正轉(zhuǎn)時接到反轉(zhuǎn)請求,一定要勻減速至0后才能反轉(zhuǎn)。
考慮到EMC的要求,PWM的頻率不要超過20kHz。
3 算法
主程序?qū)Ξ斍安綌?shù)和目標步數(shù)比較判定,決定是否轉(zhuǎn)動,以及轉(zhuǎn)動的速度大小。為達到這個目的,引入變量Move-time與轉(zhuǎn)動一步標志位Move_One_Step_Enable,實際轉(zhuǎn)動的速度控制通過在主循環(huán)最后Move_One_Step_Enable置1和依據(jù)當前步進電機速度級別從速度數(shù)組里取相應的元素對Move-time的賦值和來實現(xiàn)。只有當Move-time=0時,才再一次進入主循環(huán)對其進行賦值。
中斷程序?qū)ψ卟接嫊r遞減,并根據(jù)標志做馬達轉(zhuǎn)動一步處理。每進入一次中斷,只要Move-time不為0,則Move-time減1。如果Move_One_Step_Enable為1,步進電機賦值一次,否則不賦值,中斷時間為200μs。
評論