DSP和PBL3717A构成的步进电机的控制系统
3 硬件部分
因为DSP采用3.3V供电,而PBL3717A的工作电压是+5V,所以要考虑3.3V和5V的电平转换问题。如图4所示,为5V CMOS,5V TTL和3.3V TTL电平的转换标准。其中,VOH表示输出高电平的最低电平,VIH表示输入高电平的最低电平,VIL表示输入低电平的最高电压,VOL输出低电平的最高电压。从图中可以看出5V CMOS和3.3V TTL的电平转换标准不同,因此,3.3V器件(LVC)引脚不能直接与5V CMOS器件引脚相连接。在这种情况下,可以采用双电压(一边是3.3V供电,另一边是5V供电)供电的驱动器,如TI公司的SN74ALVC164245,SN74LV4245等。而5V TTL和3.3V TTL的电平转换标准相同,所以它们可以直接相连。因为PBL3717A是TTL兼容电路,所以可以直接将DSP的I/O口和PBL3717的相应引脚相连。在这里,我们选DSP的端口B中的IOPB0,IOPB1,IOPB2,IOPB3,IOPB4,IOPB4分别与PBL3717A的I1B,I0B,I1A,I0A,PhaseA,PhaseB相连接(见图5)。
4 软件部分
本文以步进电机工作在1/4步为例设计DSP控制软件。DSP控制软件采用C语言编写。从第一拍到第十六拍的控制字分别为:0x0000、0x0004、0x000c、0x0014、0x0010、0x0011、0x0013、0x0031、0x0030、0x0034、0x003C、0x0024、0x0020、0x0021、0x0023、0x0001。将以上数值存放到数组Run_Table[]中,可通过循环程序调用数组中的相应值赋给端口B的数据和方向控制寄存器PBDATDIR,从而通过DSP的端口B来驱动控制PBL3717A的相应引脚来实现步进电机旋转运行。通过修改run_delay(int count)延时子程序的count的值可改变电机的运转速度。下面给出了两相步进电机1/4步方式下正转的控制程序清单。
/*Filename:Step.c*/
/*IOPB0=I1B,IOPB1=I0B,IOPB2=I1A,IOPB3=10A,IOPB4=PhaseA,IOPB5=PhaseB*/
#include "f2407_c.h"
static int Run_Table[]={0x0000,0x0004,
0x000C,0x0014,0x0010,0x0011,0x0013,0x0031,0x0030,0x0034,0x003C,0x0024,0x0020,
0x0021,0x0023,0x0001};
void main()
{int i;
InitCPU();
while(1)
{
for(i=0;i<=15;i++)
{
*PBDATDIR=Run_Table[i]|0xff00;
run_delay(10);
}
}
}
结语
综上所述,利用DSP或者其它微处理器,选用两片或者更多片PBL3717A和少量的无源元件就可组成一个完事稳定的多相步进电机的驱动系统,可实现整步、半步或微步距控制。这样种方法成本低、容易实现、性能稳定,是步进电机驱动系统的一种较好选择。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)