一.引言
本文設計的基于DSP的步進電機控制系統(tǒng)是一個獨立的系統(tǒng),采用的DSP是TI公司的TMS320LF
二.設計方案概述
本測控系統(tǒng)主要分為兩個模塊:一個是串行通信接口SCI同微機的RS-232接口,另一個就是脈寬調(diào)制電路PWM控制步進電機。在串行通信接口模塊中使用SCITXD/IOPA0和SCIRXD/IOPA1引腳,電路由Maxim公司的芯片MAX232A和少量的外圍元件構成。PC的串行通信使用的是VB提供的控件MSComm,通過事件驅(qū)動方式,利用MSComm控件的OnComm事件捕獲并處理通信事件。步進電機的驅(qū)動器為UCN5804B,它提供有方向和輸出使能控制,STEP IN引腳接DSP輸出的PWM信號,按照收到的脈沖頻率和個數(shù)輸出四相電流驅(qū)動步進電機的運行。
三.系統(tǒng)硬件設計
圖1所示是SCI串行通信總線接口電路,該電路采用了符合RS-232標準的驅(qū)動芯片
MAX232,進行串行通信。MAX232芯片功耗低,集成度高,+5V供電,具有兩個接收和發(fā)送通道。由于TMS320LF2407采用+3.3V供電,所以在MAX232與TMS320LF2407之間加了TI公司提供典型電平匹配電路。SCITXD/IOPA0,SCIRXD/IOPA1接DSP控制器SCI串行通信模塊的輸入輸出,RXD,TXD接外部RS-232接口。
圖2所示是DSP和UCN5804B的主要接口電路,UCN5804B是Allegro公司生產(chǎn)的步進電機專用驅(qū)動芯片,對四相步進電機提供完全的控制和驅(qū)動。其中DSP的IOPA5,IOPA6被設置成通用I/O口輸出,分別控制UCN5804B的使能和方向。T1PWM/T1CMP/IOPB4被設置為PWM功能,提供脈沖輸入。其中運行模式被強制設置為單-雙相勵磁,無須DSP控制。在用PWM信號控制步進電機時,主要是輸出脈沖的頻率決定電機的運行速度,因此只要能實時改變PWM的脈沖輸出頻率,也就是更改相應計時器的周期寄存器的值,就能實時更改電機的運行速度。
系統(tǒng)所使用DSP芯片內(nèi)部硬件資源包括EVA的通用計時器1,SCI接收器和發(fā)送器,以及控制器復位引腳,功率驅(qū)動保護中斷輸入引腳,PLL振蕩器輸入引腳。
因為2407A芯片為3.3V供電,而外圍電路接口為+5V,所以對于多電源工作的DSP應用系統(tǒng),可以采用TI公司的TPS7333Q芯片。這是輸入電壓+5V,輸出電壓3.3V,輸出電流500mA的DC/DC芯片。由于DSP的外圍器件一般為5V的居多,這就存在一個DSP與外圍器件之間的電平轉(zhuǎn)換問題。74LVC4245芯片的輸入端可承受5.5V信號,輸出信號的電平為3.3V,可以輕松實現(xiàn)2407A與周圍器件的電平轉(zhuǎn)換。
四.系統(tǒng)軟件設計
本系統(tǒng)控制程序主要有初始化子程序,通信中斷子程序,主程序以及脈沖輸出中斷子程序。主程序調(diào)用系統(tǒng)初始化子程序,進行通信接口,定時器等部分及必要中間寄存器的初始化,設置中斷標志,讀取定時器1的計數(shù)值。當發(fā)生中斷時,調(diào)用相應中斷程序,并修改或重置標志位。
通信中斷子程序包括接收中斷和發(fā)送中斷,完成數(shù)據(jù)的接收和發(fā)送。由SCI的中斷向量寄存器PIVR的值判斷是接收中斷還是發(fā)送中斷,并調(diào)用相應服務子程序。再計算定時器周期寄存器的值,結果放入中間寄存器,并把計數(shù)器清零。發(fā)送中斷時,系統(tǒng)讀取電機電流,轉(zhuǎn)速和方向等寄存器的值,同時相應寄存器清零,將各結果發(fā)送到PC機。
當定時器中計數(shù)器與周期寄存器匹配時,即發(fā)生輸出中斷,相應標志位置位,脈沖輸出中斷子程序根據(jù)標志位讀取相應中間寄存器的脈沖值和方向標志,并輸出到I/O,隨即計數(shù)器清零,重新開始計數(shù),同時標志位清零。為增強程序容錯性能,系統(tǒng)使能看門狗定時器。另外,為防止干擾影響控制性能,需增加返回中斷服務子程序,此程序只有一條“return”指令,當發(fā)生干擾中斷時,系統(tǒng)直接返回主程序。
LDP #DP_EVA ;指向7400h~7480h單元
SPLK #41H,GPTCONA ;允許定時器比較輸出
SPLK #5H,T1PR ;設置周期寄存器
SPLK #3H,T1CMPR ;設置比較寄存器
SPLK #0H,T1CNT ;設置計數(shù)寄存器
SPLK #0F4EH,T1CON ;
以及串行通信初始化程序:
LDP #0E1H
LACL MCRA
OR #03H
SACL MCRA ;設置串行口引腳為特殊功能:TXD,RXD
LDP #DP_PF1
SPLK #000FH,SCICCR ;地址位喚醒模式,8位數(shù)據(jù)1位停止位
SPLK #0003H,SCICTL1 ;接收,發(fā)送,內(nèi)部時鐘使能
SPLK #0002H,SCICTL2 ;接收中斷使能
SPLK #0001H,SCIHBAUD
SPLK #0038H,SCILBAUD ;波特率為9600
SPLK #0027H,SCICTL1 ;串口初始化完成
LAR AR1,#SCIRXBUF ;接收緩沖寄存器地址
LAR AR2,#SCITXBUF ;發(fā)送緩沖寄存器地址
LAR AR3,#RXD_PTR ;接收的數(shù)據(jù)指針
LAR AR4,#TXD_PTR ;發(fā)送的數(shù)據(jù)指針
LDP #0
SPLK #0001H,IMR ;允許INT1中斷
SPLK #0FFFFH,IFR ;清所有中斷標志
CLRC INTM ;開中斷
RET
在本程序中,DSP從PC接收數(shù)據(jù),接收的數(shù)據(jù)存放到了RXD_PTR,我們就用這個值來改變定時器的周期,從而改變PWM的周期和頻率,也就改變步進電機的運行速度。其中四相步進電機以單極驅(qū)動,是脈沖驅(qū)動方式。從PC機接收數(shù)據(jù)的中斷程序為:
GISR1: ;INT1中斷入口
LDP #0E0H ;保護現(xiàn)場
LACC PIVR,1 ;讀取外設中斷向量寄存器
ADD #PVECTORS ;加上外設中斷入口地址
BACC ;跳到相應的中斷服務子程序
SCI_RX_ISR: ;接收中斷服務程序
LDP #DP_PF1
MAR *,AR1
BIT SCICTL1,BIT2
LACC *,AR3 ;讀入數(shù)據(jù)
SACL *+,AR0 ;保存數(shù)據(jù)
LAR AR0,#RXD_PTR
ADRK #N
MAR *,AR3
CMPR 00
BCND SCI_RX_END,NTC ;判是否接收完
LAR AR7,#RXD_PTR ;
SAR AR7,T1PR
LAR AR3,#RXD_PTR ;恢復數(shù)據(jù)指針
SCI_RX_END:
CLRC INTM ;中斷返回,恢復現(xiàn)場
RET
五.結束語
本文所設計的DSP測控系統(tǒng)通過與微機的接口,可以方便的控制四相步進電機的運行。在PC機的接收端,使用Visual Basic編一個簡易的軟件界面,設好通信的波特率,就可以發(fā)送不同的數(shù)據(jù)到DSP,這樣控制就顯得比較簡便。適合于通信距離近的場合,現(xiàn)場控制等。
參考文獻:
[1] 劉和平等。TMS320LF240X DSP結構原理及應用[M]。北京:北京航空航天大學出版社
[2] 王曉明。電動機的單片機控制[M]。北京:北京航空航天大學出版社
[3] 王福瑞。單片機測控系統(tǒng)設計大全[M]。北京:北京航空航天大學出版社
[4] 劉和平等。TMS320LF240X DSP C語言開發(fā)應用[M]。北京:北京航空航天大學出版社