引言
就 DC 馬達(dá)而言,,通過(guò)升高電壓(如果使用脈寬調(diào)制,則增加占空比),,可以控制馬達(dá)傳動(dòng)軸達(dá)到某個(gè)指定速度的快慢,。但是,如果是步進(jìn)馬達(dá),則改變電壓不會(huì)對(duì)馬達(dá)速度產(chǎn)生任何影響,。沒(méi)錯(cuò),,改變電壓大小可以改變繞組電流電荷的速率,從而改變步進(jìn)馬達(dá)的最大速度,,但是,,馬達(dá)速度是由繞組電流開(kāi)關(guān)或者整流的速率所決定。
我們可以做這樣的假設(shè)嗎:步進(jìn)馬達(dá)是一些不需要受控加速過(guò)程的機(jī)器,?如果可以,,那么我們就可以無(wú)所顧忌地讓步進(jìn)馬達(dá)工作在任何目標(biāo)速度下嗎?事實(shí)是,,相比其他馬達(dá)拓?fù)浣Y(jié)構(gòu),,步進(jìn)馬達(dá)更加需要通過(guò)加速和減速過(guò)程來(lái)激勵(lì)。以任意速度啟動(dòng)步進(jìn)馬達(dá),,可能會(huì)帶來(lái)可怕的后果,。
本文中,我們假設(shè)讀者已熟悉如何利用市場(chǎng)上已有集成微步進(jìn)驅(qū)動(dòng)器,,對(duì)步進(jìn)馬達(dá)進(jìn)行控制,。步進(jìn)驅(qū)動(dòng)器(例如:TI DRV8818等)的輸出與方波(“步進(jìn)輸入”)頻率成正比。每個(gè)“步進(jìn)”脈沖均等于驅(qū)動(dòng)器步進(jìn)邏輯定義步進(jìn)(即微步進(jìn)),。因此,,改變方波頻率,也會(huì)相應(yīng)改變步進(jìn)馬達(dá)的速率,。
圖 1 顯示了某個(gè)馬達(dá)制造廠商的傳統(tǒng)步進(jìn)速率/扭矩曲線圖,,其中起始頻率fs為一個(gè)重要參數(shù)。我們必須知道,,要想正常啟動(dòng)這種特殊的馬達(dá),,必須使用一個(gè)小于 fs 的步進(jìn)速率。使用大于 fs 的步進(jìn)速率啟動(dòng)馬達(dá),,可能會(huì)使馬達(dá)停轉(zhuǎn),,并失去同步性。一旦出現(xiàn)這種情況,,馬達(dá)轉(zhuǎn)動(dòng)控制將受到嚴(yán)重的影響。表面看起來(lái),,這是一個(gè)嚴(yán)重的問(wèn)題,,但實(shí)際卻很容易解決。您需要做的只是讓馬達(dá)以某個(gè)低于fs的步進(jìn)速率啟動(dòng),,然后提高速度,,直到達(dá)到目標(biāo)速度為止。遵循這一原則以后,步進(jìn)馬達(dá)便可以通過(guò)遠(yuǎn)超 fs 的步進(jìn)速率來(lái)驅(qū)動(dòng)—只要速度保持在所示扭矩/速度曲線以下,。
圖 1 雙極恒流步進(jìn)馬達(dá)的扭矩/速度曲線
同樣重要的是,,不能簡(jiǎn)單地通過(guò)停止“步進(jìn)”脈沖來(lái)讓馬達(dá)停止。相反,,應(yīng)把步進(jìn)速率從目標(biāo)速度降至某個(gè)能使馬達(dá)停止下來(lái)且沒(méi)有傳動(dòng)軸慣性的更低速率,,因?yàn)閭鲃?dòng)軸慣性會(huì)引起多余、無(wú)用的步進(jìn),。請(qǐng)記住,,如果在定位應(yīng)用中使用步進(jìn)馬達(dá),則如果馬達(dá)在應(yīng)該停止時(shí)還繼續(xù)轉(zhuǎn)動(dòng),,馬達(dá)傳動(dòng)軸便會(huì)失去定位,。由于閉環(huán)位置反饋很少用于驅(qū)動(dòng)步進(jìn)馬達(dá),因此確保僅執(zhí)行指令性步進(jìn)至關(guān)重要,。
加速/減速過(guò)程
為了使步進(jìn)馬達(dá)從起始速度加速至某個(gè)期望目標(biāo)速度,,只需以周期性間隔改變當(dāng)前速度。大多數(shù)工程師都使用微控制器來(lái)實(shí)現(xiàn)步進(jìn)馬達(dá)控制,。最常見(jiàn)的實(shí)現(xiàn)方法是只使用兩個(gè)定時(shí)器,。第一個(gè)是每秒步進(jìn) (SPS) 定時(shí)器,用于產(chǎn)生一種精確的步進(jìn)速率計(jì)時(shí)功能,。另外一個(gè)是加速定時(shí)器,,用于周期性地改變第一個(gè)定時(shí)器。由于速度受到周期性改變,,在本質(zhì)上得到與時(shí)間相關(guān)的角速度 (dv/dt),。這一過(guò)程被稱作加速度,即速度隨時(shí)間變化情況,。圖 2 顯示了一個(gè)典型的基于微控制器的加速度分布圖放大圖,,并描述了步進(jìn)馬達(dá)加速至目標(biāo)速度的過(guò)程。
圖 2 典型加速過(guò)程放大圖
SPS 是我們希望獲得的每秒步進(jìn)數(shù),,即馬達(dá)轉(zhuǎn)動(dòng)的步進(jìn)速率,。必須對(duì) SPS 定時(shí)器編程,實(shí)現(xiàn)以該速率發(fā)出脈沖,。根據(jù)定時(shí)器的振蕩器頻率,,典型方程式為:
其中SPS_timer_register 為一個(gè) 16 位數(shù)字,它告訴定時(shí)器產(chǎn)生后續(xù)“步進(jìn)”脈沖的所需時(shí)長(zhǎng),,而 timer_oscillator 為一個(gè)常量,,表示定時(shí)器的兆赫單位運(yùn)行速度。
以函數(shù)形式將該方程式存儲(chǔ)起來(lái),,因?yàn)榻?jīng)常會(huì)用到它,。為了理解它的工作過(guò)程,,我們假設(shè)定時(shí)器振蕩器工作在 8 MHz 下,并且期望的馬達(dá)步進(jìn)速率為 200 SPS,。根據(jù)該方程式,,程序代碼使 SPS_timer_register 值等于 40000。那么,,定時(shí)器每計(jì)時(shí)到 40000,,便產(chǎn)生一次“步進(jìn)”脈沖。這會(huì)產(chǎn)生每秒 200 脈沖的定時(shí)器型輸出以及 200SPS 的傳動(dòng)軸旋轉(zhuǎn),。
這種事件每次發(fā)生時(shí),,都會(huì)產(chǎn)生一次中斷,并且定時(shí)器被清空,。“步進(jìn)”輸入上升沿計(jì)時(shí)對(duì)于微步進(jìn)驅(qū)動(dòng)器精確度至關(guān)重要,,但只要其在下一個(gè)“步進(jìn)”上升沿之前,下降沿幾乎隨時(shí)會(huì)出現(xiàn),。
定義加速度曲線需要兩個(gè)參數(shù):(1)SPS 值變化頻率,;(2)SPS 值變化程度。加速度曲線與這兩個(gè)參數(shù)成正比,;也就是說(shuō),,SPS 值變化越頻繁,其值也越大,,而加速度曲線也會(huì)越大起大落,。加速度定時(shí)器同時(shí)控制這兩個(gè)參數(shù):定時(shí)器函數(shù)起作用的次數(shù)與 SPS 值每秒的變化次數(shù)相同,另外,,定時(shí)器的中斷服務(wù)程序 (ISR) 通過(guò)一個(gè)預(yù)先確定的因數(shù)定期增加當(dāng)前SPS,,從而確定新的速度。
使用每秒每秒步進(jìn) (SPSPS),,或者當(dāng)前 SPS 速率改變的每秒次數(shù),,來(lái)測(cè)定加速速率。如果通過(guò)增加 1 來(lái)改變 SPS 值,,則每次加速速率改變都必須調(diào)用(觸發(fā))加速度定時(shí)器的 ISR,。例如,加速速率為 1000 SPSPS 時(shí),,馬達(dá)速度以 200SPS 開(kāi)始,,并周期性增加 1,直至其達(dá)到 1200SPS,。那么,,加速度定時(shí)器的 ISR 需要調(diào)用 1000 次。
另外一種方法是,,加速度定時(shí)器調(diào)用頻率減半,,然后 SPS 周期性增加 2。相比前一個(gè)例子,,加速度定時(shí)器的 ISR 僅調(diào)用了 500 次,,但馬達(dá)仍然以 200SPS 啟動(dòng),并在 1 秒內(nèi)達(dá)到 1200SPS,。兩者的差別是更實(shí)時(shí)的可用性,,但代價(jià)是分辨率下降。換句話說(shuō),,為了達(dá)到 999 SPSPS 的精確加速速率,,必須使用第一種方法。
必須在兩種方法之間進(jìn)行權(quán)衡,,因?yàn)槟倪x擇決定了可以達(dá)到什么樣的馬達(dá)工作質(zhì)量,。例如,如果要求有很多粒度以達(dá)到所有可能的加速度過(guò)程,,則需要盡可能地調(diào)用加速度定時(shí)器的 ISR,。
但是,在前面的 SPS 定時(shí)器方程式中,,存在除運(yùn)算,。根據(jù)所使用處理 器內(nèi)核的不同,這種除運(yùn)算可能會(huì)極大限制 ISR 被有效調(diào)用并正確產(chǎn)生新 SPS 速率的次數(shù),。在使用 TI MSP430™ 且 CPU 運(yùn)行在 16 MHz下的實(shí)現(xiàn)中,,一次除運(yùn)算耗時(shí)約 500 µs。結(jié)果,,ISR 每秒被調(diào)用的最大次數(shù)為 2000 次,。這種限制決定了增量因數(shù)的大小。加速速率大于 2000 時(shí),,必須使用大于 1 的增量,。
在馬達(dá)啟動(dòng)前不久,便進(jìn)行一次加速速率計(jì)算,。負(fù)責(zé)該計(jì)算的軟件,,確定加速度定時(shí)器的時(shí)間間隔和增量因數(shù)大小,然后對(duì)各變量進(jìn)行相應(yīng)的配置,。同時(shí)使用這些變量,,直到對(duì) SPS 速率的修改足以達(dá)到目標(biāo)速度為止。一旦達(dá)到目標(biāo)速度,,加速終止,。
減速過(guò)程與加速過(guò)程基本一致,但增量因數(shù)為負(fù)而非正的情況除外,。另外,,必須規(guī)定一個(gè)馬達(dá)能夠安全停止的新目標(biāo)速度,。
圖 3 顯示了一個(gè)加速/減速過(guò)程,其中,,加速和減速速率對(duì)稱,。也可以使用非對(duì)稱速率。
圖 3 加速/減速過(guò)程
位置控制
到目前為止,,在速度控制環(huán)路中操作馬達(dá)看似十分簡(jiǎn)單,。馬達(dá)達(dá)到某個(gè)目標(biāo)速度,然后在某個(gè)時(shí)刻收到停止指令,。但是,,當(dāng)需要在某段預(yù)定時(shí)間內(nèi)執(zhí)行某個(gè)預(yù)定步進(jìn)數(shù)時(shí),結(jié)果會(huì)怎樣呢,?加速/減速過(guò)程變得比任何時(shí)候都要重要,。在這種運(yùn)行控制拓?fù)浣Y(jié)構(gòu)中,所有計(jì)劃步進(jìn)都執(zhí)行完畢后馬達(dá)便停止,,這一點(diǎn)至關(guān)重要,。規(guī)定步進(jìn)數(shù)的變量被稱作 number_of_steps。
必須對(duì)馬達(dá)運(yùn)動(dòng)情況編碼,,以使馬達(dá)在規(guī)定時(shí)間停止,,不用等待減速命令。實(shí)現(xiàn)這個(gè)目標(biāo)的一個(gè)方法是對(duì)一個(gè)名叫steps_to_stop的變量編程,,使其小于number_of_steps,。之后,軟件通過(guò)監(jiān)測(cè)steps_to_stop,,確定需要開(kāi)始減速的時(shí)機(jī),。
在達(dá)到目標(biāo)速度以前,加速會(huì)一直執(zhí)行,。達(dá)到目標(biāo)速度后,,在達(dá)到steps_to_stop計(jì)數(shù)(開(kāi)始減速之時(shí))以前,仍允許步進(jìn)馬達(dá)運(yùn)行,。例如,,1000步進(jìn)運(yùn)行時(shí),steps_to_stop設(shè)置為800,。因此,,馬達(dá)通過(guò)一個(gè)加速過(guò)程啟動(dòng),持續(xù)運(yùn)行至步進(jìn)800,,此時(shí)馬達(dá)開(kāi)始減速,,直到停止運(yùn)行。
根據(jù)所有系統(tǒng)變量的配置,我們需要研究下列5種情況(參見(jiàn)圖 4):
情況1:在馬達(dá)達(dá)到目標(biāo)速度以前所有步進(jìn)結(jié)束,。
情況2:馬達(dá)達(dá)到目標(biāo)速度時(shí)所有步進(jìn)結(jié)束,。
情況3:達(dá)到停止速度以前所有步進(jìn)結(jié)束。
情況4:達(dá)到停止速度時(shí)所有步進(jìn)結(jié)束,。
情況5:達(dá)到停止速度后所有步進(jìn)結(jié)束,。
圖 4 5種加速/減速情況
恰好在達(dá)到停止速度時(shí)馬達(dá)停止(情況4)是一種理想情況,。在達(dá)到停止速度前不久(情況3)或者以后(情況5)馬達(dá)停止是可以接受的,,具體取決于出現(xiàn)這些情況時(shí)距離理想情況還差多少個(gè)步進(jìn)。例如,,如果馬達(dá)轉(zhuǎn)動(dòng)過(guò)快時(shí)所有步進(jìn)結(jié)束,,則馬達(dá)傳動(dòng)軸可能會(huì)因轉(zhuǎn)動(dòng)慣量而失去位置。但是,,如果在所有步進(jìn)執(zhí)行完以前達(dá)到停止速度,,則執(zhí)行該次馬達(dá)運(yùn)動(dòng)控制所需的總時(shí)間會(huì)過(guò)長(zhǎng)。
情況1和2僅為說(shuō)明需要,,應(yīng)該不會(huì)出現(xiàn),,因?yàn)樵O(shè)計(jì)人員應(yīng)始終確保steps_to_stop小于number_of_steps。了解所有可能出現(xiàn)的情況以后,,設(shè)計(jì)人員可以簡(jiǎn)單地對(duì)系統(tǒng)進(jìn)行微調(diào),,以獲得最佳響應(yīng)。
只需少許微調(diào)的另一種方法是,,將步進(jìn)總數(shù)分割成幾個(gè)百分?jǐn)?shù),,分配給每個(gè)加速/減速過(guò)程特定區(qū)域。在這種算法實(shí)現(xiàn)中,,可選擇步進(jìn)總數(shù)的20%用以對(duì)馬達(dá)加速,,60%用以使馬達(dá)恒速運(yùn)行,其余20%用以對(duì)馬達(dá)減速(參見(jiàn)圖5),。如果number_of_steps為1000,,則馬達(dá)以預(yù)設(shè)加速度加速200個(gè)步進(jìn),然后無(wú)論它達(dá)到何種步進(jìn)速率都停止加速,。之后,,以這種速率執(zhí)行600個(gè)步進(jìn),并且最后200個(gè)步進(jìn)執(zhí)行完全部減速過(guò)程,。
圖 5 基于百分比的加速/減速過(guò)程
請(qǐng)注意,,使用這種算法時(shí),假設(shè)正確選擇百分比的情況下,,步進(jìn)不可能在馬達(dá)運(yùn)動(dòng)過(guò)程的錯(cuò)誤部分耗盡,。就圖5所示例子而言,由于加速和減速部分都很平衡,,因此馬達(dá)最可能以相同速度開(kāi)始和停止,。這種方法的缺點(diǎn)是,,很難保證達(dá)到目標(biāo)速度。如果目標(biāo)速度不那么重要,,則可以使用這種算法來(lái)確保馬達(dá)始終在安全速度下停止,。
如果速度達(dá)到對(duì)應(yīng)用來(lái)說(shuō)過(guò)慢,使用這種算法加速馬達(dá)傳動(dòng)軸的唯一方法是,,提高加速速率,,或者增加加速/減速區(qū)域中使用的步進(jìn)數(shù)百分比。但是,,設(shè)計(jì)人員必須小心操作,,不要讓馬達(dá)運(yùn)行速度違反馬達(dá)扭矩/速度曲線。
結(jié)論
雙極步進(jìn)馬達(dá)加速和減速,,是所有步進(jìn)馬達(dá)應(yīng)用設(shè)計(jì)的關(guān)鍵部分,。盡管在過(guò)去十年里,功率級(jí)控制已得到極大簡(jiǎn)化,,但是加速和減速過(guò)程應(yīng)用程序仍未從應(yīng)用處理器領(lǐng)域銷聲匿跡,。由于各色步進(jìn)馬達(dá)解決方案的存在,能夠正確處理應(yīng)用步進(jìn)馬達(dá)運(yùn)動(dòng)控制的一些算法,,更加容易編碼和微調(diào),。通過(guò)正確地對(duì)馬達(dá)加速和減速,設(shè)計(jì)人員可以確保應(yīng)用高效運(yùn)行,,并達(dá)到各種規(guī)范要求,。
加速/減速型實(shí)現(xiàn)的代碼結(jié)構(gòu)詳情,請(qǐng)參閱《參考文獻(xiàn)1》,。這種實(shí)現(xiàn)圍繞一個(gè)類似于DRV8818的功率級(jí),,并使用一個(gè)MSP430微控制器。
參考文獻(xiàn)
“利用DRV8811/18/24/25設(shè)計(jì)智能步進(jìn)馬達(dá)驅(qū)動(dòng)器”,,作者:Jose Quinones,, www.ti.com/lit/SLVA488
相關(guān)網(wǎng)站
http://www.ti.com.cn/ww/motor_drive_and_control_solutions/index.htm
www.ti.com.cn/product/cn/partnumber
用DRV8811、DRV8818,、DRV8824或者DRV8825代替地址中的“partnumber”,。