用串行口控制步进电机两维运动系统_第1页
用串行口控制步进电机两维运动系统_第2页
用串行口控制步进电机两维运动系统_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用串行口控制步进电机两维运动系统2009-5-13 10:00:00 王继业 供稿摘 要: 本文介绍了一种通过微机的串行口控制两维坐标定位系统的新方法。该方法不需要 MCU,可以方便的通过改变串口的波特率来改变步进电机的运行速度,可以通过 RS232 串口中控制 Modem 状态的输入、输出信号来控制运动的方向和读入不同的位置信息。该方法使用逻辑电路实现控制功能,比用 MCU 的方法不仅简单,省却了编程的麻烦,而且提高了可靠性。关键词:串行口;步进电机;运动控制Abstract: a new method about the two-dimension coordinate contral system by the serial port of the personal-computer is introduced. this method is convenient for changing the motion speed of the step motor through chaning the baud rate of the serial port, and contraling the motion direction and getting the position information of the motor by contraling the input or output signal of the Modem state in the RS232 serial port. This new method using logic circult to realising the contraling function is more simple, so there is no need of programming, and can improve the reliability.Keywords: serial port、step moter、motion control1. 引言步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为 100%)的特点,广泛应用于各种开环控制。步进电机在数控机床、医疗器械、仪器仪表等自动或半自动设备中得到了广泛应用。用计算机控制步进电机的通常作法是采用步进控制卡, 这种方法不仅成本较高,而且不便于操作。在计算机扩展槽上安装控制卡,必需打开机箱才能操作,而且在小型平板电脑和嵌入式电脑中根本没有安装控制卡的空间和扩展槽。进年来出现了将计算机串行口二次开发,用于控制步进电机的技术,代替控制卡的作用,具有成本低、操作简单、兼容性好等优点。本文介绍了一种通过微机的串行口控制两维坐标定位系统的新方法。串行口是微机系统的标准配置,在仪器仪表控制系统中得到广泛的应用。计算机串行接口采用 RS232 标准1 :规定逻辑 1 的电平为-3-15V,逻辑 0 的电平为+3+15V,常用的信号有 8 个(接口为 DB9M 和 DB25M 插座时,引脚号如表 1 所示),其中 RXD、TXD 为收、发数据,可与 RS232 串行口设备直接进行通讯,RTS、DTR 、CD、DSR、CTS 、BELL 为控制与检测 MODEM 的信号,在通讯过程中起联络与控制作用。数据格式有 5、6 、7、8 位几种,1 位起始位(逻辑 0),1、1.5、或 2 位停止位 (逻辑 1),可以选择奇校验、偶校验和无校验,常用波特率为 2400、4800、7200、9600bps 等。表 1 标准 9 针和 25 针串口的管脚定义用串行口控制步进电机驱动的运动系统的一般方法是通过单片机或其它嵌入式控制系统,由计算机向单片机系统发送控制信息,单片机系统再直接控制运动系统,从而计算机可以间接的控制系统的行为。这种方法有一些缺点。比如控制缺少灵活性,往往只能按照事先定好的模式运动,不能通过控制软件任意改变。单片机要同时接受计算机命令和发送状态给计算机,又要控制运动系统,多任务并行,给程序编制带来一定麻烦。单片机程序容易跑飞,给系统可靠性带来很大威胁,甚至有时需要人工复位操作。为了克服这些缺点,在实际应用中,我们设计了一个串行口直接控制运动系统的方法。该方法不需要 MCU,可以方便的通过改变串口的波特率来改变步进电机的运行速度,可以通过 RS232 串口中控制 Modem 状态的输入、输出信号来控制运动的方向和读入不同的位置信息。由于是直接控制,没有中间的处理器系统,克服了上面的缺点,降低了成本。下面介绍这种控制系统实现的方法。2. 二维运动步进电机驱动的控制方法步进电机驱动的二维运动定位系统中,每一个维度都是由步进电机驱动丝杠转动,丝杠再把运动转化为直线运动。如图 1 所示。对该系统的控制,除了要发出步进电机的方向控制和步进脉冲信号外,还要读入绝对定位用的开关信号,这样才能达到绝对坐标控制的目的。图中 S1 是坐标零点的限位开关,它输出高电平时,表示运动已经到了绝对零点。因为这种机械或光电开关的精度有限,所以由 S1 输出的零点脉冲精度不高。为了提高零点的位置精度,还设置了开关 S0,步进电机每旋转一圈,它输出一个脉冲。虽然 S0 输出的脉冲宽度和 S1 比并没有什么改变,但由于丝杠的作用,使 S0 输出的脉冲相对于线性位置的精度大大提高。因此,零点的判断方法应该是:当向左运动时,首先判断 S1 是否输出高电平。如果输出高电平,表示已经基本到达零点,只是精度还要继续提高。这时继续驱动步进电机转动,判断 S0 是否输出高电平。如果 S0 输出也达到高电平,才表明真正达到了零点。开关 S2 是坐标最大值的限位开关,它输出高电平表明已经达到了坐标的最大值,不能再向右运动。图 1 步进电机驱动示意图图 1 只是画出了一维运动的示意图,另一维的控制完全相同。下面着重讨论具体的实现方法。3. 步进脉冲的产生和速度计算每给步进电机的驱动器一个脉冲,步进电机就转动一步,而方向是由另外一个电平信号控制的。对于某种步进电机来说,每转动一周需要的脉冲个数是一个固定的常数 n,因此,每发送一个脉冲电机转动的角度也是固定的,称为步距角 s。s 和 n 的关系是:s=360/n 度。比如,一种四相八拍运行的步进电机每周需要 400 个脉冲,则步距角 s=0.9 度。步进脉冲采用巧妙的利用计算机串行数据的格式经过恰当的设置产生。计算机的串口数据帧一般由起始位、数据位、校验位、停止位组成,如图二所示是传送 B10010011 的情况,这里起始位设定为 1 位,下面是 8 个数据位,奇偶位设置为“Mark”,即为 1,停止位为 1 位,是逻辑 1。停止位的作用是如果连续发送数据时,保证一个数据帧的接受完毕和另一个数据帧的起始保持一定的时间间隔。这样,我们设定的一个数据帧有 11 位。随着发送的数据不同,我们可以在这 11 个数据帧中得到不同个数、不同时间宽度的脉冲。比如,发送二进制数 B11110000,则起始位 0 后紧接着 4 位 0,后面 4 位连续的 1,再加上奇偶位和停止位两个 1,整个数据帧组成由前面 5 个连续的 0 和后面 6 个连续的 1 组成的 1 个脉冲信号。如果选择不同的发送数据,还可以得到不同个数的脉冲。比如,发送 B10101010 可以得到连续 4 个脉冲。这里,为了得到均匀的占空比,总是采用发送 B11110000数据的方式每个数据帧产生一个脉冲。图二、传送二进制数 B10010011 的示意图串行通讯的波特率 B 定义为每秒发送数据的位数,一个数据帧 11 位,则需要的时间 T 位 11/B,而每个数据帧只产生一个脉冲,则脉冲频率 v 可以确定为 v=B/11,如果步进电机每周需要的脉冲个数为 n,则电机转速 =60B/11n 转/分。例如,如果 B 取 9600b/s,n 取 400,则 =131 转/分。4. 位置信号和方向信号的读入和输出计算机的 9 针标准 RS232 串行口信号除了数据发送接受用的 TxD/RxD 外还有 RTS/CTS、DTR/DSR、DCD 等信号。这些信号原本定义控制 Modem 用的,我们这里用来读入位置信号和输出方向信号以及维度选择。具体的说,我们用 DTR 输出维度选择信号,如为 “1”,则表示这时的所有输出和输入都是针对 X 方向的运动,如为“0”,则选择 Y 方向。信号 RTS 用来输出运动的方向,即控制步进电机正传和反转。输入信号 CTS、DSR、DCD用来输入限位开关和零位开关的信号。另外,还要有 RS232 电平和 TTL 电平之间的转换电路。 RS232 电平是负逻辑电平,为了实现 RS232 电平和 5VTTL 电平之间的转换,这里我们采用 MAX232 专用芯片,该芯片核心是一个 “电荷泵”,只需要单 5V 供电即可。电路的示意图如图三所示,整个电路的逻辑可以用一片可编程逻辑芯片 EPM7064 实现。在实现上面电路的同时,在可编程逻辑芯片中,我们同时实现了步进电机的脉冲分配逻辑和保护逻辑,在坐标达到最大和最小值后,电机不再允许向右和向左运动。5. 实际应用和编程本文提供的方法对计算机控制软件软件的编制给予了极大的方便2。以 MSVB6 为例3,放置串口控件 MSCOMM32 后可以方便的通过程序设置 DTR、RTS 的值来控制运动的维度和方向,通过读取控件属性 CTS、DSR、DCD 的值来得到运动的情况,通过设置不同的发送波特率来改变步进电机的速度,通过在发送缓冲区中放置字符个数控制步进电机的运动步数。我们也可以在 Delphi 下方便的编程4,在其它计算平台上,我们也可以方便的编程,比如,在 linux 上5,我们可以通过对 ttyS0 设备编程方便的控制串口设备。本文的方法作者已经成功地应用在金相显微镜载物台的自动控制中。本文作者创新点:1. 通过串口的波特率、格式设置和输出字符来产生不同频率和占空比的步进电机驱动脉冲。2. 通过标准串口的输入、输出控制信号,输入和输出两维运动系统的控制信号和位置信号。参考文献:1. 微型计算机接口技术及应用,刘乐善等,华中理工大学出版社,2000.4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论