作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | 基于DSP的步进电机控制系统和PC的串行通信 |
技术领域 | |
行业 | |
简介 | 介绍基于TMS320LF2407A的步进电机控制系统的工作原理,并讨论了与PC机进行串行通信的功能;分析步进电机的工作状态,及其在通信控制系统和工控中的应用。 |
内容 |
一.引言 本文设计的基于DSP的步进电机控制系统是一个独立的系统,采用的DSP是TI公司的TMS320LF 二.设计方案概述 本测控系统主要分为两个模块:一个是串行通信接口SCI同微机的RS-232接口,另一个就是脉宽调制电路PWM控制步进电机。在串行通信接口模块中使用SCITXD/IOPA0和SCIRXD/IOPA1引脚,电路由Maxim公司的芯片MAX232A和少量的外围元件构成。PC的串行通信使用的是VB提供的控件MSComm,通过事件驱动方式,利用MSComm控件的OnComm事件捕获并处理通信事件。步进电机的驱动器为UCN5804B,它提供有方向和输出使能控制,STEP IN引脚接DSP输出的PWM信号,按照收到的脉冲频率和个数输出四相电流驱动步进电机的运行。 三.系统硬件设计 图1所示是SCI串行通信总线接口电路,该电路采用了符合RS-232标准的驱动芯片 MAX232,进行串行通信。MAX232芯片功耗低,集成度高,+5V供电,具有两个接收和发送通道。由于TMS320LF2407采用+3.3V供电,所以在MAX232与TMS320LF2407之间加了TI公司提供典型电平匹配电路。SCITXD/IOPA0,SCIRXD/IOPA1接DSP控制器SCI串行通信模块的输入输出,RXD,TXD接外部RS-232接口。 图2所示是DSP和UCN5804B的主要接口电路,UCN5804B是Allegro公司生产的步进电机专用驱动芯片,对四相步进电机提供完全的控制和驱动。其中DSP的IOPA5,IOPA6被设置成通用I/O口输出,分别控制UCN5804B的使能和方向。T1PWM/T1CMP/IOPB4被设置为PWM功能,提供脉冲输入。其中运行模式被强制设置为单-双相励磁,无须DSP控制。在用PWM信号控制步进电机时,主要是输出脉冲的频率决定电机的运行速度,因此只要能实时改变PWM的脉冲输出频率,也就是更改相应计时器的周期寄存器的值,就能实时更改电机的运行速度。 系统所使用DSP芯片内部硬件资源包括EVA的通用计时器1,SCI接收器和发送器,以及控制器复位引脚,功率驱动保护中断输入引脚,PLL振荡器输入引脚。 因为2407A芯片为3.3V供电,而外围电路接口为+5V,所以对于多电源工作的DSP应用系统,可以采用TI公司的TPS7333Q芯片。这是输入电压+5V,输出电压3.3V,输出电流500mA的DC/DC芯片。由于DSP的外围器件一般为5V的居多,这就存在一个DSP与外围器件之间的电平转换问题。74LVC4245芯片的输入端可承受5.5V信号,输出信号的电平为3.3V,可以轻松实现2407A与周围器件的电平转换。
四.系统软件设计 本系统控制程序主要有初始化子程序,通信中断子程序,主程序以及脉冲输出中断子程序。主程序调用系统初始化子程序,进行通信接口,定时器等部分及必要中间寄存器的初始化,设置中断标志,读取定时器1的计数值。当发生中断时,调用相应中断程序,并修改或重置标志位。 通信中断子程序包括接收中断和发送中断,完成数据的接收和发送。由SCI的中断向量寄存器PIVR的值判断是接收中断还是发送中断,并调用相应服务子程序。再计算定时器周期寄存器的值,结果放入中间寄存器,并把计数器清零。发送中断时,系统读取电机电流,转速和方向等寄存器的值,同时相应寄存器清零,将各结果发送到PC机。 当定时器中计数器与周期寄存器匹配时,即发生输出中断,相应标志位置位,脉冲输出中断子程序根据标志位读取相应中间寄存器的脉冲值和方向标志,并输出到I/O,随即计数器清零,重新开始计数,同时标志位清零。为增强程序容错性能,系统使能看门狗定时器。另外,为防止干扰影响控制性能,需增加返回中断服务子程序,此程序只有一条“return”指令,当发生干扰中断时,系统直接返回主程序。
LDP #DP_EVA ;指向7400h~7480h单元 SPLK #41H,GPTCONA ;允许定时器比较输出 SPLK #5H,T1PR ;设置周期寄存器 SPLK #3H,T1CMPR ;设置比较寄存器 SPLK #0H,T1CNT ;设置计数寄存器 SPLK #0F4EH,T1CON ; 以及串行通信初始化程序: LDP #0E1H LACL MCRA OR #03H SACL MCRA ;设置串行口引脚为特殊功能:TXD,RXD LDP #DP_PF1 SPLK #000FH,SCICCR ;地址位唤醒模式,8位数据1位停止位 SPLK #0003H,SCICTL1 ;接收,发送,内部时钟使能 SPLK #0002H,SCICTL2 ;接收中断使能 SPLK #0001H,SCIHBAUD SPLK #0038H,SCILBAUD ;波特率为9600 SPLK #0027H,SCICTL1 ;串口初始化完成 LAR AR1,#SCIRXBUF ;接收缓冲寄存器地址 LAR AR2,#SCITXBUF ;发送缓冲寄存器地址 LAR AR3,#RXD_PTR ;接收的数据指针 LAR AR4,#TXD_PTR ;发送的数据指针 LDP #0 SPLK #0001H,IMR ;允许INT1中断 SPLK #0FFFFH,IFR ;清所有中断标志 CLRC INTM ;开中断 RET 在本程序中,DSP从PC接收数据,接收的数据存放到了RXD_PTR,我们就用这个值来改变定时器的周期,从而改变PWM的周期和频率,也就改变步进电机的运行速度。其中四相步进电机以单极驱动,是脉冲驱动方式。从PC机接收数据的中断程序为: GISR1: ;INT1中断入口 LDP #0E0H ;保护现场 LACC PIVR,1 ;读取外设中断向量寄存器 ADD #PVECTORS ;加上外设中断入口地址 BACC ;跳到相应的中断服务子程序 SCI_RX_ISR: ;接收中断服务程序 LDP #DP_PF1 MAR *,AR1 BIT SCICTL1,BIT2 LACC *,AR3 ;读入数据 SACL *+,AR0 ;保存数据 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 ;恢复数据指针 SCI_RX_END: CLRC INTM ;中断返回,恢复现场 RET 五.结束语 本文所设计的DSP测控系统通过与微机的接口,可以方便的控制四相步进电机的运行。在PC机的接收端,使用Visual Basic编一个简易的软件界面,设好通信的波特率,就可以发送不同的数据到DSP,这样控制就显得比较简便。适合于通信距离近的场合,现场控制等。 参考文献: [1] 刘和平等。TMS320LF240X DSP结构原理及应用[M]。北京:北京航空航天大学出版社 [2] 王晓明。电动机的单片机控制[M]。北京:北京航空航天大学出版社 [3] 王福瑞。单片机测控系统设计大全[M]。北京:北京航空航天大学出版社 [4] 刘和平等。TMS320LF240X DSP C语言开发应用[M]。北京:北京航空航天大学出版社 |