USB 的诸多便利使设计人员能够将总线用于多种应用。例如,此处显示的是一个基于USB 的4 步进电机控制器,使用现成的廉价组件构建。该电路采用MCU和DSP。它使用简单的逻辑电路和应用软件来控制步进电机的选择、顺时针/逆时针运行方向以及三种步进幅度:全步、半步和微步。
该设计基于USB 至FIFO 并行接口模块(IC1)。该模块称为DLP-USB245M,提供8 位双向数据总线和WR、RD、RXF 和TXE 等控制信号。这些信号用于控制PC 和任何使用USB 协议的外部电路的数据流。
使用该模块无需处理繁琐的USB 接口。另外,模块自带驱动软件,可以通过高级语言轻松快速地控制模块功能,无需过多担心USB协议。
控制器电路的其余部分包括通用数字器件,例如8D 触发器(74LS273)、反相器(7416) 和3/8 解码器,以及达林顿阵列驱动器(ULN2003)。 USB转FIFO模块使用外部5V电源,5V连接到引脚3、10和11。
工作过程如下:当PC没有向USB to FIFO模块发送数据时,IC1的发送缓冲区为空,RXF保持逻辑1。这使得D触发器(IC2)的RD和CLK逻辑0,所以IC2的输出保持不变。然而,如果PC 向USB 至FIFO 模块接收缓冲区发送一个字节,则RXF 被拉低,自动指示至少有1 个字节的数据可用。
经过短暂的延迟后,它将RD 和CLK 信号设置为1,并且发送缓冲器的数据字节输出(出现在D0-D7 上)被锁存在IC2 的输出处。一旦数据传输完成并且发送缓冲区为空,RXF 将返回逻辑1。这意味着没有更多数据可用。此操作将RD 设置为逻辑0,以便可以传输更多数据。
锁存数据的低4位(IC2的Q0-Q3)驱动另外4个8D触发器(74LS273),而Q4和Q5控制3/8解码器(IC3)。反转后,解码器的输出(A'、B'、C'、D')作为IC4-IC7的时钟。达林顿阵列驱动器(IC8-IC11)放大IC4-IC7的输出,以便驱动步进电机线圈。这样,通过向IC1 写入正确的字节,PC 可以选择4 个步进电机之一并根据需要驱动其电机线圈。
例如,当PC向USB转FIFO模块发送数据0x0A时,选择步进电机1,并按L1 L2 L3 L4=1 0 1 0的模式给步进电机1的线圈供电。为了使步进电机1向前移动一步, PC发送的下一个字节是0x09;如果要反转,则PC发送0x06。
表中列出的是控制4个步进电机全步运行的字节值。通过适当的改变,用户可以对电机进行半步和微步控制。数据字节写入——的速率,即连续数据写入——之间的间隔,控制步进电机的速度。
除了电流放大器和USB-FIFO 转换器之外,还可以使用CPLD/FPGA 实现分立器件。电机控制软件可以通过多种方式开发。您可以使用C 或VB 或图形程序(如LabVIEW)。使用IC1 附带的VCP(虚拟COM 端口)驱动软件(免费下载),应用程序会将USB 步进电机控制器模块视为另一个COM 端口。但是,设置波特率的指令将被忽略,数据将尽快发送(无论应用的波特率设置如何)。还可以使用Windows提供的D2XX直接驱动程序,这样就可以直接控制各种操作,如“FIFO_write”等。
对于电路功能的基本测试,您可以使用提供的DLPTEST 应用软件,也可以简单地使用串行端口程序(例如超级终端)来连续发送所需的字节。此处所示的设计使用12V 和5V 外部电源。因此,您必须注意,当您关闭PC 或USB 集线器(如果使用)时,USB 总线中的电流也会被关闭。
编辑:hfy