黃 英, 趙志杰, 郭太峰
(1.合肥工業大學 電子科學與應用物理學院,安徽 合肥 230009;2.合肥工業大學 計算機與信息學院,安徽 合肥 230009)
步進電機是一個完整的數字模擬轉化執行元件。在非超載的情況下,電機轉速、停止位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,即其接受數字模擬型號(電脈沖信號)并轉化成與之相應的角位移。輸入一個脈沖信號就能得到一個規定的位置增量,所以可通過控制脈沖個數來控制角位移量,從而達到準確定位的目的;同時也可通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。加之步進電機只有周期性的誤差而無累積誤差等特點,在各控制領域步進電機的使用越來越廣泛[1]。
針對中國重汽新款重卡車型研發的新款儀表,采用瑞士SONCEBOZ公司型號6403R200的新型步進電機,微控制器(MCU)采用Freescale的MC9S12XHZ512芯片。
6403R200是6400系列儀表用步進電機的最新產品,采用無軸設計。工作電壓4.5~7.5V,驅動電流20mA,在-50℃~105℃的惡劣環境下也能正常工作[2]。
MC9S12XHZ512是Freescale公司在2006年10月推出的一款汽車儀表組設計的16位微控制器(MCU),其中集成了一個薄膜晶體管(TFT)顯示驅動。它負責處理關鍵應用的智能控制功能,并驅動汽車儀表板中的顯示屏。除了支持TFT顯示屏之外,該設備還可以驅動模擬儀表、液晶顯示屏(LCD)和發光二極管(LED)顯示屏。S12XHZ512的主要特色包括512KB的片上閃存(是以前S12HZ產品的2倍)、LCD驅動程序和儀表的步進馬達驅動模塊[3]。
本文主要利用S12XHZ512款中MCU所提供的12條道脈沖寬度調制(PWM)信道,采用軟件方式,實現儀表步進電機的驅動。
步進電機的驅動一般采用專用的驅動芯片和直接使用MCU驅動。專用芯片技術已相當成熟,在控制電機能力方面有較好的表現,具有一定的性價比和可操控性;用MCU驅動步進電機最簡單的方式是整步驅動,即直接用單片機的IO口產生各相脈沖通過功率器件來控制電機運轉。這種方法雖然簡單,卻存在精度不高、相電流突變導致運行不夠平穩、有噪聲等缺點[4]。還有一種驅動方式,即采用脈寬調制(PWM),此法適用于提供PWM模塊的MCU。
步進電機的細分技術實質上是一種電子阻尼技術,其主要目的是減弱或消除步進電機的低頻振動,提高電機的運轉精度只是細分技術的一個附帶功能。以步進角為1.8°的兩相混合式步進電機為例,如果細分驅動器設為4,那么電機的運轉分辨率為每個脈沖0.45°[2,5]。
控制技術是能夠較為有效地降低步進電機低頻運轉時的振動和噪聲的主要控制方法。不論是階梯型電壓驅動或PWM控制,實質都是在電機的勵磁繞組中產生階梯波電流,達到相電流的階梯化正弦控制,使每步的電機轉子合成力矩相同,產生一個微步旋轉磁場,從而帶動電機以更小的步距角轉動。同時由于正弦波電流變化平滑,電機運行更平穩、噪聲更小。
(1)啟動階段。通常電機在低于啟動頻率下啟動,逐步增加脈沖頻率直至期望的最大速度,其變化速度要保證電機不發生失步,且加速時間盡量短。
(2)勻速階段。當電機達到最大速度時,不再加速,勻速運行。
(3)停止階段。電機停止下來之前,必須從最高速度開始,逐步減小脈沖頻率,直到一個能停止的速度(約等同于啟動速率)。
所以,當步進電機在負載下轉動時,其運動過程為加速→勻速→減速。其速度變化可以近似表示為圖1所示的形式。

圖1 步進電機加/減速過程中的頻率變化
簡單加速算法就是用恒定的角加速度(即恒定的脈沖頻率)驅動電機,在此過程中,電機恒加速、恒減速,角速度是線性的一次函數。
在實際操作中,簡單加速算法往往不盡如人意,運行不夠平穩、安靜,精度亦無保障,所以對簡單加(減)速算法進行改進,加速度按照一定的指數曲線變化(上升或下降),角速度為非線性的指數(二次)函數。
變加(減)速算法更有利于步進電機運行,可以提高機器的定位精度,也可以縮短加速過程,提高性能。
參考Motorola公司的專用步進電機驅動芯片MC33976的設計模型和理念,對步進電機的加減速也采取24個步驟的形式。設第1步的脈沖發送次數為N1,第2步的脈沖次數為N2,依次類推至。其中,,為使算法更簡單易行,令Δ為常數[6]。
對于加速階段,多次試驗后得到一組優化數據,再將此組數據反向即可應用于減速階段。試驗結果令人滿意,步進電機角速度可以達到200°/s,噪音值≤30dB。
PWM(Pulse Width Modulation,簡稱PWM)脈寬調制,是一種開關式穩壓電源應用,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。
PWM技術是采用脈寬調制方式,即占空比不同的方波電壓產生不同的平均電流。
由于電機線圈電感對電流變化的阻礙作用,線圈中的電流波形圍繞平均值上下波動,當PWM波的頻率足夠高時,線圈中的電流可以看成為大小恒定電流。通過調節占空比可以產生不同的平均電流,如圖2所示。

