新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設(shè)計(jì)應(yīng)用 > 汽車(chē)儀表步進(jìn)電機(jī)控制算法的仿真

汽車(chē)儀表步進(jìn)電機(jī)控制算法的仿真

作者: 時(shí)間:2012-04-06 來(lái)源:網(wǎng)絡(luò) 收藏

在經(jīng)歷了機(jī)械式、電氣式、模擬電子式儀表時(shí)代后,進(jìn)入了如今的全數(shù)字式儀表時(shí)代。目前,國(guó)內(nèi)部分中、高檔轎車(chē),均配套使用。其它汽車(chē)也正在配套該類(lèi)型的儀表。,將是未來(lái)一段時(shí)間內(nèi)汽車(chē)儀表的主導(dǎo)產(chǎn)品,有著十分廣闊的市場(chǎng)前景。

本文引用地址:http://2s4d.com/article/196993.htm

今后,汽車(chē)儀表的功能將更加側(cè)重由軟件來(lái)完成。這對(duì)于產(chǎn)品數(shù)量大并且對(duì)成本極為敏感的汽車(chē)儀表有著特殊意義。與僅由電子硬件組成的汽車(chē)儀表相比,帶有ECU的汽車(chē)儀表功能的實(shí)現(xiàn)手段更加靈活多樣,產(chǎn)品的“柔性”更好,即在推出新款產(chǎn)品時(shí),能最大限度地利用以前產(chǎn)品的軟、硬件設(shè)計(jì)成果,這在產(chǎn)品更新?lián)Q代很快的今天和未來(lái)顯得尤為重要。

目前,很多半導(dǎo)體芯片制造商都生產(chǎn)汽車(chē)儀表板的微控制器,比如NEC、freescale、Fujitsu和Micronas等公司。在此介紹一種基于Micronas CDC3207G微控制器的汽車(chē)儀表板步進(jìn)電機(jī)控制的解決方案。

步進(jìn)電機(jī)控制

步進(jìn)電機(jī)又稱(chēng)脈沖電動(dòng)機(jī),它能將輸入的脈沖信號(hào)變成電動(dòng)機(jī)軸的步進(jìn)轉(zhuǎn)動(dòng),是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。在非超載的情況下,電機(jī)的轉(zhuǎn)速以及停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響。

控制步進(jìn)電機(jī)實(shí)際上是控制輸入脈沖序列,使步進(jìn)電機(jī)軸按照預(yù)定方向轉(zhuǎn)動(dòng)需要的角度。汽車(chē)儀表中應(yīng)用的主要是兩相步進(jìn)電機(jī),有兩個(gè)獨(dú)立繞組。通過(guò)控制兩個(gè)獨(dú)立繞組上的脈沖信號(hào),就能實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制。此外,一般步進(jìn)電機(jī)內(nèi)部在電機(jī)轉(zhuǎn)軸與指針之間都裝有降速齒輪組,使得轉(zhuǎn)動(dòng)軸與指針之間有一定的降速比,這樣可以降低指針轉(zhuǎn)動(dòng)的抖動(dòng),使電機(jī)指針轉(zhuǎn)動(dòng)更加平滑。

采用Microcomponents公司的SWITEC步進(jìn)電機(jī),其電機(jī)轉(zhuǎn)動(dòng)軸與指針之間的轉(zhuǎn)速比為180:1,即步進(jìn)電機(jī)轉(zhuǎn)動(dòng)軸旋轉(zhuǎn)180°,步進(jìn)電機(jī)的指針旋轉(zhuǎn)1°。

步進(jìn)電機(jī)

基本功能

控制算法主要功能是控制步進(jìn)電機(jī)以完成儀表的顯示,主要是根據(jù)實(shí)時(shí)數(shù)據(jù)計(jì)算得到顯示儀表的位置信息,再根據(jù)位置信息計(jì)算出步進(jìn)電機(jī)控制指令。對(duì)于內(nèi)部集成了步進(jìn)電機(jī)控制模塊的微控制器,控制算法最終輸出控制寄存器的數(shù)值,微控制器根據(jù)寄存器的數(shù)值產(chǎn)生驅(qū)動(dòng)信號(hào),實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制。

CDC3207G微控制器

CDC3207G微控制器是Micronas(微開(kāi))公司的一款基于ARM7TDMI內(nèi)核的32位[0]微控制器,它集成了7個(gè)步進(jìn)電機(jī)模塊,再加上PWM軟件模擬最多可以直接驅(qū)動(dòng)8路步進(jìn)電機(jī)。每個(gè)步進(jìn)電機(jī)模塊通過(guò)4個(gè)控制器內(nèi)部連接了H橋的高電流輸出端口,直接驅(qū)動(dòng)兩相步進(jìn)電機(jī)。通過(guò)軟件便可以產(chǎn)生步進(jìn)電機(jī)定位需要的各種脈沖。

CDC3207G的步進(jìn)電機(jī)模塊可以提供多通道的PWM輸出,輸出信號(hào)頻率通過(guò)硬件設(shè)置來(lái)選擇,并且各個(gè)步進(jìn)電機(jī)模塊輸出信號(hào)的時(shí)序具有偏移,可以提高電磁兼容性能(EMC)。

