基于CPLD的步進(jìn)電機驅動(dòng)模塊設計
數控技術(shù)是以數字量編程實(shí)現控制機械或其他設備自動(dòng)工作的技術(shù),數控機床就是采用了數控技術(shù)的機床,或者說(shuō)裝備了數控系統的機床。機床數控系統主要由幾個(gè)部分組成:零件加工程序的輸入、數據處理、插補計算和運動(dòng)機構的控制。本文主要介紹最后一個(gè)部分運動(dòng)機構的控制,即如何控制電機的動(dòng)作??蛇x的電機有很多種,在這里我們選擇步進(jìn)電機。
步進(jìn)電機是數字控制電機,是一種將電脈沖轉換成角位移的精密執行元件。它的旋轉是以固定的角度一步一步運行的,每給步進(jìn)電機發(fā)一個(gè)脈沖電機就旋轉一個(gè)固定的角度,只要脈沖數發(fā)的正確,電機就能走到位,無(wú)累積誤差,所以對步進(jìn)電機的控制可以采用開(kāi)環(huán)控制方法。如何精確且經(jīng)濟的控制步進(jìn)電機成為廣大研究人員探討的課題。本文將采用CPLD來(lái)實(shí)現對步進(jìn)電機的控制。并最終通過(guò)實(shí)驗仿真結果。
1步進(jìn)電機驅動(dòng)原理
步進(jìn)電機的驅動(dòng)是靠給步進(jìn)電機的各相勵磁繞組通電,實(shí)現步進(jìn)電機內部磁場(chǎng)方向的變化來(lái)使步進(jìn)電機轉動(dòng)的。設我們所用的步進(jìn)電機是四相的,這四相分別為A,B,C,D,對應于四對磁極。每個(gè)磁極的內表面都分布著(zhù)大小,齒間距相同的多個(gè)小齒(不同的步進(jìn)電機,小齒的個(gè)數不同),假設Ⅳ為轉子中小齒的個(gè)數。當這4相按A—B—C—D的順序通電時(shí),步進(jìn)電機的內部磁場(chǎng)變化一周(360°),此種通電方式為單相四拍通電方式,此時(shí)步進(jìn)電機的步距角:
θ=90°/N
若N=50,則θ=1.8°
如果選擇的通電順序為A—AB—B—BC—C—CD—D—AD,此種通電方式為雙相八拍通電方式,此時(shí)步進(jìn)電機的步距角為:
θ=45°/N
若N=50,則θ=0.9°
步距角是步進(jìn)電機一次能轉過(guò)的最小角度,電機的步距角越小,說(shuō)明電機走的越精確,所以本文選擇驅動(dòng)電機通電的方式為雙相八拍通電方式。
2設計方案
一個(gè)完整的,控制精度高的步進(jìn)電機控制系統框圖如圖1所示。CPLD和步進(jìn)電機的驅動(dòng)器相連,驅動(dòng)器把CPLD輸出的信號放大后送入步進(jìn)電機,由于數控機床的各個(gè)軸是靠電機的轉動(dòng)來(lái)帶動(dòng)的,所以電機的轉動(dòng)帶動(dòng)相應軸的動(dòng)作。
各組成模塊功能描述如下:
2.1CPLD模塊
使用CPLD來(lái)控制步進(jìn)電機實(shí)現電機的啟動(dòng)、停止以及正反轉。傳統的方式是用單片機來(lái)控制步進(jìn)電機,但是在一個(gè)數控系統中單片機要做的工作很多,比如單片機既要控制步進(jìn)電機還要接受上位機的數據做相應的運算,還要控制顯示模塊,以及報警處理等,如果改用CPLD來(lái)驅動(dòng)步進(jìn)電機則可以減輕單片機的負擔。用大規??删幊踢壿嬈骷鳛榭刂破?,可以反映出CPLD在控制方面起到較高的作用,而不是僅僅作為邏輯器件來(lái)使用。并且CPLD具有較為經(jīng)濟的價(jià)格。
另外CPLD的外圍接口也較多,比如以ALTERA公司生產(chǎn)的EPM7032為例,它的I/O口有36個(gè),內部的邏輯門(mén)有600多個(gè),除了驅動(dòng)步進(jìn)電機所用的資源外,其余剩余的資源還可在系統中做其他用途。
在實(shí)際電路板設計階段,如果用傳統的設計方法設計電路必須首先決定使用的器件類(lèi)別和規格,然后從繪制硅片版圖開(kāi)始,逐級向上,直至整個(gè)系統的設計。在這個(gè)過(guò)程中如果有哪一級發(fā)生問(wèn)題必須返工重來(lái),整個(gè)電路板將報廢。但是如果使用CPLD,設計方法是自頂向下的設計方法,就是在整個(gè)設計流程中各設計環(huán)節逐步求精的過(guò)程。比如在我們設計的一開(kāi)始就可以先把CPLD和驅動(dòng)器相連,再通過(guò)軟件的設置來(lái)利用到我們已經(jīng)連好的引腳,如果程序出現錯誤,可以同過(guò)ISP(在系統可編程的方法)把新的程序裝載到CPLD中,而不用更換電路板。
2.2驅動(dòng)器模塊
步進(jìn)電機的運行要有一電子裝置進(jìn)行驅動(dòng),這種裝置就是步進(jìn)電機驅動(dòng)器,由于CPLD輸出的信號還不足以驅動(dòng)電機使電機轉動(dòng),所以在CPLD和步進(jìn)電機之間要連接驅動(dòng)器,放大CPLD輸出的信號。CPLD每發(fā)一個(gè)脈沖信號,通過(guò)驅動(dòng)器就使步進(jìn)電機旋轉一步距角。因而控制送入步進(jìn)電機脈沖頻率,可以對電機進(jìn)行調速。脈沖發(fā)的快電機運行的快,脈沖發(fā)的慢電機運行的慢。對于電機轉速的控制可以間接通過(guò)調整對送入CPLD中CLK脈沖的頻率來(lái)實(shí)現;控制步進(jìn)脈沖的個(gè)數,可以對電機進(jìn)行精確定位。
3軟件實(shí)現
本文通過(guò)對CPLD進(jìn)行編程來(lái)實(shí)現對步進(jìn)電機的控制,使用的語(yǔ)言是VHDL語(yǔ)言,使用的編程環(huán)境是MAX+PLUSII??刂瞥绦蛴蓛纱蟛糠謽嫵?,一是實(shí)體部分,二是結構體部分,實(shí)體的作用是描述端口的信息,結構體的作用是描述電路的功能。
3.1實(shí)體部分
在實(shí)體中定義了6個(gè)端口。
CLK:時(shí)鐘信號
reset:復位信號
DIR:正轉信號
START:?jiǎn)?dòng)信號
STOP:停止信號
phase:輸出信號
3.2結構體部分
在軟件設計中,重點(diǎn)是先正確寫(xiě)出雙相八拍通電方式下的狀態(tài)轉換表。
表1中‘1’表示通電,‘0’表示斷電,S0~S7分別表示按A—AB—B—BC—C—CD—D—AD通電方式下的8個(gè)狀態(tài)。在此種狀態(tài)順序下電機正轉,反之電機反轉。表中的S0~S7都是以二進(jìn)制數來(lái)表示,如果轉換為十六進(jìn)制數則分別為1,3,2,6,4,C,8,9。
程序的結構體部分由3部分組成:說(shuō)明部分,主控時(shí)序進(jìn)程,主控組合進(jìn)程。在說(shuō)明部分中定義相關(guān)的信號及常數;在主控時(shí)序進(jìn)程中負責把計算好的次態(tài)的信息送入初態(tài),并負責最后的輸出;在主控組合進(jìn)程中負責相關(guān)的計算,比如判斷啟動(dòng)和停止,正轉和反轉,以及在正反轉狀態(tài)下如何取下一個(gè)狀態(tài)。下面這段程序就是結構體里主控組合進(jìn)程中,如何判斷電機正反轉和下一步電機將如何動(dòng)作的程序段。
3.3系統仿真結果
整個(gè)控制程序的軟件波形仿真如下:
從圖2中可以看到,在模擬步進(jìn)電機啟動(dòng)、停止、正反轉時(shí)電機的狀態(tài)。比如在復位后當START=‘1’時(shí),如果這時(shí)DIR=‘1’表示電機是正轉,則電機的通電狀態(tài)是A—AB—B—BC—C—CD—D—AD,對應的CPLD的輸出狀態(tài)就為S0~S7。當DIR=‘0’時(shí)表示電機是反轉,就圖2的截圖來(lái)說(shuō)在CLK的上升沿時(shí),輸出是狀態(tài)S2,因為它的前一個(gè)狀態(tài)從圖上我們可以看出是S1。
4結束語(yǔ)
在數控系統中我們希望達到準確、高效、經(jīng)濟的控制,在運動(dòng)機構的控制這一環(huán)節,通過(guò)CPLD可以起到很好的效果,首先可以簡(jiǎn)化硬件電路,提高電路的可靠性,其次可以通過(guò)對器件進(jìn)行編程來(lái)改變器件的結構,達到我們預期的功能,并且通過(guò)ISP在系統可編程的方法把程序加載到器件上。
通過(guò)CPLD可控制步進(jìn)電機的啟動(dòng)、停止、以及正反轉,本文通過(guò)軟件仿真,驗證了方案的正確性。本文所列舉的電機是四相的,如果是三相或是五相電機,都可按本文的方法實(shí)現,如果對電機采用的單相通電的方法,也可按本文的方法實(shí)現,同樣只須稍微修改參數即可。
評論