企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题基于DSP的步进电机控制系统和PC的串行通信
技术领域
行业
简介介绍基于TMS320LF2407A的步进电机控制系统的工作原理,并讨论了与PC机进行串行通信的功能;分析步进电机的工作状态,及其在通信控制系统和工控中的应用。
内容

 

一.引言

本文设计的基于DSP的步进电机控制系统是一个独立的系统,采用的DSPTI公司的TMS320LF2407A。运动控制系统本身可以实现步进电机的正反转及速度调节,而且微机可以通过串口通信改变DSP程序中电机的转速和转向,得以精确的控制步进电机的运行。

二.设计方案概述

   本测控系统主要分为两个模块:一个是串行通信接口SCI同微机的RS-232接口,另一个就是脉宽调制电路PWM控制步进电机。在串行通信接口模块中使用SCITXD/IOPA0SCIRXD/IOPA1引脚,电路由Maxim公司的芯片MAX232A和少量的外围元件构成。PC的串行通信使用的是VB提供的控件MSComm,通过事件驱动方式,利用MSComm控件的OnComm事件捕获并处理通信事件。步进电机的驱动器为UCN5804B,它提供有方向和输出使能控制,STEP IN引脚接DSP输出的PWM信号,按照收到的脉冲频率和个数输出四相电流驱动步进电机的运行。

三.系统硬件设计

1所示是SCI串行通信总线接口电路,该电路采用了符合RS-232标准的驱动芯片

MAX232,进行串行通信。MAX232芯片功耗低,集成度高,+5V供电,具有两个接收和发送通道。由于TMS320LF2407采用+3.3V供电,所以在MAX232TMS320LF2407之间加了TI公司提供典型电平匹配电路。SCITXD/IOPA0SCIRXD/IOPA1DSP控制器SCI串行通信模块的输入输出,RXDTXD接外部RS-232接口。                               

2所示是DSPUCN5804B的主要接口电路,UCN5804BAllegro公司生产的步进电机专用驱动芯片,对四相步进电机提供完全的控制和驱动。其中DSPIOPA5IOPA6被设置成通用I/O口输出,分别控制UCN5804B的使能和方向。T1PWM/T1CMP/IOPB4被设置为PWM功能,提供脉冲输入。其中运行模式被强制设置为单-双相励磁,无须DSP控制。在用PWM信号控制步进电机时,主要是输出脉冲的频率决定电机的运行速度,因此只要能实时改变PWM的脉冲输出频率,也就是更改相应计时器的周期寄存器的值,就能实时更改电机的运行速度。

系统所使用DSP芯片内部硬件资源包括EVA的通用计时器1SCI接收器和发送器,以及控制器复位引脚,功率驱动保护中断输入引脚,PLL振荡器输入引脚。

因为2407A芯片为3.3V供电,而外围电路接口为+5V,所以对于多电源工作的DSP应用系统,可以采用TI公司的TPS7333Q芯片。这是输入电压+5V,输出电压3.3V,输出电流500mADC/DC芯片。由于DSP的外围器件一般为5V的居多,这就存在一个DSP与外围器件之间的电平转换问题。74LVC4245芯片的输入端可承受5.5V信号,输出信号的电平为3.3V,可以轻松实现2407A与周围器件的电平转换。

 

                                   1

 

                                     2

四.系统软件设计

本系统控制程序主要有初始化子程序,通信中断子程序,主程序以及脉冲输出中断子程序。主程序调用系统初始化子程序,进行通信接口,定时器等部分及必要中间寄存器的初始化,设置中断标志,读取定时器1的计数值。当发生中断时,调用相应中断程序,并修改或重置标志位。

通信中断子程序包括接收中断和发送中断,完成数据的接收和发送。由SCI的中断向量寄存器PIVR的值判断是接收中断还是发送中断,并调用相应服务子程序。再计算定时器周期寄存器的值,结果放入中间寄存器,并把计数器清零。发送中断时,系统读取电机电流,转速和方向等寄存器的值,同时相应寄存器清零,将各结果发送到PC机。

