摘 要:介紹一種基于DMA控制器的步進(jìn)電機(jī)軟件環(huán)形脈沖分配器的設(shè)計(jì)。該設(shè)計(jì)具有容易實(shí)現(xiàn),占用CPU資源少,速度快等優(yōu)點(diǎn)。
1 引言
步進(jìn)電機(jī)是數(shù)字控制系統(tǒng)中重要的執(zhí)行元件,廣泛應(yīng)用于各種控制系統(tǒng)中。步進(jìn)電動(dòng)機(jī)的作用是將脈沖電信號(hào)轉(zhuǎn)換成機(jī)械角位移,每當(dāng)電機(jī)繞組輸入一個(gè)電脈沖,電機(jī)轉(zhuǎn)子便轉(zhuǎn)動(dòng)一個(gè)步進(jìn)角,電機(jī)轉(zhuǎn)動(dòng)的角位移和角速度分別由輸入電脈沖和電脈沖的頻率確定,控制精度在一般情況下,由步進(jìn)角決定。由于步進(jìn)電機(jī)的工作原理是各繞組必須按一定的順序通電變化才能正常工作(A AB B BC C CA A AB B ……),完成這種通電順序變化規(guī)律的部分稱為環(huán)形脈沖分配器。步進(jìn)電機(jī)的環(huán)形分配器設(shè)計(jì)通??梢圆捎?a href="http://www.194w.cn/v/tag/1751/" target="_blank">硬件和軟件兩種方法。軟件分配器的特點(diǎn)是可以充分利用計(jì)算機(jī)資源降低硬件成本,適用多相脈沖分配,但將占用計(jì)算機(jī)運(yùn)行時(shí)間,可能影響步進(jìn)電機(jī)的運(yùn)行速度。本文通過利用 DMA 控制器,設(shè)計(jì)了響應(yīng)速度快,占用 CPU 時(shí)間少的脈沖分配器。
2 基于 DMA 控制器的脈沖分配器設(shè)計(jì)
2.1 微機(jī)控制的步進(jìn)電機(jī)驅(qū)動(dòng)原理
微機(jī)控制的步進(jìn)電機(jī)驅(qū)動(dòng)電路原理框圖如圖1 所示,系統(tǒng)由單片機(jī),環(huán)形脈沖分配器,功率放大器等組成。步進(jìn)電機(jī)的控制過程一般由單片機(jī)和環(huán)形脈沖分配器來完成,功率放大器按照控制規(guī)律驅(qū)動(dòng)控制電機(jī)運(yùn)轉(zhuǎn)。從計(jì)算機(jī)或環(huán)形分配器輸出的脈沖信號(hào),其電流和功率較小,不能直接驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng),脈沖信號(hào)必須經(jīng)功率放大才能驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。采用微機(jī)對(duì)步進(jìn)電機(jī)進(jìn)行控制,控制線路簡(jiǎn)單,控制方案改變?nèi)菀祝m應(yīng)性強(qiáng)。
圖 1 步進(jìn)電機(jī)驅(qū)動(dòng)原理框圖
環(huán)形脈沖分配器的軟件分配方法即完全由軟件編程來實(shí)現(xiàn)步進(jìn)電機(jī)相序信號(hào)分配,直接從微機(jī)輸出信號(hào)端口輸出控制信號(hào)實(shí)現(xiàn)脈沖分配的方法。軟件分頻就是利用查表或計(jì)算軟件進(jìn)行控制脈沖分頻,按一定順序讀取數(shù)據(jù)(正向讀取或反向讀取數(shù)據(jù)控制電機(jī)正反轉(zhuǎn)),并通過輸出接口輸出相應(yīng)的電信號(hào),經(jīng)功率放大提供給相應(yīng)的電機(jī)繞組控制電機(jī)運(yùn)轉(zhuǎn)。電機(jī)的轉(zhuǎn)速由輸入的脈沖信號(hào)頻率決定,也就是說,電機(jī)轉(zhuǎn)速控制是通過控制輸入脈沖信號(hào)的頻率實(shí)現(xiàn)。電機(jī)的轉(zhuǎn)向可以通過控制勵(lì)磁信號(hào)加載的順序來實(shí)現(xiàn)。
軟件脈沖分配器要依據(jù)脈沖頻率和轉(zhuǎn)向控制要求來產(chǎn)生電機(jī)繞組的控制波形。以二相步進(jìn)電機(jī)為例,其正轉(zhuǎn)和反轉(zhuǎn)的勵(lì)磁狀態(tài)轉(zhuǎn)換如表 1 所示??梢园焉鲜鲛D(zhuǎn)換表存入內(nèi)存表中,以一定頻率按順序循環(huán)讀取數(shù)據(jù),并輸出相應(yīng)的脈沖信號(hào)。
表 1 步進(jìn)電機(jī)繞組通電狀態(tài)轉(zhuǎn)換表
2.2 DMA 控制器基本原理
DMA 即直接存儲(chǔ)器存取,是一種快速傳送數(shù)據(jù)機(jī)制。DMA 技術(shù)的重要性在于,利用它進(jìn)行數(shù)據(jù)存取時(shí)不需要 CPU 進(jìn)行干預(yù),可提高系統(tǒng)執(zhí)行應(yīng)用程序的效率。利用 DMA 傳送數(shù)據(jù)的另一個(gè)好處是,數(shù)據(jù)直接在源地址和目的地址之間傳送,不需要中間媒介。DMA 對(duì)總線控制的優(yōu)先級(jí)比 CPU 更高,所以能在 DMA 請(qǐng)求發(fā)生后非常短的時(shí)間內(nèi),就可把數(shù)據(jù)從源地址送到目的地址 。
為了保證步進(jìn)電機(jī)的控制精度,必須把內(nèi)存表中的四位數(shù)據(jù)按等時(shí)間間隔同時(shí)發(fā)送到輸出端口。純軟件的實(shí)現(xiàn)方法因?yàn)檐浖?zhí)行的不確定性較難保證時(shí)間控制的精確度。有些文獻(xiàn)采取較常見的外接 EPROM[2]的方式實(shí)現(xiàn)。但是外接EPROM 的方法必須增加一個(gè)器件,就加大了電路設(shè)計(jì)的復(fù)雜度,也增加了成本。
DMA 控制器是通常的單片機(jī)都具備的片內(nèi)資源。以定時(shí)器中斷為 DMA 請(qǐng)求因子,使 DMA控制器把內(nèi)存表數(shù)據(jù)直接傳送到端口輸出,實(shí)現(xiàn)了類似外接 EPROM 一樣的控制精度,也不會(huì)增加使用CPU進(jìn)行數(shù)據(jù)傳輸帶來的額外時(shí)間和資源的消耗。
2.3 基于 DMA 控制器的脈沖分配器系統(tǒng)設(shè)計(jì)
2.3.1 系統(tǒng)工作原理
以瑞薩的 MCU M16C/62P[2]為例,原理如圖2所示。先把表1的正轉(zhuǎn)和反轉(zhuǎn)狀態(tài)轉(zhuǎn)換表分別存入內(nèi)存表中。然后,開始初始化 DMA 控制器:設(shè)置 DMA 請(qǐng)求因子為定時(shí)器B4中斷,DMA 數(shù)據(jù)源為上述內(nèi)存表的起始地址,傳輸目的為連接外部功率放大電路的 4 位通用 I/O 端口;再根據(jù)狀態(tài)表的長度設(shè)置 DMA 計(jì)數(shù)器,使其循環(huán)輸出這一塊內(nèi)存區(qū)域。最后,初始化 TmerB4:設(shè)置 TimerB4 工作在定時(shí)器模式,以 3MHz 時(shí)鐘為例作為輸入?yún)⒖紩r(shí)鐘,根據(jù)轉(zhuǎn)速要求計(jì)算并設(shè)置定時(shí)器的計(jì)數(shù)值。在初始化完成之后,就可以通過控制定時(shí)器B4,產(chǎn)生步進(jìn)電機(jī)的控制信號(hào)了??刂齐姍C(jī)旋轉(zhuǎn)時(shí),打開定時(shí)器 B4 開始計(jì)數(shù),達(dá)到計(jì)數(shù)值時(shí)就產(chǎn)生一次中斷。每當(dāng)定時(shí)器 B4 發(fā)生一次中斷,就產(chǎn)生一次 DMA 請(qǐng)求;這時(shí) DMA 控制器就從內(nèi)存表中讀出4位數(shù)據(jù),傳輸?shù)捷敵龆丝?,?duì)應(yīng)步進(jìn)電機(jī)就前進(jìn)一步;同時(shí),指向內(nèi)存表的指針也相應(yīng)的前進(jìn)一步,指向下一個(gè)要輸出的狀態(tài)向量。定時(shí)器的計(jì)數(shù)值也需要在中斷時(shí)重新載入,用來產(chǎn)生下一次中斷。定時(shí)器以一定頻率產(chǎn)生中斷,就不斷產(chǎn)生脈沖輸出,電機(jī)就按一定的速度運(yùn)轉(zhuǎn)起來了。要控制電機(jī)停止時(shí),停止定時(shí)器的計(jì)數(shù),即停止了脈沖的輸出,電機(jī)就停止轉(zhuǎn)動(dòng)。
圖 2 基于 DMA 的軟件環(huán)形脈沖分配器原理圖
2.3.2 電機(jī)轉(zhuǎn)速和轉(zhuǎn)向控制
根據(jù)所選用電機(jī)的使用手冊(cè),可以查出該電機(jī)的步距角。步距角對(duì)應(yīng)一個(gè)脈沖信號(hào),由此可以計(jì)算得到輸入脈沖頻率和電機(jī)轉(zhuǎn)速的對(duì)應(yīng)關(guān)系。例如,某款電機(jī)步距角為 7.5 度,即表示輸入一個(gè)脈沖信號(hào)對(duì)應(yīng)電機(jī)旋轉(zhuǎn) 7.5 度。為了控制該電機(jī)輸出 1200rpm 的轉(zhuǎn)速,計(jì)算出該電機(jī)達(dá)到1200rpm 要求輸入的脈沖頻率是 955HZ。脈沖頻率對(duì)應(yīng)于定時(shí)器中斷產(chǎn)生的頻率。因此,以定時(shí)器輸入頻率為 3MHZ 為例,定時(shí)器的計(jì)數(shù)應(yīng)設(shè)置為:3000000/955-1 =3140。
修改定時(shí)器的計(jì)數(shù)值就改變了定時(shí)器中斷發(fā)生的頻率,即也改變了脈沖輸出的頻率,從而改變了步進(jìn)電機(jī)的轉(zhuǎn)速。因此,控制步進(jìn)電機(jī)的轉(zhuǎn)速可通過修改控制定時(shí)器的計(jì)數(shù)值來實(shí)現(xiàn)。在實(shí)際控制系統(tǒng)中,電機(jī)的轉(zhuǎn)速變化通常不是在瞬時(shí)完成,而需要一個(gè)逐漸上升或下降的控制過程;可以把速度變化的過程分解成幾個(gè)離散的步驟,逐步實(shí)現(xiàn)速度的變化。這時(shí)就可以按各個(gè)步驟的速度控制要求修改定時(shí)器的計(jì)數(shù)值,實(shí)現(xiàn)轉(zhuǎn)速的變化控制。同時(shí),電機(jī)啟動(dòng)時(shí)設(shè)置 DMA 數(shù)據(jù)源指針指向正轉(zhuǎn)或反正表,就能控制電機(jī)的轉(zhuǎn)向。系統(tǒng)的軟件框圖如圖3所示。
圖3 軟件框圖
3 結(jié)束語
本文提出的方法,已經(jīng)成功地應(yīng)用于復(fù)印機(jī)產(chǎn)品的控制中。采用該方法,節(jié)省了硬件脈沖分配器件的成本。實(shí)踐表明,該方法具有控制響應(yīng)速度快,節(jié)省 CPU 運(yùn)行時(shí)間等優(yōu)點(diǎn)。同時(shí),該方法只要修改狀態(tài)表,就可以適用于多相脈沖分配。由于通常單片機(jī)都具有 DMA 控制器,因而,該方法容易在不同的平臺(tái)上實(shí)現(xiàn),易于推廣。
圖 4 速度分布示意圖
圖 5 帶臺(tái)階的斗葉背面簡(jiǎn)圖
4 水斗側(cè)面破壞分析
水斗的側(cè)面、即水斗出水邊背面,也曾經(jīng)有過遭到剝蝕破壞的情況,受破壞的原因仍然是水斗出水的周期性沖擊作用所致,只是由于出水的能量甚小,因此破壞力不大。若前一個(gè)水斗的出水不磨擦到后一個(gè)水斗的側(cè)面,此類破壞幾乎可以完全避免,這就是幾乎所有沖擊式水輪機(jī)的水斗很少受到這種破壞的原因。要防止該情況的發(fā)生,主要是要設(shè)計(jì)合理的型線,并保證良好的加工工藝就能滿足。
5 結(jié)束語
總之,經(jīng)過該電站的處理,今后在產(chǎn)品的設(shè)計(jì)過程中,只要保證正確的設(shè)計(jì),合理的選型,選擇合適的材料,合理的工藝,就基本能杜絕該現(xiàn)象的發(fā)生。但由于電站運(yùn)行水頭有越來越高的趨勢(shì),因此在水斗型線的改善,材料性能的提高,鑄造工藝的完善上都有待于進(jìn)一步的提高。
評(píng)論