根據(jù)控制兩相步進(jìn)電機(jī)的需要,CDC3207G內(nèi)部提供了3個(gè)8位的寄存器,用于通過(guò)軟件來(lái)產(chǎn)生控制脈沖。其中兩個(gè)寄存器通過(guò)模塊中的比較器與模塊計(jì)時(shí)器進(jìn)行比較,用于產(chǎn)生驅(qū)動(dòng)電機(jī)的PWM信號(hào),另外一個(gè)寄存器用來(lái)選擇相應(yīng)步進(jìn)電機(jī)模塊以及選擇四個(gè)輸出引腳的極性。這樣,通過(guò)軟件對(duì)三個(gè)寄存器的操作就能方便地對(duì)每一路步進(jìn)電機(jī)進(jìn)行控制。

此外,CDC3207G還具有零位檢測(cè)功能,即檢測(cè)電機(jī)運(yùn)轉(zhuǎn)時(shí)的感應(yīng)電流,得到電機(jī)運(yùn)行的位置信息,據(jù)此判斷電機(jī)是否達(dá)到初始位置(即汽車(chē)儀表的零位)。

控制算法的實(shí)現(xiàn)

軟件的主要任務(wù)是根據(jù)不斷更新的步進(jìn)電機(jī)位置信息,計(jì)算控制寄存器的數(shù)值。同時(shí),為了滿(mǎn)足儀表指示的實(shí)時(shí)性要求,本方案采用周期性調(diào)用步進(jìn)電機(jī)控制函數(shù)的辦法,根據(jù)實(shí)際需要選擇周期。本方案中,調(diào)用步進(jìn)電機(jī)控制函數(shù)的周期為2ms。

除了需要滿(mǎn)足實(shí)時(shí)性以外,步進(jìn)電機(jī)控制函數(shù)還需要控制步進(jìn)電機(jī)平滑地運(yùn)轉(zhuǎn),這樣,指針的顯示才不會(huì)在視覺(jué)上給人以不適的感覺(jué)。為此,控制函數(shù)需要限制步進(jìn)電機(jī)的速度以及加速度。由于周期性更新步進(jìn)電機(jī)位置信息,所以控制函數(shù)是通過(guò)比較當(dāng)前位置與給定位置來(lái)計(jì)算每周期的步進(jìn)量,最終完成給定位置的顯示。控制函數(shù)流程圖如圖1所示。

11.jpg

圖1 步進(jìn)電機(jī)控制函數(shù)流程圖

本方案的SWITEC步進(jìn)電機(jī)的指針顯示范圍為330°,指針每轉(zhuǎn)動(dòng)一度,步進(jìn)電機(jī)轉(zhuǎn)動(dòng)軸需要轉(zhuǎn)動(dòng)180°,在軟件中分為256步來(lái)實(shí)現(xiàn)。所以,按照步進(jìn)數(shù)計(jì)算的步進(jìn)電機(jī)量程為330×256=84480步。

為保證指針顯示上平滑,流暢,需要限制每一周期的最大步進(jìn)數(shù)以及相鄰兩個(gè)周期步進(jìn)數(shù)量差,以常量MAX_SPEED以及MAX_ACC分別對(duì)電機(jī)運(yùn)行速度和加速度進(jìn)行限制。

由于需要周期性更新步進(jìn)電機(jī)的位置,且每一周期時(shí)間很短,步進(jìn)數(shù)量有限,所以,對(duì)于一個(gè)新的儀表位置,步進(jìn)電機(jī)要完成顯示往往需要多個(gè)周期來(lái)實(shí)現(xiàn)。

部分變量的簡(jiǎn)單說(shuō)明見(jiàn)表1。

表1 變量說(shuō)明

變量名稱(chēng)

pos_set

pos_act

pos_new

delay_time

speed

speed_old

含義

目標(biāo)地址

當(dāng)前位置

本周期結(jié)束位置

響應(yīng)時(shí)間

本周期步進(jìn)數(shù)

上周期步進(jìn)數(shù)

由于程序中的位置信息都是按照步進(jìn)數(shù)來(lái)表示的,因此,可以預(yù)先定義一個(gè)常數(shù)數(shù)組,保存步進(jìn)數(shù)對(duì)應(yīng)的控制寄存器的數(shù)值。這樣,根據(jù)需要步進(jìn)數(shù)查表便可以得到所需要的寄存器的數(shù)值。

控制算法分析

為了進(jìn)一步分析本算法的性能,用LabVIEW編程軟件進(jìn)行算法,這樣就可以很方便地在不連接步進(jìn)電機(jī)的情況下對(duì)算法進(jìn)行分析。在LabVIEW7.1中可以采用圖2的框圖對(duì)本算法進(jìn)行分析。

22.jpg

圖2 LabVIEW的算法框圖

在LabVIEW中,用一個(gè)while結(jié)構(gòu)來(lái)周期地對(duì)算法的目標(biāo)地址進(jìn)行處理,每次循環(huán)都得到pos_new的數(shù)值,即每周期結(jié)束后步進(jìn)電機(jī)的顯示數(shù)值,然后將該數(shù)值輸出到LabVIEW的前面板上。前面板如圖3所示。

