新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种直接采用计算机串行口控制步进电机的新方法

一种直接采用计算机串行口控制步进电机的新方法

作者: 时间:2012-07-06 来源:网络 收藏

1.3 串口控件法

用VB及VC++编程时,可用控件对串行口进行编程。这种方法通用性好,在Windows、Windows NT、Windows2000及Windows XP等平台下都能正常工作。在VB中,使用MSCOMM控件;在VC++下使用Microsoft Communication Control这一ActiveX类控件。串口控制使用方法请参考MSDN。

2 串行口控制器工作原理

2.1 串行口发送数据过程研究

在串行口发送数据的过程中,串行口先发送起始位(逻辑0)进行同步,接着按规定的波特率(B)从低位到高位依次发送通讯数据的各二进制位,最后发送停止位(逻辑1)。表示每个二进制位的逻辑电平在TXD端的保持时间为1/B秒。如果按8位数据位、1位停止位、无奇偶校验方式发送数据,所发送数据的二进制位是0、1交替的。例如:数据取01010101(即16进制的16#55),其发送过程如图2中5所示,每发送一个字节,在TXD端发出5个脉冲,周期T=2/B,即频率f=B/2。改变发送数据的各二进制位,便可在TXD端得到不同的波形。图2示出欲产生1~5个脉冲时应发出的数据及对应的波形。

2.2 串行口控制器工作原理

通过分析串行口发送数据的过程可知,从TXD端所发出的脉冲完全满足控制的需要:

①改变发送的字节数及所发送的字节内容,可在TXD端产生任意数量的脉冲;

②改变波特率可动态改变发送脉冲的频率。

所以,可用TXD作为控制步进电机的脉冲信号(Pulse)。

串行口的DTR、RTS、CTS、DSR、CD、RI虽然在串行通讯接口中被定义为不同功能的握手信号,但通过对8520的分析可知,它们均可作为一般的I/O量使用,而且不论采用哪种编程方法,都能很方便地对这些信号进行读写操作。若以DTR(或RTS)作为方向控制信号(Dir),同时分别以CD、DSR、CTS、RI作为状态检测信号(CWL、CCWL、ORG等),则仅用一个串行口就已提供了步进电机控制器需要的所有信号。正是基于此原理,我们开发了串行口步进电机控制器,并成功应用在板材多点成形设备的控制系统中。由于串行口已直接提供了控制步进电电机所需的所有信号,只需将各信号由RS232电平变成TTL电平即可。常用的电平转换器件有DS1488、DS1489、MAX232等[5]。用串行口开发的步进电机控制器工作原理如图3所示。

3 软件设计及计算

为避免电机失步和提高电机运行速度,将步进电机运行过程为分三个阶段:低速起动并加速、高速运行、减速并停止;相应地控制脉冲也分为:升频、高频、降频三段[6],如图4所示。

在用串行口发送数据产生控制脉冲时,虽然通过改变所发字节内容的办法能产生1~5中间任意个数的脉冲,但若发送一个字节所字节的脉冲少于5个,后面接着发送数据产生的脉冲时,两个字节衔接时所产生的脉冲频率和占空比均会产生波动。为使电机运行的三个阶段能平滑过滤,需要对每个阶段的脉冲数量进行调整,使Ⅰ、Ⅱ两个阶段的步数均为5的整数倍(分别为n1×5、n2×5);将非5整数倍的步数安排在减速停车的Ⅲ阶段,发出脉冲数为n3×5+Δp,其中Δp=(1~4)。这可通过改变Ⅲ阶段发送的最后一个字节内容实现任意数量的脉冲输出。产生1~4个脉冲应发送的数据分别为16#FF、16#FB、16#F5、16#D5。



评论


相关推荐

技术专区

关闭