嵌入式步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計與實現(xiàn)
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機(jī)系統(tǒng)[1]。自20世紀(jì)70年代世界上第一個為嵌入式應(yīng)用而設(shè)計的微處理器誕生以來,已在幾十年的發(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è)計也成為軟硬件工程師越來越關(guān)心的問題。 步進(jìn)電機(jī)是工業(yè)控制中的一種常用執(zhí)行部件,具有控制靈活、價格低等優(yōu)點,因而在許多設(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ī)電元件,它實際上是一種單相或多相同步電動機(jī)。目前常用的步進(jìn)電機(jī)有3類:反應(yīng)式步進(jìn)電動機(jī)(VR)、永磁式步進(jìn)電動機(jī)(PM)和混合式步進(jìn)電動機(jī)(HB)。現(xiàn)以反應(yīng)式三相步進(jìn)電機(jī)為例說明其工作原理,定子鐵芯上有六個形狀相同的大齒,相鄰兩個大齒之間的夾角為60o。每個大齒上都套有一個線圈,徑向相對的兩個線圈串聯(lián)起來成為一個繞組,各個大齒的內(nèi)表面上又有若干個均勻分布的小齒。轉(zhuǎn)子是一個圓柱形鐵心,外表面上圓周方向均勻地布滿了小齒。轉(zhuǎn)子小齒的齒距是和定子相同的。設(shè)計時應(yīng)使轉(zhuǎn)子齒數(shù)能被2整除,但某一項繞組通電,而轉(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仿真器
圖1 四相步進(jìn)電機(jī)在開發(fā)板中的接法 四相步進(jìn)電機(jī)的控制方法有四相單四拍、四相單、雙八拍和四相雙四拍3種控制方式。步距角的計算公式為
其中: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)時的控制順序為A →AB→B→BC→C→CD→D→DA。EXI/O的高四位的值如表1所示。 表1 電機(jī)正轉(zhuǎn)時EXI/O高四位的值
反轉(zhuǎn)時,將控制信號按相反的順序給出即可。 4、用ARM匯編語言實現(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)點,有較大的推廣價值。用匯編語言實現(xiàn)對ARM的四路I/O通道輸出控制,實現(xiàn)環(huán)形脈沖分配用于控制步進(jìn)電機(jī),嵌入式技術(shù)可以大大減小系統(tǒng)的體積和重量,在環(huán)境比較惡劣的現(xiàn)場,基于ARM的系統(tǒng)可以提高系統(tǒng)的可靠性和穩(wěn)定性。

提交
超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型
新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會
派拓網(wǎng)絡(luò)被Forrester評為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲強(qiáng)基 | 海康威視帶來精彩主題演講
展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會