新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于CPLD的步進(jìn)電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)及實(shí)現(xiàn)

一種基于CPLD的步進(jìn)電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)及實(shí)現(xiàn)

作者: 時(shí)間:2014-05-26 來源:網(wǎng)絡(luò) 收藏

0引言

本文引用地址:http://m.butianyuan.cn/article/247357.htm

數(shù)控技術(shù)是以數(shù)字量編程實(shí)現(xiàn)控制機(jī)械或其他設(shè)備自動(dòng)工作的技術(shù),數(shù)控機(jī)床就是采用了數(shù)控技術(shù)的機(jī)床,或者說裝備了數(shù)控系統(tǒng)的機(jī)床。機(jī)床數(shù)控系統(tǒng)主要由幾個(gè)部分組成:零件加工程序的輸入、數(shù)據(jù)處理、插補(bǔ)計(jì)算和運(yùn)動(dòng)機(jī)構(gòu)的控制。本文主要介紹最后一個(gè)部分運(yùn)動(dòng)機(jī)構(gòu)的控制,即如何控制電機(jī)的動(dòng)作??蛇x的電機(jī)有很多種,在這里我們選擇。

是數(shù)字控制電機(jī),是一種將電脈沖轉(zhuǎn)換成角位移的精密執(zhí)行元件。它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的,每給發(fā)一個(gè)脈沖電機(jī)就旋轉(zhuǎn)一個(gè)固定的角度,只要脈沖數(shù)發(fā)的正確,電機(jī)就能走到位,無累積誤差,所以對(duì)步進(jìn)電機(jī)的控制可以采用開環(huán)控制方法。如何精確且經(jīng)濟(jì)的控制步進(jìn)電機(jī)成為廣大研究人員探討的課題。本文將采用來實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制。并最終通過實(shí)驗(yàn)仿真結(jié)果。

1步進(jìn)電機(jī)驅(qū)動(dòng)原理

步進(jìn)電機(jī)的驅(qū)動(dòng)是靠給步進(jìn)電機(jī)的各相勵(lì)磁繞組通電,實(shí)現(xiàn)步進(jìn)電機(jī)內(nèi)部磁場(chǎng)方向的變化來使步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的。設(shè)我們所用的步進(jìn)電機(jī)是四相的,這四相分別為A,B,C,D,對(duì)應(yīng)于四對(duì)磁極。每個(gè)磁極的內(nèi)表面都分布著大小,齒間距相同的多個(gè)小齒(不同的步進(jìn)電機(jī),小齒的個(gè)數(shù)不同),假設(shè)Ⅳ為轉(zhuǎn)子中小齒的個(gè)數(shù)。當(dāng)這4相按A—B—C—D的順序通電時(shí),步進(jìn)電機(jī)的內(nèi)部磁場(chǎng)變化一周(360°),此種通電方式為單相四拍通電方式,此時(shí)步進(jìn)電機(jī)的步距角:

θ=90°/N

若N=50,則θ=1.8°

如果選擇的通電順序?yàn)锳—AB—B—BC—C—CD—D—AD,此種通電方式為雙相八拍通電方式,此時(shí)步進(jìn)電機(jī)的步距角為:

θ=45°/N

若N=50,則θ=0.9°

步距角是步進(jìn)電機(jī)一次能轉(zhuǎn)過的最小角度,電機(jī)的步距角越小,說明電機(jī)走的越精確,所以本文選擇驅(qū)動(dòng)電機(jī)通電的方式為雙相八拍通電方式。

2設(shè)計(jì)方案

一個(gè)完整的,控制精度高的步進(jìn)電機(jī)控制系統(tǒng)框圖如圖1所示。和步進(jìn)電機(jī)的驅(qū)動(dòng)器相連,驅(qū)動(dòng)器把輸出的信號(hào)放大后送入步進(jìn)電機(jī),由于數(shù)控機(jī)床的各個(gè)軸是靠電機(jī)的轉(zhuǎn)動(dòng)來帶動(dòng)的,所以電機(jī)的轉(zhuǎn)動(dòng)帶動(dòng)相應(yīng)軸的動(dòng)作。

 

 

各組成模塊功能描述如下:

