摘要:本文設(shè)計(jì)了一種基于CPLD的步進(jìn)電機(jī)控制系統(tǒng)。它以CPLD作為核心器件,極大地減少了外圍元件的使用。具有系統(tǒng)擴(kuò)展性能好、可靠性高、抗干擾能力強(qiáng)、結(jié)構(gòu)簡(jiǎn)單、成本低廉,不占用CPU時(shí)間、易于高速控制等優(yōu)點(diǎn)。
關(guān)鍵詞:步進(jìn)電機(jī),控制器,CPLD
1、前言
步進(jìn)電機(jī)可在寬廣的頻率范圍內(nèi)通過改變脈沖頻率實(shí)現(xiàn)調(diào)速、快速起停、正反轉(zhuǎn)控制等,由其組成的開環(huán)系統(tǒng)簡(jiǎn)單、可靠,因此它被廣泛的運(yùn)用于數(shù)控機(jī)床、自動(dòng)記錄儀、工業(yè)機(jī)器人、無損檢測(cè)等系統(tǒng)中,步進(jìn)電機(jī)的性能很大程度上取決于其控制系統(tǒng)[1]?;贑PLD的步進(jìn)電機(jī)控制系統(tǒng)[2]具有I/O端口多,可自由編程定義其功能等特點(diǎn),大大縮減了電路的體積、提高電路的穩(wěn)定性。先進(jìn)的開發(fā)工具使整個(gè)系統(tǒng)的設(shè)計(jì)調(diào)試周期大大縮短。利用VHDL語言進(jìn)行軟件編程,通過EDA設(shè)計(jì)軟件對(duì)程序編譯、優(yōu)化、綜合、仿真、適配,可以對(duì)步進(jìn)電機(jī)控制實(shí)現(xiàn)數(shù)字輸入。系統(tǒng)外圍電路設(shè)計(jì)相對(duì)簡(jiǎn)單、可靠,且鑒于CPLD和VHDL語言自身的特點(diǎn),系統(tǒng)具有較好的擴(kuò)展性,在控制系統(tǒng)中也具有一定的通用性。
2、系統(tǒng)設(shè)計(jì)方案
如圖1所示。首先輸入原始時(shí)鐘信號(hào),經(jīng)過分頻器得到10ms按鍵判斷周期和頻率為2048Hz的時(shí)鐘信號(hào),2048Hz的信號(hào)經(jīng)過外部硬件分頻以后輸入芯片,作為電機(jī)的轉(zhuǎn)速信號(hào)。由按鍵輸入四個(gè)控制信號(hào),和電機(jī)的轉(zhuǎn)速頻率信號(hào)一起送入電機(jī)控制狀態(tài)機(jī),由狀態(tài)機(jī)根據(jù)不同的輸入來選擇電機(jī)輸出控制信號(hào)。
[align=center]

圖1 系統(tǒng)設(shè)計(jì)框圖 [/align]
3、系統(tǒng)硬件設(shè)計(jì)
CPLD采用Altera公司MAX7000系列的EPM7128SLC84-15。驅(qū)動(dòng)電路原理圖如圖2所示。
[align=center]

圖2 驅(qū)動(dòng)電路原理圖[/align]
CPLD輸出控制信號(hào)連接至圖上的A、B、C、D四個(gè)端口。其控制信號(hào)經(jīng)光電隔離后進(jìn)入U(xiǎn)LN2003A。ULN2003A是一片集成了7個(gè)達(dá)林頓管的芯片。來自光耦合的5V高電平信號(hào)經(jīng)過ULN2003A以后,輸出端與地導(dǎo)通。步進(jìn)電機(jī)的正極接上12V的工作電壓,負(fù)級(jí)接在ULN2003A的輸出端,當(dāng)CPLD的I/O口為低電平時(shí),步進(jìn)電機(jī)的負(fù)極與地開路,正負(fù)極之間沒有壓差,電機(jī)不運(yùn)轉(zhuǎn);當(dāng)CPLD的I/O口為高電平時(shí),步進(jìn)電機(jī)的負(fù)極與地導(dǎo)通,正負(fù)極之間形成12V壓差,電機(jī)運(yùn)轉(zhuǎn)。
步進(jìn)電機(jī)的轉(zhuǎn)速是由四個(gè)線圈的通電速度決定的,也就是由輸入脈沖的頻率決定的,因此,步進(jìn)電機(jī)的轉(zhuǎn)速選擇其實(shí)就是輸入脈沖的頻率選擇。本設(shè)計(jì)采用雙四位二進(jìn)制計(jì)數(shù)器74LS393N進(jìn)行硬件分頻。頻率源為CPLD的2048Hz的頻率,將74LS393N內(nèi)部的T觸發(fā)器串聯(lián),就能將2048Hz的頻率分頻得到0.5Hz~1024Hz、等比倍率為2的頻率,這些頻率通過硬件選擇器選擇輸入至CPLD的I/O口就能進(jìn)行電機(jī)轉(zhuǎn)速的控制了。
4、軟件設(shè)計(jì)
本設(shè)計(jì)使用Quartus II進(jìn)行系統(tǒng)的軟件設(shè)計(jì)及仿真。Quartus II是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,支持VHDL的硬件描述語言。首先由外部的按鍵產(chǎn)生RST(復(fù)位)、EN(使能)、MODE(模式)、CTRL(轉(zhuǎn)向)四個(gè)控制脈沖信號(hào),脈沖信號(hào)經(jīng)過消抖模塊進(jìn)行消抖后送入主控制器。由于EN、MODE、CTRL這三個(gè)信號(hào)在主控制器內(nèi)為電平有效,所以在信號(hào)送入主控制器之前用T觸發(fā)器進(jìn)行電平的鎖定。四個(gè)控制信號(hào)和外部輸入的電機(jī)轉(zhuǎn)速時(shí)鐘信號(hào)clk_step一同送入主控制器,主控制器經(jīng)過運(yùn)算以后得出電機(jī)四個(gè)相位的通電信號(hào),通電信號(hào)經(jīng)過D觸發(fā)器消除毛刺以后從芯片I/O口送出。
主控制器模塊有5個(gè)輸入信號(hào)和4個(gè)輸出信號(hào),其內(nèi)部主要結(jié)構(gòu)為一個(gè)雙向的Moore形狀態(tài)機(jī),其主要代碼如下:
library ieee;
use ieee.std_logic_1164.all;
entity zhuangtai is port( en,clk,rst,mode,ctrl: in std_logic;
——EN為使能信號(hào),RST為復(fù)位信號(hào),MODE為電機(jī)運(yùn)轉(zhuǎn)模式信號(hào),CTRL為正反轉(zhuǎn)控制信號(hào),這四個(gè)信號(hào)為電平有效; CLK為電機(jī)轉(zhuǎn)速頻率。
a,b,c,d: out std_logic);
——A,B,C,D為步進(jìn)電機(jī)四個(gè)相位的通電信號(hào)。
end zhuangtai;
architecture zt1 of zhuangtai is
type states is(statex,state0,state1,state2,state3,state4,state5,state6,state7);
——state0-state7 為步進(jìn)電機(jī)通電的不同狀態(tài),statex為不通電狀態(tài)。
signal ste:states;
signal q:std_logic_vector(3 downto 0);
——Q為四個(gè)相位的輸出信號(hào),A,B,C,D分別對(duì)應(yīng)為Q的3,2,1,0位。
步進(jìn)電機(jī)可工作在四拍、八拍通電狀態(tài),出于對(duì)力矩、平穩(wěn)、噪音及減少角度等方面考慮。往往采用八拍通電順序,即A-AB-B-BC-C-CD-DA-A這種導(dǎo)電狀態(tài),狀態(tài)轉(zhuǎn)換順序如圖3所示。
[align=center]

