步進(jìn)電機(jī)在各種自動化控制系統(tǒng)中有著廣泛的應(yīng)用,是機(jī)電一體化裝置中的關(guān)鍵部件。這是一種數(shù)字控制的電動機(jī),是將電脈沖轉(zhuǎn)化為角他移的執(zhí)行機(jī)構(gòu),它通過控制脈沖個數(shù)和脈沖頻率來控制電機(jī)的角位移量和轉(zhuǎn)動速度,從而達(dá)到準(zhǔn)確定位和凋速的目的。
傳統(tǒng)的步進(jìn)電機(jī)所需的數(shù)字式電脈沖信號(即方波控制信號)一般都是借助數(shù)字邏輯電路米產(chǎn)生。隨著嵌入式技術(shù)的不斷發(fā)展,單片機(jī)的應(yīng)用更為廣泛,由單片機(jī)定 時來產(chǎn)生這種脈沖信號的場合越來越多。單片機(jī)定時控制脈沖一般有軟件定時和定時器定時兩種方式。前一種方式占用了CPU的大部分上作時間,所以常用定時器 定時中斷來產(chǎn)生脈沖信號。出于一般的單片機(jī)系統(tǒng)中斷響應(yīng)時間大部分在10μs級以上,因而定時器定時中斷來產(chǎn)生脈沖的精確度大致也在10μs 級以上,往往不能滿足步進(jìn)電機(jī)速度控制的高精度要求。為了提高脈沖控制的精確度,筆者采用瑞薩公司H8/3DOH系列的H8/3062F單片機(jī)中的可編程 定時式樣控制器進(jìn)行脈沖控制,使得脈沖信號輸出的相應(yīng)時間達(dá)到0.1μs級,從而能夠滿足步進(jìn)電機(jī)速度控制的高精度要求。
1 可編程定時式樣控制器TPC
可編程定時式樣控制器TPC是瑞薩公 司H8/3DOH系列單片機(jī)所特有的一個功能模塊,它用16位定時器作時基提供各種式樣的脈沖輸出。圖1為TPC的結(jié)構(gòu)框圖。TPC的脈沖輸出分成可同時 獨(dú)市運(yùn)作的4組,每組4位,分別由定時器的4個通道的比較匹配信號來觸發(fā)。TPC借用了端口B和端口A的共16條引腳TP15~TPO作為其輸出,可按位 開放。最多可以控制16個脈沖輸出,而輸出數(shù)據(jù)由兩端口的數(shù)據(jù)寄存器PBDR和PADR以及后續(xù)數(shù)據(jù)寄存器NDRB和NDRA提供。端口數(shù)據(jù)方向寄存器 PADDR和PBDDR用于控制引腳的輸入或輸出;而后續(xù)數(shù)據(jù)允許寄存器NDERA和NDERB用來開放或關(guān)閉TPC的端口輸出;TPC的輸出方式寄存器 TPMR用于選擇TPC每組的輸出方式;輸出控制寄存器TPCR則用于選擇TPC每組的觸發(fā)信號源,即由定時器的哪個通道觸發(fā)。其中單片機(jī) H8/3062F的定時器有3個通道,每個通道分別有3個寄存器:定時計數(shù)器TCNT、通用寄存器GRA和GRB。
定時器啟動后,定時器中已選定的某通道的計數(shù)寄存器TCNT將對時鐘源的脈沖進(jìn)行計數(shù)。當(dāng)TCNT等于該通道的通用寄存器GRA(GRB)中數(shù)值時,就稱 作該通道的A(B)比較匹配事件發(fā)生。這樣事先置于后續(xù)數(shù)據(jù)寄存器NDRA(NDRB)的值自動被傳送到相應(yīng)端口A(B)的數(shù)據(jù)寄存器PADR (PBDR)對應(yīng)的位,于是就更新了TPC的輸出值。
TPC有兩種輸出方式,即不重疊輸出和正常輸出??梢酝ㄟ^輸出方式寄存器TPMR,來選擇TPC每組的輸出方式。不重疊輸出方式是在脈沖輸出之間可保障有 不重疊裕度。在該通道的通用寄存器GRB中,設(shè)置不重疊TPC輸出波形的輸出觸發(fā)周期,則不重疊裕度置于GRA中,輸出值將在A比較匹配事件和B比較匹配 事件發(fā)生時變化觸發(fā)。正常輸出方式,則是在GRA中設(shè)置TPC輸出波形的輸出觸發(fā)周期,當(dāng)A比較匹配事什發(fā)生時TPC輸出信號。根據(jù)步進(jìn)電機(jī)的脈沖控制要 求,這里采用的是正常輸出方式。
TPC用于步進(jìn)電機(jī)脈沖控制的原理如下:首先,將通用寄存器GRA選作輸出比較寄存器;然后,將TPC下一個輸出的端口值置于后續(xù)數(shù)據(jù)寄存器NDRA (NDRB),再啟動定時器,當(dāng)A比較匹配事件發(fā)生時發(fā)出中斷請求。在研究TPC輸出時序的過程中發(fā)現(xiàn),TPC并非是在中斷響應(yīng)過程中給TPC端口送值 的,而是在A比較匹配事件發(fā)生的3個時鐘周期后,就把事先置于后續(xù)數(shù)據(jù)寄存器的值送到端口數(shù)據(jù)寄存器PADR(PBDR),于是就更新了TPC的輸出值。 由于H8/3062F系列的單片機(jī)時鐘頻率都在20MHz以上,這樣只需不到0.2ms,就可以送出端口信號,大大縮短了響應(yīng)時問,比一般的單片機(jī)在定時 中斷過程中送端口信號快了幾十倍甚至上百倍,從而使對脈沖控制的更加準(zhǔn)確。而在中斷子程序中則是更新后續(xù)數(shù)據(jù)寄存器NDRA(NDRB)和輸出比較寄存器 GRA的值,從而改變脈沖的頻率實現(xiàn)對異步電機(jī)的調(diào)速。圖2為產(chǎn)生脈沖頻率變化的原理圖。圖中GRA、GRA′和GRA″抽象地 表示3個不同的GRA值,從而演示了GRA值的改變對脈沖頻率的影響。
2 步進(jìn)電機(jī)的啟動、調(diào)速及加減速脈沖控制方案
采用H8/3062F的TPC的 TPl5引腳和I/0口的Pl.0分別控制步進(jìn)電機(jī)的速度和方向。TP15輸出的脈沖送至由功率管組成的電機(jī)驅(qū)動控制電路,使功率管工作在開關(guān)狀態(tài),步進(jìn) 電機(jī)停止時TP15的輸出保持高電平。這樣當(dāng)TP15輸出一個負(fù)脈沖時,功率管導(dǎo)通,從而使步進(jìn)電機(jī)前進(jìn)一步,通過控制TPl5輸出的脈沖頻率來實現(xiàn)步進(jìn) 電機(jī)的調(diào)速。Pl.0控制步進(jìn)電機(jī)的運(yùn)行方向。當(dāng)P1.0輸出為高電平時,步進(jìn)電機(jī)前進(jìn);反之,則后退。
步進(jìn)電機(jī)在負(fù)載情況下能夠正常啟動的脈沖頻率稱為“步進(jìn)電機(jī)啟動頻率”。如果脈沖頻率高于該值,則電機(jī)將不能正常啟動,可能發(fā)生 丟步或堵轉(zhuǎn);同樣步進(jìn)電機(jī)在制動時也應(yīng)該最后以啟動頻率制動。如果要使電機(jī)達(dá)到高速轉(zhuǎn)動,那么脈沖頻率應(yīng)該有個加速過程.即啟動頻率較低,然后按一定加速 度升到所希望的高頻(降速過程反之)。較為理想的啟動曲線,應(yīng)是按指數(shù)規(guī)律啟動,根據(jù)用戶的負(fù)載情況選擇不同的啟動頻率和不同的指數(shù)曲線,以找到一條最理 想的曲線。
一般在運(yùn)行控制過程中,采用“階梯升速法”將速度連續(xù)升到所需要的速度,按預(yù)置的曲線運(yùn)行速度轉(zhuǎn)換時間應(yīng)盡量短。為了縮短速度轉(zhuǎn) 換的時間,可以采用建立數(shù)據(jù)表的方法,結(jié)合各曲線段的頻率和各段間的階梯頻率便可以建立一個毪續(xù)的數(shù)據(jù)表。經(jīng)過多次“ 試機(jī)“計算 出256個脈沖頻率對應(yīng)的GRA值。其中:第一個為步進(jìn)電機(jī)啟動頻率對應(yīng)的GRA值;最后一個是步進(jìn)電機(jī)最大脈沖頻率對應(yīng)的GRA值,在軟件編程中存放在 數(shù)組中,用于改變脈沖頻率,實現(xiàn)對步進(jìn)電機(jī)的加減速控制。減速制動過程與加速啟動過程同理。圖3為階梯升速啟動示意圖。
3 軟件程序設(shè)計
軟件部分由1個主程序和3個子程序(TPC初始化子程序、定時器初始化子程序和中斷子程序)組成,程序用C語言編寫。TPC初始化子程序設(shè)定了TPl5為 輸出方式及其下一個輸出的電位,并且選擇輸出信號觸發(fā)源。定時器初始化子程序選擇了定時器時鐘源,及其計數(shù)器的清O源,并打開了定時中斷。中斷子程序?qū)崿F(xiàn) 了脈沖的輸出控制,從而實現(xiàn)步進(jìn)電機(jī)的調(diào)速。在編程中要重點考慮一個問題,就是離目標(biāo)點的距離與脈沖頻率位置變量的關(guān)系。這是是否加減速的依據(jù)。經(jīng)過計算 發(fā)現(xiàn),當(dāng)離目標(biāo)點的距離大于脈沖位置變量中的值加1時,步進(jìn)電機(jī)加速或者保持最高運(yùn)行速度;否則就要減速,不然到達(dá)目標(biāo)點時就可能無法以啟動頻率停止,從 而導(dǎo)致制動失敗。