圖2 PWM中電壓/電流波形對比
使用帶PWM模塊的單片機驅動步進電機可以獲得較高的細分精度,根據細分程度的要求,可以將正弦波分割成階梯狀,計算出各個位置所對應的電流值[7]。
模仿步進電機驅動芯片MC33976的驅動細分方式,將正弦波分割成階梯狀,以15°為細分單位,將單個脈沖細分為24個微步,采用相同的占空比[6-7],見表1所列和圖3所示。

表1 步進電機細分后各細步電流值

圖3 步進電機細分驅動電流示意圖
取MCPER=900(MCPER為PWM的電機寄存器時間,經過多次試驗后選取值為900),則電機控制的占空比系數為:

每個PWM信號重復1次。
步進電機是借助其同步轉矩而啟動的,通過對定子上的各個線圈交替通電產生步進式旋轉磁場,從而帶動轉子作步進式旋轉,相應改變輸入電流的極性來改變步進電機的旋轉方向。
在SCM的軟件設計上按照圖4所示方式,可實現步進電機的走步方案[8]。

圖4 軟件設計流程
(1)SinTb[]的計算方法:Sin#*900,再轉換為16進制數字。
(2)CosTb[]的計算方法:Cos#*900,再轉換為16進制數字,取值為 0,15°,…,330°,345°,360°。
如果轉動步數>4 000時,計數器清零,不操作。為使轉動平穩,精度更高,進行再次細分,即步數/2,分次走完全部的轉動步數。
當儀表掉電時,一些重要參數需要利用儀表電路板上的大電容儲存的少量余電進行工作,記錄到MCU的FLASH區或者片外EEPROM中。在下一次工作重啟后,再從這些儲存區讀出數據進行相關工作,即步進電機的回零。
本文直接將儲存區記錄的上一次工作狀態中當前步Current Position賦值給步進電機轉動所需步數,指定目標步為0,轉動方向恒為0。再以這些參數進行上節中所述操作,即可回零,只有回零后才可以進行后續的正常工作。
實驗中的PWM輸出波形如圖5所示,不同占空比的脈沖輸出代表不同的電壓輸出,此脈沖可以等效成正弦波電壓輸出。

圖5 PWM輸出波形
本方案在圖6所示的實際汽車儀表上演示,在大范圍同方向轉動以及往復轉動效果良好,指針走動平穩快速,可達到400°/s,完全符合設計需求,并且定位精準,無失步現象。實驗具體數據見表2所列。

圖6 實驗用電動汽車儀表

表2 PWM驅動步進電機走步實驗結果
實驗結果證實,利用單片機自帶的PWM模塊來實現步進電機的細分驅動,可以充分利用單片機的硬件資源,節省了D/A等器件,有利于降低產品成本,同時也使步進電機的細分驅動更容易。本文所采用的細分方法經過實踐驗證,在提高細分精度的同時,使步進電機的運行更平穩,噪聲明顯降低,此法已成功運用于某新款儀表中。
[1]舒大松.基于STC單片機的SPWM步進電機細分控制研究與實現[J].制造業與自動化,2011,33(3):92-102.
[2]Sonceboz Ltd.Slimline stepper motors 6403reference manual[EB/OL].[2011-10-02].http://www.sonceboz.com/medias/produits/fiches-techniques/6403-bd.pdf.
[3]Freescale Semiconductor Corporation.MC9S12XHZ512 datasheet[EB/OL].[2011-10-02].http://pdf.ic37.com/icasp/pdf-download.asp?id=4570478-217202.
[4]彭 礴,張明敏,林飛龍,等.基于AT89S52高精度步進電機伺服控制系統設計[J].電子測量技術,2011,34(3):49-53.
[5]黃 勇.一種基于TMS320F2812的五相電機細分驅動方案[J].湖北民族學院學報:自然科學版,2011,29(1):96-99.
[6]Freescale Semiconductor Corporation.MC33976Datasheet[EB/OL].[2011-10-02].http://pdf.ic37.com/icasp/pdfdownload.asp?id=4874451-114230.
[7]譚 曄,江 平.單變量均勻靜態奇數點細分格式的構造和連續性分析[J].合肥工業大學學報:自然科學版,2010,33(6):925-928.
[8]丁強強,鮑遠慧.基于CAN總線的汽車檢測線計算機控制系統[J].合肥工業大學學報:自然科學版,2010,33(4):514-518.