摘 要:介紹了
步進(jìn)電機(jī)的工作原理,提出了步進(jìn)電機(jī)嵌入式設(shè)計(jì)方法,采用先進(jìn)的ARM控制器,實(shí)現(xiàn)了軟件與硬件相結(jié)合的控制方法,用軟件代替脈沖分配器,達(dá)到了對步進(jìn)電機(jī)的最佳控制。
關(guān)鍵詞:步進(jìn)電機(jī); 嵌入式; ARM控制器
0、前言
嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[1]。自20世紀(jì)70年代世界上第一個為嵌入式應(yīng)用而設(shè)計(jì)的微處理器誕生以來,已在幾十年的發(fā)展歷程,如今嵌入式系統(tǒng)(embedded system)已經(jīng)成為電子信息產(chǎn)業(yè)中最具增長力的一個分支。隨著微電子技術(shù)的發(fā)展,嵌入式控制系統(tǒng)在工業(yè)生產(chǎn)智能化、自動化中的應(yīng)用越來越普及。尤其手機(jī)、PAD、GSP、機(jī)頂盒等新興產(chǎn)品的大量應(yīng)用,嵌入式系統(tǒng)的市場正在以每年30%的速度遞增,嵌入式系統(tǒng)的設(shè)計(jì)也成為軟硬件工程師越來越關(guān)心的問題。
步進(jìn)電機(jī)是工業(yè)控制中的一種常用執(zhí)行部件,具有控制靈活、價(jià)格低等優(yōu)點(diǎn),因而在許多設(shè)備和裝置中常被采用。嵌入式步進(jìn)電機(jī)控制器就是將微處理器置于電機(jī)控制器中,使步進(jìn)電機(jī)控制器能按設(shè)定的相數(shù)、拍數(shù)以及單個觸發(fā)脈沖所走的步數(shù),提供相應(yīng)的控制邏輯。
1、步進(jìn)電機(jī)的工作原理
步進(jìn)電機(jī)是一種能夠?qū)㈦娒}沖信號轉(zhuǎn)換成角位移或線位移的機(jī)電元件,它實(shí)際上是一種單相或多相同步電動機(jī)。目前常用的步進(jìn)電機(jī)有3類:反應(yīng)式步進(jìn)電動機(jī)(VR)、永磁式步進(jìn)電動機(jī)(PM)和混合式步進(jìn)電動機(jī)(HB)?,F(xiàn)以反應(yīng)式三相步進(jìn)電機(jī)為例說明其工作原理,定子鐵芯上有六個形狀相同的大齒,相鄰兩個大齒之間的夾角為60o。每個大齒上都套有一個線圈,徑向相對的兩個線圈串聯(lián)起來成為一個繞組,各個大齒的內(nèi)表面上又有若干個均勻分布的小齒。轉(zhuǎn)子是一個圓柱形鐵心,外表面上圓周方向均勻地布滿了小齒。轉(zhuǎn)子小齒的齒距是和定子相同的。設(shè)計(jì)時應(yīng)使轉(zhuǎn)子齒數(shù)能被2整除,但某一項(xiàng)繞組通電,而轉(zhuǎn)子可自由旋轉(zhuǎn)時,該相兩個大齒下的各個小齒將吸引相近的轉(zhuǎn)子小齒,使電動機(jī)轉(zhuǎn)動到轉(zhuǎn)子小齒與該相定子小齒對齊的位置,而其他兩相的各個大齒下的小齒必定和轉(zhuǎn)子的小齒分別錯開1/3的齒距,開成“齒錯位”,從而形成電磁引力使電動機(jī)連續(xù)地轉(zhuǎn)動下去。
永磁式步進(jìn)電動機(jī)和混合式步進(jìn)電動機(jī)的繞組電流要求正、反向流動,故驅(qū)動電路一般要做成
雙極性驅(qū)動。
2、相應(yīng)的軟硬件配置
硬件環(huán)境:主要包括ARM嵌入式開發(fā)板;用于ARM7TDMI的JTAG仿真器;Pentium100以上PC。
軟件環(huán)境:PC機(jī)操作系統(tǒng)工程Windows98以上、ARM SDT2.51或ASD1.2集成開發(fā)環(huán)境、仿真器驅(qū)動程序。
3、開發(fā)板中步進(jìn)電機(jī)的實(shí)現(xiàn)
開發(fā)板中使用的步進(jìn)電機(jī)為四相步進(jìn)電機(jī),轉(zhuǎn)子小齒數(shù)為64。系統(tǒng)中采用四路I/O進(jìn)行并行控制,ARM控制器直接發(fā)出多相脈沖信號,在通過功率放大后,進(jìn)入步進(jìn)電機(jī)的各相繞組。這樣就不再需要脈沖分配器了,其功能可以由純軟件的方法實(shí)現(xiàn),連接方法如圖1:
圖1 四相步進(jìn)電機(jī)在開發(fā)板中的接法
四相步進(jìn)電機(jī)的控制方法有四相單四拍、四相單、雙八拍和四相雙四拍3種控制方式。步距角的計(jì)算公式為
其中:m為相數(shù),孔制方法是四相單四拍和四相雙四拍時C為1??刂品椒ㄊ撬南鄦?、雙八拍時C為2,Zk為轉(zhuǎn)子小齒數(shù)。我們采用的是四相單、雙八拍控制方法,所以步距角應(yīng)為360o/512/8。
UP-NETARM300開發(fā)平臺中使用EXI/O的高四位控制四相步進(jìn)電機(jī)的四個相。按照四相單、雙八拍控制方法,電機(jī)正轉(zhuǎn)時的控制順序?yàn)锳 →AB→B→BC→C→CD→D→DA。EXI/O的高四位的值如表1所示。
表1 電機(jī)正轉(zhuǎn)時EXI/O高四位的值
反轉(zhuǎn)時,將控制信號按相反的順序給出即可。
4、用ARM匯編語言實(shí)現(xiàn)對步進(jìn)電機(jī)的控制
對步進(jìn)電機(jī)工作原理掌握后,通過程序完成對74HC573的高四位進(jìn)行操作來完成步進(jìn)電機(jī)的脈沖分配。在C 語言程序中調(diào)用匯編先要完成兩件工作:在C語言程序中使用extern關(guān)鍵字聲明外部函數(shù),即要聲明要調(diào)用的匯編子程序;在匯編程序中使用export偽指令聲明要C中要調(diào)用的匯編子程序,使用export聲明后其他程序可以調(diào)用此匯編程序。如下例:
4.1 C中調(diào)用匯編程序
#include
extern void strcopy(char *d,const char *s);
int main()
{ const char *srcstr=”First string-source”;
char dststr[]=”Second string - destinnation”;
printf(“Before copying:
”);
printf(“ %s
%s
”,srcstr,dststr);
strcopy(dststr,srcstr);
printf(“After copying:
”);
printf(“ %s
%s
”,srcstr,dststr);
return (0);
}
4.2 匯編語言字符串復(fù)制子程序
AREA Scopy, CODE, READONLY
EXPORT strcopy ;此句保證其他程序可調(diào)用此程序
Strcopy
LDRB r2, [r1],#1 ;裝載字節(jié)后將地址加1
STRB r2, [r1],#1 ;保存字節(jié)后將地址加1
CMP r2, #0 ;比較r2 是否為零
BNE Strcopy ;如果r2不等于零跳轉(zhuǎn)
MOV pc, 1r ;返回
END
4.3 原理圖
圖 74HC573控制原理
4.4 使用的程序如下:
AREA STEP, CODE, READONLY
EXPORT STEPCTROL
STEPCTROL
START MOV R0, #0
ADR R2, TABLE ;將表頭地址存入R2中
LOOP LDR R5,=0x0a000000草藥 ;bank5,將要寫入數(shù)據(jù)的地址放R5中
LDRB R1,[R2],#1 ;注意這里是先將R2中的數(shù)據(jù)(一個字節(jié))送入R1后R2的內(nèi)容所表示的地址再加1
STRB R1, [R5] ;將R1中的數(shù)據(jù)送入R5中的數(shù)據(jù)所表示的地址中
MOV R1,#0 ;從本句開始到DELAYOVER為兩級循環(huán)嵌套延時
REPEAT ADD R1,R1,#1 ; 將R1中的值加1再送入R1中
CMP R1, #400 ;[R1]和400比較
BNE NEXT1 ;如果上面的比較結(jié)果不等跳轉(zhuǎn)
B DELAYOVER
NEXT1 MOV R3, #2
NEXT2 ADD R3, R3, #2
CMP R3, #40
BNE NEXT2 ;將R3中的數(shù)據(jù)和40進(jìn)行比較,不等則跳轉(zhuǎn)
B REPEAT
DELAYOVER
ADD R0, R0, #1 ;控制循環(huán)八次
CMP R0, #8 ;將8和R0中的數(shù)比較
BNE loop ;如果上面的比較結(jié)果不等跳轉(zhuǎn)到loop,否則執(zhí)行下一條語句
B START
TABLE DCB ox10, ox30, ox20, ox60, ox40, oxc0, ox80, ox90
END
5、結(jié)束語
嵌入式步進(jìn)電機(jī)控制器,具有成本低、應(yīng)用方便、通用性強(qiáng)等優(yōu)點(diǎn),有較大的推廣價(jià)值。用匯編語言實(shí)現(xiàn)對ARM的四路I/O通道輸出控制,實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī),嵌入式技術(shù)可以大大減小系統(tǒng)的體積和重量,在環(huán)境比較惡劣的現(xiàn)場,基于ARM的系統(tǒng)可以提高系統(tǒng)的可靠性和穩(wěn)定性。
本文作者創(chuàng)新點(diǎn):基于ARM的嵌入式系統(tǒng)應(yīng)用在步進(jìn)電機(jī)控制器中, 實(shí)現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī),適用于環(huán)境比較惡劣的現(xiàn)場。
參考文獻(xiàn):
[1] 潘繼軍.基于ARM 的嵌入式系統(tǒng)實(shí)驗(yàn)分析[J].微計(jì)算機(jī)信息,2006,2—2:129-131,66
[2]Wayne Wolf.嵌入式計(jì)算機(jī)系統(tǒng)設(shè)計(jì)原理.孫云芳等譯.北京:機(jī)械工業(yè)出版社[M],2002
[3] 嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)實(shí)驗(yàn)教材1.魏洪興,周亦敏.北京:清華大學(xué)出版社[M],2005.9
[4] 李忠杰.步進(jìn)電動機(jī)應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,1988.
[5] Wind River System Inc. VxWorks NetWork Programmer’sGuide [Z]
[6] 劉保延,等.步進(jìn)電機(jī)及其驅(qū)動控制系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.