圖3 狀態(tài)轉(zhuǎn)換順序[/align]
該狀態(tài)機(jī)的工作方式為:當(dāng)轉(zhuǎn)速時(shí)鐘clk-step的上升沿到來,且EN為高電平的時(shí)候,狀態(tài)機(jī)根據(jù)不同的MODE和CTRL的值在statex,state0-state7之間轉(zhuǎn)換,最后根據(jù)當(dāng)前狀態(tài)ste的值對(duì)信號(hào)q進(jìn)行賦值,再將q的高低位分別賦值給電機(jī)的線圈通電信號(hào)A,B,C,D。
begin
moore: process (clk, rst)
begin
if rst=‘1‘ then ——如果復(fù)位信號(hào)為高電平,則復(fù)位有效
ste <= statex;
elsif (clk‘event and clk=‘1‘) then
if en=‘1‘ then ——使能為1,既允許工作的時(shí)候
case ste is
when statex =>
——判斷完當(dāng)前狀態(tài)以后,先根據(jù)當(dāng)前正反轉(zhuǎn)的信號(hào)進(jìn)入相應(yīng)的判斷語句,再對(duì)當(dāng)前運(yùn)轉(zhuǎn)模式信號(hào)進(jìn)行判斷,判斷完畢以后進(jìn)入對(duì)應(yīng)的下一個(gè)狀態(tài)。
if ctrl=‘0‘ then
if mode=‘1‘ then
ste <= state0;
elsif ctrl=‘1‘ then
if mode=‘1‘ then
ste <= state6; …
5、結(jié)論
系統(tǒng)功能仿真如圖4,圖5所示。圖中各信號(hào)定義為:clk:12M時(shí)鐘信號(hào),clk_step:步進(jìn)電機(jī)轉(zhuǎn)速時(shí)鐘信號(hào);EN:按鍵使能信號(hào),RST:按鍵復(fù)位信號(hào),MODE:按鍵運(yùn)轉(zhuǎn)模式信號(hào),CTRL:按鍵運(yùn)轉(zhuǎn)方向信號(hào)。當(dāng)MODE=1、CTRL=0時(shí),電機(jī)工作在正向、八拍導(dǎo)通狀態(tài);當(dāng)MODE=1、CTRL=1時(shí),電機(jī)工作在反向、八拍導(dǎo)通狀態(tài);也可以控制電機(jī)工作在四拍導(dǎo)通方式下,此時(shí)MODE=0。A、B、C、D為步進(jìn)電機(jī)四相線圈通電信號(hào)。
[align=center]

圖4 運(yùn)轉(zhuǎn)模式功能仿真

圖5 正反轉(zhuǎn)控制功能仿真[/align]
本文的創(chuàng)新點(diǎn):與傳統(tǒng)的設(shè)計(jì)相比,該設(shè)計(jì)模塊綜合度高,設(shè)計(jì)的驅(qū)動(dòng)電路體積小、速度快、功耗低、性能穩(wěn)定,可以根據(jù)不同的場(chǎng)合選擇合適的電機(jī)控制策略,控制簡(jiǎn)單方便。凡是使用步進(jìn)電機(jī)的地方都可以使用本驅(qū)動(dòng)器。在實(shí)際使用中收到了很好的效果,項(xiàng)目經(jīng)濟(jì)效益500多萬元。
參考文獻(xiàn):
[1] 楚榮珍,周向?qū)幍?嵌入式步進(jìn)電機(jī)系統(tǒng)的控制與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23-1:53-55。
[2]馬宏偉.高性能步進(jìn)電機(jī)控制系統(tǒng)的研制[M].西安:西安科技大學(xué)出版社,2004.
[3]朱正偉.EDA技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社,2005.25-30