通过PC的USB端口控制多个步进电机
发布时间:2008/6/3 0:00:00 访问次数:406
该设计基于一个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转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前转一步,pc发送的下一个字节是0x09;若想使其反转,pc发送0x06。
表中列出的是控制4个步进电机以全步运行的字节值。通过适当变化,用户可以半步和微步操控电机。数据字节写入的速率——也即,连续数据的写入间隔——控制步进电机的速度。
除电流放大器和usb-fifo转换器外,分立器件可用cpld/fpga实现。可以多种方式开发电机控制软件。你可采用c或vb或类似labview等图形程序。若采用与ic1一道提供的vcp(虚拟com端口)驱动器软件(免费下载),应用程序将视usb步进电机控制器模块为另一个com口。但,设置波特率的指令将被忽略且数据将以最快的速度被发送(而不管应用的波特率设置)。你还可采用windows提供的d2xx直接驱动器,这样,你就可直接控制各项操作,比如“fifo_写”等。
为对电路功能进行基本测试,你既可利用提供的dlptest应用软件或简单借助诸如hyperterminal等串口程序来不断发送所需字节。在此展示的设计采用12和5v外接电源。所以,你必须留意,当关闭pc或usb集线器(若使用)时,usb总线内的电流也被关断。
该设计基于一个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转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前转一步,pc发送的下一个字节是0x09;若想使其反转,pc发送0x06。
表中列出的是控制4个步进电机以全步运行的字节值。通过适当变化,用户可以半步和微步操控电机。数据字节写入的速率——也即,连续数据的写入间隔——控制步进电机的速度。
除电流放大器和usb-fifo转换器外,分立器件可用cpld/fpga实现。可以多种方式开发电机控制软件。你可采用c或vb或类似labview等图形程序。若采用与ic1一道提供的vcp(虚拟com端口)驱动器软件(免费下载),应用程序将视usb步进电机控制器模块为另一个com口。但,设置波特率的指令将被忽略且数据将以最快的速度被发送(而不管应用的波特率设置)。你还可采用windows提供的d2xx直接驱动器,这样,你就可直接控制各项操作,比如“fifo_写”等。
为对电路功能进行基本测试,你既可利用提供的dlptest应用软件或简单借助诸如hyperterminal等串口程序来不断发送所需字节。在此展示的设计采用12和5v外接电源。所以,你必须留意,当关闭pc或usb集线器(若使用)时,usb总线内的电流也被关断。