2.1CPLD模塊

使用CPLD來控制步進(jìn)電機(jī)實(shí)現(xiàn)電機(jī)的啟動(dòng)、停止以及正反轉(zhuǎn)。傳統(tǒng)的方式是用單片機(jī)來控制步進(jìn)電機(jī),但是在一個(gè)數(shù)控系統(tǒng)中單片機(jī)要做的工作很多,比如單片機(jī)既要控制步進(jìn)電機(jī)還要接受上位機(jī)的數(shù)據(jù)做相應(yīng)的運(yùn)算,還要控制顯示模塊,以及報(bào)警處理等,如果改用CPLD來驅(qū)動(dòng)步進(jìn)電機(jī)則可以減輕單片機(jī)的負(fù)擔(dān)。用大規(guī)模可編程邏輯器件作為控制器,可以反映出CPLD在控制方面起到較高的作用,而不是僅僅作為邏輯器件來使用。并且CPLD具有較為經(jīng)濟(jì)的價(jià)格。

另外CPLD的外圍接口也較多,比如以ALTERA公司生產(chǎn)的EPM7032為例,它的I/O口有36個(gè),內(nèi)部的邏輯門有600多個(gè),除了驅(qū)動(dòng)步進(jìn)電機(jī)所用的資源外,其余剩余的資源還可在系統(tǒng)中做其他用途。

在實(shí)際電路板設(shè)計(jì)階段,如果用傳統(tǒng)的設(shè)計(jì)方法設(shè)計(jì)電路必須首先決定使用的器件類別和規(guī)格,然后從繪制硅片版圖開始,逐級(jí)向上,直至整個(gè)系統(tǒng)的設(shè)計(jì)。在這個(gè)過程中如果有哪一級(jí)發(fā)生問題必須返工重來,整個(gè)電路板將報(bào)廢。但是如果使用CPLD,設(shè)計(jì)方法是自頂向下的設(shè)計(jì)方法,就是在整個(gè)設(shè)計(jì)流程中各設(shè)計(jì)環(huán)節(jié)逐步求精的過程。比如在我們?cè)O(shè)計(jì)的一開始就可以先把CPLD和驅(qū)動(dòng)器相連,再通過軟件的設(shè)置來利用到我們已經(jīng)連好的引腳,如果程序出現(xiàn)錯(cuò)誤,可以同過ISP(在系統(tǒng)可編程的方法)把新的程序裝載到CPLD中,而不用更換電路板。

2.2驅(qū)動(dòng)器模塊

步進(jìn)電機(jī)的運(yùn)行要有一電子裝置進(jìn)行驅(qū)動(dòng),這種裝置就是步進(jìn)電機(jī)驅(qū)動(dòng)器,由于CPLD輸出的信號(hào)還不足以驅(qū)動(dòng)電機(jī)使電機(jī)轉(zhuǎn)動(dòng),所以在CPLD和步進(jìn)電機(jī)之間要連接驅(qū)動(dòng)器,放大CPLD輸出的信號(hào)。CPLD每發(fā)一個(gè)脈沖信號(hào),通過驅(qū)動(dòng)器就使步進(jìn)電機(jī)旋轉(zhuǎn)一步距角。因而控制送入步進(jìn)電機(jī)脈沖頻率,可以對(duì)電機(jī)進(jìn)行調(diào)速。脈沖發(fā)的快電機(jī)運(yùn)行的快,脈沖發(fā)的慢電機(jī)運(yùn)行的慢。對(duì)于電機(jī)轉(zhuǎn)速的控制可以間接通過調(diào)整對(duì)送入CPLD中CLK脈沖的頻率來實(shí)現(xiàn);控制步進(jìn)脈沖的個(gè)數(shù),可以對(duì)電機(jī)進(jìn)行精確定位。

3軟件實(shí)現(xiàn)

本文通過對(duì)CPLD進(jìn)行編程來實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制,使用的語言是VHDL語言,使用的編程環(huán)境是MAX+PLUSII??刂瞥绦蛴蓛纱蟛糠謽?gòu)成,一是實(shí)體部分,二是結(jié)構(gòu)體部分,實(shí)體的作用是描述端口的信息,結(jié)構(gòu)體的作用是描述電路的功能。