33.jpg

圖3 LabVIEW的算法前面板

通過(guò)前面板中Start按鈕可以控制循環(huán)的開(kāi)始與結(jié)束,手動(dòng)改變pos_set的數(shù)值來(lái)模擬實(shí)際儀表中的數(shù)據(jù)變化。本例中該值的變化范圍為0至100,并且每次試驗(yàn)都使該值由0突變?yōu)?00。再用Gauge(量具)來(lái)步進(jìn)電機(jī)的顯示,可以很方便地觀察到不同參數(shù)改變后顯示的視覺(jué)效果。此外,還可以通過(guò)LabVIEW提供的繪圖功能得到控制算法中一些重要變量隨時(shí)間變化的圖像,更加直觀地進(jìn)行性能分析。

44.jpg

圖4 pos_new隨時(shí)間的變化

圖4為步進(jìn)電機(jī)目標(biāo)值pos_set由0突變?yōu)?00的過(guò)程中,步進(jìn)電機(jī)實(shí)際輸出值pos_new隨時(shí)間的變化曲線圖。由于設(shè)定的while循環(huán)周期為1ms,所以,時(shí)間軸顯示每周期步進(jìn)電機(jī)輸出,縱坐標(biāo)POS即為步進(jìn)電機(jī)的顯示結(jié)果。

觀察0至128ms區(qū)間的曲線,可以看出此階段曲線的斜率是逐漸增加的,表明步進(jìn)電機(jī)在加速運(yùn)行,因?yàn)槌跏茧A段步進(jìn)電機(jī)目標(biāo)位置與實(shí)際位置之間的差值很大,計(jì)算得到的speed_delta數(shù)值超過(guò)了MAX_ACC這一常數(shù)的限制。128ms至475ms區(qū)間的曲線為直線,說(shuō)明在此區(qū)間步進(jìn)電機(jī)已達(dá)到最大速度MAX_SPEED,并以該速度勻速運(yùn)行。

余下區(qū)間的曲線,斜率是逐漸減小的,這時(shí)步進(jìn)電機(jī)在減速運(yùn)行,因?yàn)檫@時(shí)目標(biāo)位置與實(shí)際位置的差值已經(jīng)很小,計(jì)算得到的speed_delta數(shù)值已經(jīng)處于由MAX_ACC限制的范圍內(nèi)。變量speed隨時(shí)間的變化曲線更能清楚地分辨出這三個(gè)過(guò)程。如圖5所示。

55.jpg

圖5 speed隨時(shí)間的變化

將常數(shù)MAX_ACC(即相鄰周期步進(jìn)數(shù)量的變化)由1改為10,得到結(jié)果如圖6所示。從中可以看出,增大MAX_ACC后,曲線中起始階段變陡了,即步進(jìn)電機(jī)起步階段的加速變快了,而步進(jìn)電機(jī)由初始值0到100的完成時(shí)間受到的影響不是很大。

66.jpg

圖6 改變MAX_ACC后pos_new隨時(shí)間的變化

由流程圖中不難看出,常數(shù)MAX_ACC只是限制了相鄰兩個(gè)周期步進(jìn)數(shù)的變化,而每周期步進(jìn)數(shù)的限制是由MAX_SPEED來(lái)設(shè)定的。將該數(shù)值由原來(lái)的128改變?yōu)?56再作同上的試驗(yàn)可以發(fā)現(xiàn),曲線中200ms至400ms之間變得更陡,步進(jìn)電機(jī)由0到100的完成時(shí)間縮短的比較明顯。這說(shuō)明通過(guò)改變每周期步進(jìn)數(shù)量的限制可以比較顯著地改變步進(jìn)電機(jī)的完成時(shí)間。

當(dāng)然,最后的顯示結(jié)果與仿真得到的結(jié)果,由于步進(jìn)電機(jī)自身性能的原因會(huì)有偏差,并且實(shí)際步進(jìn)電機(jī)還會(huì)有諸如噪音等一些用LabVIEW無(wú)法仿真出來(lái)的問(wèn)題。因此,用LabVIEW進(jìn)行的算法仿真只能作為參考,最后參數(shù)的確定還需要通過(guò)在實(shí)際步進(jìn)電機(jī)上進(jìn)行試驗(yàn)后才能完成。

結(jié)語(yǔ)

對(duì)于本控制方案,設(shè)計(jì)開(kāi)發(fā)人員可以根據(jù)實(shí)際的硬件(如步進(jìn)電機(jī)型號(hào))以及儀表產(chǎn)品的需要,在程序中修改相應(yīng)變量的上下限等常量數(shù)值,就能改變步進(jìn)電機(jī)指示的量程、指示的平滑性、響應(yīng)速度等一序列指標(biāo)。修改調(diào)試起來(lái)十分方便。

雖然本方案是針對(duì)CDC3207G微控制器而設(shè)計(jì)的,但是軟件設(shè)計(jì)中的控制算法思想,對(duì)于汽車(chē)儀表步進(jìn)電機(jī)的控制具有普遍的適用性。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