1 引言
在自动化控制中,控制系统除了与计算机实现数据交换外,其自身也必须能直接实现人机界面的信息交换。采用LED显示与按键输入实现人机界面是最简洁、最可靠的方案。本文以无刷直流电机全数字伺服控制系统为对象,采用美国德克萨斯州仪器公司(TI)生产的TMS320F240高速数据信号处理器(DSP)作为控制电路的核心,利用DSP中SPI和I/O接口设计了一套伺服控制系统监控电路。该监控系统能实时监测无刷电机伺服系统的电流、电压、转速、位置等运行参数,设置伺服系统的控制参数和一些保护参数,并能将采样到的数据传送到上位机实行数据的处理和统计。图1为具有监控功能的无刷直流电机伺服控制系统原理框图。
2 DSP接口电路
2.1 串行显示电路
串行显示电路利用TMS320F240 SPI接口和串行显示芯片MAX7219控制实现。图2为接口电路原理图。
MAX7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器。该芯片可直接驱动最多8位7段数字LED显示器,或64个LED条形图显示器。它与微处理器的接口非常简单,仅用3个引脚与微处理器相应端连接即可实现最高10MHz串行接口。MAX7219的位选方式独具特色,它允许用户选择多种译码方式译码选位,而且每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。
对于MAX7219,串行数据是以16位数据包的形式,从Din脚串行输入,并且串行数据是按D15至D0顺序传送,数据传送格式如表1所示。在CLK的每一个上升沿一位一位地送入芯片内部16位移位寄存器,而不管Lout脚的状态如何。Load脚必须在第16个CLK上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。
操作者只需编程发送16位数据包,就能简单地操作LED的位选以及段选,设置和改变MAX7219的工作模式。MAX7219通过D11~D84位地址位译码,可寻址14个内部寄存器,分别是8个LED显示位寄存器,5个控制寄存器和1个空操作寄存器。LED显示寄存器由内部8×8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据。
SPI通过一根时钟引线将主机和从机同步,因此它的串行数据交换不需要增加起始位、停止位等用于同步的格式位,直接将要传送的信息(1位到8位的数据)写入到主机的SPI发送数据寄存器SPIDAT;这个写入自动启动了主机的发送过程;即在同步时钟SPICLK的节拍下把SPIDAT的内容一位一位地移到引脚SPISIMO;当SPIDAT的内容移位完毕,将置一个中断标志SP11NTFLAG,通知主机这个信息块已发送完毕。
(1)在使用SPI模块之前,首先要确定当前的SPI模块是作为主机还是从机,这由SPICTL的MASTER/SLAVE来决定,该位为1表示是主机,为0表示是从机。
(2)确定信息块的大小,这由SPICCR的SPI-CHAR2:0决定,可以在1~8位之间进行选择。
(3)确定SPI同步时钟SPICLK的极性与相位,SPICCR的CLOCKPOLARITY为表示引脚在静止状态时是高电平,否则是低电平;SPICTL的COL-CKPHASE为1,SPICLK的相位滞后半个周期,否则不滞后。SPICLK的极性与相位决定了PICLK的一个节拍中什么时候将数据移位到引脚上或什么时候从引脚上接收移位来的数据。
2.2 按键接口电路
按键控制主要通过数字I/O扩展的键盘来实现电动机控制参数的设定。为用户使用方便,考虑只使用四位按键:递增键:数值递增,或选项向前;递减键:数值递减,或选项向后;返回键:返回上一层操作菜单,或操作取消;确定键:进入下一层操作菜单,或确定。
由于采用四键方式,用到的按钮比较少,可以采用空闲的I/O引脚连接。四个按钮分别连接到DSPIOPBO~IOPB3。读数字I/O端口B,提取低四位数据,就可以检测出键值。为了处理方便,在编程前先把这四个键值转换成1,2,4,8。
3 监控系统软件方法
3.1 串行显示子程序
初始化SPI:
(1)对SPI接口来说,本身是主机,MAX7219是从机。因为MAX7219只是输入器件,因此SPICT的MASTER/SLAVE位置“1”。
(2)信息块的大小由SPICCR的SPICHAR2:0决定,当然选择8位。
(3)串行数据是在CLK的上升沿到来时,才移入到内部移位寄存器中。那么,在CLK的上升沿到来前,在DIN引脚上就必须有稳定的数据等待处理。所以SPI同步时钟SPICLK的极性与相位应选择“有延时上升沿”的方式,即上升沿前半个周期发送,上升沿接收。
(4)SPI的波特率的SPIBRR给定为最大值:7FH。
(5)采用查询方式发送,禁止中断,禁止接收。初始化MAX7219:
上电时,所有控制寄存器均被复位,显示器熄灭,MAX7219进入关断方式。故在使用显示器之前须进行控制寄存器的初始化。包括指定译码方式,设置显示亮度,扫描范围,退出关断方式,最后进入正常工作方式。MAX7219将按5个控制寄存器规定的方式对待显示的数字自动扫描显示。
译码方式:全译码。发送串行数:09FFH
显示亮度:17/32(输出脉冲宽度,31/32宽度最大)。发送串行数据:0A08H
扫描范围:显示6位LED。发送串行数据:
0B05H
关断方式:显示。发送串行数据:0C01H
显示测试:正常。(测试时,所有LED全亮)。
发送串行数据:0F00H
DISPLAY子程序实现了把16位二进制数传到MAX7219的功能,如图3所示。
3.2 按键子程序
本系统的键盘程序要实现多层菜单操作,所以程序的关键就是如何有效地对菜单中不同元素之间位置关系的判别。菜单中的位置关系是通过预设的标记来确定的。这些标记与菜单中每个元素一一对应的。操作菜单的过程实际是程序管理标记的过程。
为了能够有效地对标记进行管理,本文设计了一个菜单标记的使用格式,如表2。它使用一个字(WORD)来记录菜单中的位置。每4位(BIT)对应一层菜单。因此它可以实现4层菜单,每层菜单16个选项的标记记录。
假如现在菜单标记为0032H,这表示当前选项是第一层菜单的第2选项下的第三个选项。也就是说,操作员是从第一层菜单的第2选项进入到第二层菜单,并且选择了当前菜单第3个选项。如果是0000H,就表示当前系统不是处于菜单操作状态。菜单标记是全局变量,键盘子程序可以对它进行读写,其它程序只可以读,不可以对它进行写操作。
递增键(递减键):该键是对入口参数进行加1(减1)操作。入口参数有两种情况:菜单标记和控制参数。对前者进行加(减),即实现了菜单中项目的选择。对后者进行加(减),即实现了控制参数修改。入口参数的两种情况由确认键子程序决定。
确认键:该子程序内包含了每一个菜单选项的处理。程序读出菜单标记的值,根据该值跳转到与菜单标记对应选项的处理程序的地方。程序把要进行修改的参数送到递增键(递减键)子程序的入口。
返回键:程序把菜单标记中不等于0的最高16进制位清零。从而使菜单标记指向上一层菜单,实现菜单返回。按键扫描子程序如图4所示。
4 小 结
本文以无刷直流电机全数字伺服控制系统为对象,采用美国德克萨斯州仪器公司(TI)生产的TMS320F240高速数据信号处理器(DSP)作为控制电路的核心,利用DSP中SPI和I/O接口设计了一套伺服控制系统监控电路。该监控系统能实时监测无刷电机伺服系统的电流、电压、转速、位置等运行参数,设置伺服系统的控制参数和一些保护参数,并能将采样到的数据传送到上位机实行数据的处理和统计。
参考文献
1 章云,谢利萍等.DSP控制器及其应用[M].机械工业出版社,2001.
2 王瑞兰.8位串行接口数码显示驱动—MAX7219及其应用[J].世界电子元器件,2000,8:13~15.
3 Kubota Hisao,Matsuse Kouki.DSP-based speed adaptiveflux observer ofinduction motor[J].IEEETrans.On Indus-try Application,1993.29(2):138~142.
上一篇:一种实用安时计的设计与调试