当定时器中计数器与周期寄存器匹配时,即发生输出中断,相应标志位置位,脉冲输出中断子程序根据标志位读取相应中间寄存器的脉冲值和方向标志,并输出到I/O,随即计数器清零,重新开始计数,同时标志位清零。为增强程序容错性能,系统使能看门狗定时器。另外,为防止干扰影响控制性能,需增加返回中断服务子程序,此程序只有一条“return”指令,当发生干扰中断时,系统直接返回主程序。

   
    在本程序中,使用了众多的寄存器,现在分别把它们各自的定义说明如下:SCI通信程序部分中,DSP的时钟频率为24M HZ,串行通讯的波特率为96008位数据、1位停止位、不设奇偶校验位。SCSR1设置为81FESCICCR000FSCICTL10003SCICTL20002SCIHBAUD0001SCILBAUD0038;产生PWM的寄存器设置中首先不使能看门狗,WDCR0E8IMR0002,再根据所需的PWM载波周期设置T1PR,设置T1CON寄存器以确定计数模式和时钟源并启动PWM输出操作,最后将相应于PWM脉冲的在线计算宽度(占空比)的值加载到T1CMPR寄存器中。系统初始化程序包括通用定时器1的初始化程序:

LDP        #DP_EVA            ;指向7400h7480h单元

SPLK       #41H,GPTCONA       ;允许定时器比较输出

SPLK       #5HT1PR          ;设置周期寄存器

SPLK       #3HT1CMPR        ;设置比较寄存器

SPLK       #0HT1CNT         ;设置计数寄存器

SPLK       #0F4EHT1CON     

以及串行通信初始化程序:

LDP        #0E1H

LACL       MCRA

OR         #03H

SACL       MCRA               ;设置串行口引脚为特殊功能:TXDRXD

LDP        #DP_PF1

SPLK       #000FHSCICCR     ;地址位唤醒模式,8位数据1位停止位

SPLK       #0003HSCICTL1    ;接收,发送,内部时钟使能

SPLK       #0002HSCICTL2    ;接收中断使能

SPLK       #0001HSCIHBAUD

SPLK       #0038HSCILBAUD   ;波特率为9600

SPLK       #0027HSCICTL1    ;串口初始化完成

LAR        AR1#SCIRXBUF     ;接收缓冲寄存器地址

LAR        AR2#SCITXBUF     ;发送缓冲寄存器地址

LAR        AR3#RXD_PTR      ;接收的数据指针

LAR        AR4#TXD_PTR      ;发送的数据指针

LDP        #0

SPLK       #0001HIMR        ;允许INT1中断

SPLK       #0FFFFHIFR       ;清所有中断标志

CLRC       INTM               ;开中断

RET

在本程序中,DSPPC接收数据,接收的数据存放到了RXD_PTR,我们就用这个值来改变定时器的周期,从而改变PWM的周期和频率,也就改变步进电机的运行速度。其中四相步进电机以单极驱动,是脉冲驱动方式。从PC机接收数据的中断程序为:

GISR1                                 INT1中断入口

LDP        #0E0H              ;保护现场

LACC       PIVR1            ;读取外设中断向量寄存器

ADD        #PVECTORS          ;加上外设中断入口地址

BACC                          ;跳到相应的中断服务子程序

SCI_RX_ISR                            ;接收中断服务程序

LDP        #DP_PF1

MAR        *AR1

BIT        SCICTL1BIT2

LACC       *AR3             ;读入数据

SACL       *+AR0            ;保存数据

LAR        AR0#RXD_PTR

ADRK       #N

MAR        *AR3

CMPR       00

BCND       SCI_RX_ENDNTC    ;判是否接收完

LAR        AR7#RXD_PTR     

SAR        AR7T1PR

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]。北京:北京航空航天大学出版社