3.1實(shí)體部分

在實(shí)體中定義了6個(gè)端口。

CLK:時(shí)鐘信號(hào)

reset:復(fù)位信號(hào)

DIR:正轉(zhuǎn)信號(hào)

START:啟動(dòng)信號(hào)

STOP:停止信號(hào)

phase:輸出信號(hào)

3.2結(jié)構(gòu)體部分

在軟件設(shè)計(jì)中,重點(diǎn)是先正確寫出雙相八拍通電方式下的狀態(tài)轉(zhuǎn)換表。

 

 

表1中‘1’表示通電,‘0’表示斷電,S0~S7分別表示按A—AB—B—BC—C—CD—D—AD通電方式下的8個(gè)狀態(tài)。在此種狀態(tài)順序下電機(jī)正轉(zhuǎn),反之電機(jī)反轉(zhuǎn)。表中的S0~S7都是以二進(jìn)制數(shù)來表示,如果轉(zhuǎn)換為十六進(jìn)制數(shù)則分別為1,3,2,6,4,C,8,9。

程序的結(jié)構(gòu)體部分由3部分組成:說明部分,主控時(shí)序進(jìn)程,主控組合進(jìn)程。在說明部分中定義相關(guān)的信號(hào)及常數(shù);在主控時(shí)序進(jìn)程中負(fù)責(zé)把計(jì)算好的次態(tài)的信息送入初態(tài),并負(fù)責(zé)最后的輸出;在主控組合進(jìn)程中負(fù)責(zé)相關(guān)的計(jì)算,比如判斷啟動(dòng)和停止,正轉(zhuǎn)和反轉(zhuǎn),以及在正反轉(zhuǎn)狀態(tài)下如何取下一個(gè)狀態(tài)。下面這段程序就是結(jié)構(gòu)體里主控組合進(jìn)程中,如何判斷電機(jī)正反轉(zhuǎn)和下一步電機(jī)將如何動(dòng)作的程序段。

 

 

3.3系統(tǒng)仿真結(jié)果

整個(gè)控制程序的軟件波形仿真如下:

 

 

從圖2中可以看到,在模擬步進(jìn)電機(jī)啟動(dòng)、停止、正反轉(zhuǎn)時(shí)電機(jī)的狀態(tài)。比如在復(fù)位后當(dāng)START=‘1’時(shí),如果這時(shí)DIR=‘1’表示電機(jī)是正轉(zhuǎn),則電機(jī)的通電狀態(tài)是A—AB—B—BC—C—CD—D—AD,對(duì)應(yīng)的CPLD的輸出狀態(tài)就為S0~S7。當(dāng)DIR=‘0’時(shí)表示電機(jī)是反轉(zhuǎn),就圖2的截圖來說在 CLK的上升沿時(shí),輸出是狀態(tài)S2,因?yàn)樗那耙粋€(gè)狀態(tài)從圖上我們可以看出是S1。

4結(jié)束語

在數(shù)控系統(tǒng)中我們希望達(dá)到準(zhǔn)確、高效、經(jīng)濟(jì)的控制,在運(yùn)動(dòng)機(jī)構(gòu)的控制這一環(huán)節(jié),通過CPLD可以起到很好的效果,首先可以簡化硬件電路,提高電路的可靠性,其次可以通過對(duì)器件進(jìn)行編程來改變器件的結(jié)構(gòu),達(dá)到我們預(yù)期的功能,并且通過ISP在系統(tǒng)可編程的方法把程序加載到器件上。

通過CPLD可控制步進(jìn)電機(jī)的啟動(dòng)、停止、以及正反轉(zhuǎn),本文通過軟件仿真,驗(yàn)證了方案的正確性。本文所列舉的電機(jī)是四相的,如果是三相或是五相電機(jī),都可按本文的方法實(shí)現(xiàn),如果對(duì)電機(jī)采用的單相通電的方法,也可按本文的方法實(shí)現(xiàn),同樣只須稍微修改參數(shù)即可。

脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理


關(guān)鍵詞: CPLD 步進(jìn)電機(jī)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