基于Proteus 的PC 机对步进电机运动控制仿真

发布者:vnerwb池塘边最新更新时间:2014-01-02 来源: eccn关键字:Proteus  步进电机  运动控制仿真 手机看文章 扫描二维码
随时随地手机看文章
1 引言
      
步进电机在简单的开环工作方式下能够达到相当高的定位精度,且低速运行时又可输出很大的转矩,因此在运动控制中得到了广泛的应用[1]。PC 机步进电机控制系统,应用于多个领域如数控机床、机器人、激光加工设备等各种仪器设备。一个完整的PC 机步进电机控制系统,下位机与PC 机构成主从式控制结构:PC 机负责人机交互界面的管理,包括键盘和鼠标的管理、系统状态的显示、控制指令的发送等部分工作;下位机完成运动控制的所有细节,包括脉冲和方向信号的输出、自动升降速的处理等部分工作。实际下位机开发过程复杂,主体包含硬件电路设计和控制程序设计两方面。控制程序设计过程需要软件调试、硬件调试、系统调试3 个过程。软件调试一般比较容易进行,但如果要进行牵涉硬件的硬件调试或系统调试,包括元器件选用、PCB 板制作、元器件焊接、程序烧录环节,其中任一环节的疏漏都可能造成程序调试失真。通过Proteus 中各虚拟仪器所构建硬件电路,调试所设计程序的控制效果,达到虚拟硬件调试、虚拟系统调试程序的目的,为PC 机步进电机系统开发提供有效的理论实践依据,避免因硬件电路设计过程错误引起的程序异常或硬件实验条件限制影响开发。
      
Proteus 是英国Labcenter 公司开发的电路分析与实物仿真软件实现了单片机仿真和SPICE 电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘、LCD、虚拟仪器、示波器、逻辑分析仪系统仿真的功能;支持主流单片机系统的仿真功能;在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;支持第三方的软件编译和调试环境,如Keil uVision2、MTLAB 等软件。由于Proteus 软件本身的优良仿真特性,所设计程序能于Proteus 中完成仿真过程的同时,即基本证明了所设计程序的准确性,从而基本完成了系统开发中的控制程序设计部分,并为系统硬件电路设计提供指导意义。

2 设计要求
      
以构建基于Proteus 的PC 机对步进电机运动控制仿真系统为例,上位机人机交互界面由VB 开发完成;下位机硬件电路由Proteus 中各虚拟仪器所构建完成;下位机控制程序由Keil uVision2开发完成;期间还要采用虚拟串口(VSPD),用于模拟一根串口通信线,实现上位机与下位机的串口通信,最终实现上位机(VB)对下位机(Proteus)中步进电机的实时控制过程。

2.1 系统总体框图
      
上位机通过RS232C 串口通信方式实现对下位机下达指令,下位机AT89C51 单片机根据接受到的指令,按一定的时序产生A、B、C、D 四相控制信号,分别实现单拍、双拍、单双拍的三种步进电机驱动方式。在实际运用中,单片机与步进电机之间一般还需要信号隔离、放大集成电路。下位机部分增设显示功能,由LCD1602 来完成实时地显示步进电机运动状态。Proteus 的仿真电路与实际电路可以有一定的区别,考虑到仿真的实践性验证,设计出实际仿真适用的整个控制模块,如图1 所示。



2.2 下位机仿真系统结构设计
      
在实际运用中,单片机控制步进电机需要隔离、放大模块。在仿真时该控制模块可省略,直接将步进电机与AT89C51 相连接,也可在仿真电路中使用,因这里主要是为了检测脉冲的控制效果,所以省去隔离、放大电路。
      
串口通信部分[3],非仿真控制中,上位机电平是RS232C 电平,而下位机是TTL 电平,不能直接通信的,所以增加一个电平转换芯片MAX232。在实际仿真中,由于上下位机都是在PC 中进行,所以无需电平转换芯片,否则会发生错误。实际仿真时,串口的2、3 位直接与AT89C51 的RXD、TXD 直接对接就可以了。
      
LCD 部分显示电路,当单片机驱动LCD 时,由于信号的传输过程会有损耗,所以在实际应用驱动LCD 时,常采用信号增益模块加以驱动。仿真过程无信号损耗,系统外部晶振电路,复位电路等在仿真过程可以省略。

综上所述,在搭建Proteus 下位机系统时,隔离放大模块、LCD 驱动模块、外部晶振电路和复位电路可有可无,而RS232 电平与TTL 电平转换模块必需省去。

3 软件设计

3.1 下位机软件设计
      
下位机软件由Keil uVision2 开发完成。程序本身通用于仿真Proteus、实际步进电机控制系统。下位机程序包括:初始化程序,串行中断程序,定时器T0 中断程序,LCD 显示函数(含几条控制命令子函数)及程序主函数体五部分构成。程序设计流程,如图2 所示。


      
程序设计中要注意设置串行中断的优先级应高于T0 中断,因为默认的ET0 中断优先级是高于串行中断ES 的[6],使用语句PT0=0;//低优先级,PS=1;//高优先级即可,因为只要当串行通信优先级最高时,才能实现上位机对下位机的实时控制,十分重要。串行中断中需应用字符型数据与ASCII 码转化的算法。因为MSComm1.Output 中送出去的是字符型数据,而AT89C51 会把接收到的字符数据转化成ASCII 码,这样如果上位机发送一个数据“0”,而下位机转化成ASCII 码后即变成了“48”,显然这不是事先跟下位机约定的控制指令,所以需要对接收到的指令数据做一定的计算处理,然后再交给CPU 进行判断。因为上位机的控制指令数据只有七个,使用语句if(temp<=57 & temp>=48)temp=temp-0x30;即可实现。整个串行中断程序设计如下:

      static void com_isr(void)interrupt SIO_VECTOR using 1
      {
      if(RI)//RI=0 申请串行中断
      {
      temp=SBUF;
      //从接收寄存器中读取指令数据
      if(temp<=57 & temp>=48)
      //判断指令寄存器数据
      temp=temp-0x30;
      //计算指令寄存器数据
      RI=0;
      //RI=0 为下一次串行中断做准备
      k=0;//为显示函数执行条件
      return;
      }
      }
      
设计T0 中断程序时,中段时间(它由定时计数器的初始值、工作方式共同决定)与中断次数关键内容,决定了驱动电机脉冲频率的变化,即决定了步进电机转速,需要设计一个合理的转速方便记录采集步进电机数据,观察单拍、双拍、单双拍驱动方式下电机的运动状态。[page]
      
LCD 显示程序设计中因为“MODE:”是始终显示的,所以可以在程序初始化的时候就设计好LCD 的“MODE:”显示,然后再根据数据指令显示对应的步进电机运动状态,这样能节省MCU的处理时间,提高仿真系统的实时控能力。主程序体中完成最终接受来的上位机指令的处理,进而完成上位机控制步进电机的整个过程。
      
其中对应控制指令N,各个器件的状态。每一个N 值都意味着一条控制指令,不同N 值,步进电机、LCD、上位机Text、P1 口脉冲[5]会有对应的状态内容。具体如表1 所示。

3.2 上位机软件设计
      
上位机软件用VB 进行开发。采用Microsoft 公司提供的MicrosoftCommunications Control 串行通信编程的ActiveX 控件,封装了完整的所需的API 函数,为应用程序提供了通过串行口收发数据的简便方法。只要设置Settings 属性包括返回波特率、奇偶校验、数据位、停止位、对应串口等参数。然后设计对应的事件处理,以达到目标通信控制效果。程序主要开发对下位机发送的七条指令及Text 电机状态显示,实现上位机控制。

4 系统仿真运行效果及仿真分析
      
对应的单拍正转、双拍正转、单双拍正转种情况下由虚拟示波器(OSCILLOSCOPE)采集的脉冲驱动信号,如图3 所示。结合表1 的P1 口脉冲,剔除正常存在的毛刺与抖动,与实际驱动所需的对应脉冲信号是完全吻合的。
      
下位机在接收到单拍正转对应图3(a)指令后步进电机的相应运动过程,如图4 所示。此处,虚拟步进电机的虚拟步距角为90 度,图中A、B、C、D 四相红代表高电平,蓝代表低电平。图3 与图4 仿真过程记录的信息,与实际设计程序控制预期运行结果完全吻合,仿真效果明显可信。




如图5 所示,下位机在运行的条件下,上位机Option 单拍,单击正转按钮,即上位机向下位机发送指令“1”。其中的virtualTerminal(虚拟终端),是Proteus 软件的辅助分析工具,每次串口通信的指令将会被记录下来。步进电机会根据P1 的脉冲形式做对应的运动,Proteus 中LCD、上位机Text 正确显示步进电机运动状态。


5 结束语
      
提出了一种基于Proteus 的PC 机对步进电机运动控制仿真方法。所构建的仿真系统能很好的实现PC 机对步进电机的同步控制与状态显示整体过程,通过程序设计开发与仿真系统无缝连接,实现了程序所预期要求的控制过程,并给出了丰富的实验观察接口,仿真实现了程序硬件调试、系统调试过程。

参考文献
      
1 孙耀杰,左贺,康龙云,曹秉刚,史维祥. 抑制混合式步进电机转矩波动的时变重复控制[J]. 中国电机工程学报,2004,24(11):183~187
2 孟武胜,李亮. 基于AT89C52 单片机的步进电机控制系统设计[J]. 测控技术,2006,25(12):46~51
3 张俊杰,李世其,熊友军. 基于数据手套的机械手控制技术应用[J]. 计算机应用研究,2006(6):170~175
4 李河清,侯志祥. 基于串行通信的步进电机小型集散控制系统[J].计算机工程,2007,33(10):258~260
5 金建新,郑虎子. 16 位单片机控制混合式步进电机的研究[J]. 机械设计与制造,2007(9):94~96
6 李全利,迟荣强. 单片机原理及接口技术[M]. 北京:高等教育出版社,2004(1)
关键字:Proteus  步进电机  运动控制仿真 引用地址:基于Proteus 的PC 机对步进电机运动控制仿真

上一篇:镍镉电池智能充电器的研制
下一篇:基于RS-485总线的温湿度监控系统设计

推荐阅读最新更新时间:2024-03-16 13:32

51单片机学习笔记:步进电机控制,正转反转等
步进电机应用广泛, 例如打印机、磁盘驱动器、玩具、汽车雨刷、手机震动、机械夹具、刻录机等各种机械控制场合 一些概念: 拍数N 定子控制绕组每改变一次通电方式,即为一拍 一个磁场通电周期是 A-B-C-D-A 完成一个磁场周期性变化所需脉冲数, 也指电机转过一个齿距角所需脉冲数,用N表示 拍数又等于相数的1倍或2倍, 以四相电机为例, 有4相4拍, A-B-C-D-A... 4相8拍, A-AB-B-BC-C-CD-D-DA-A... 齿距角θz 一个通电循环周期(比如4拍)转子转过一个齿距角 齿距角又等于360除以转子齿数Z, θz=360/Z 步距角θs 步距角,即在没有减速齿轮的情况下,对于一个脉冲信号,转子所转过的机械
[单片机]
51单片机学习笔记:<font color='red'>步进电机</font>控制,正转反转等
基于数字相关的时栅信号处理设计LPC2138源程序及proteus仿真
设计要求如下: 1.时栅传感器模拟器:通过输入两路时间和空间的信号。 (1) 设计一路正弦载波信号模拟信号输出 sina * cos(wt) (2) 设计一路余弦信号模拟信号输出 cosa *sin(wt) (3) 设计两路信号的合成模拟信号输出 sin(wt+a) 2. 设计数据采集模块。(要求整周期采样) 3. ARM硬件接口电路设计:显示路和键盘电路 4. 软件设计:数字相关算法求解角度、显示、按键、A/D. 5. proteus仿真和实做。希望对大家有用! 仿真原理图如下 LPC2138单片机源程序如下: #include config.h //#include LPC21xx.h #include
[单片机]
基于数字相关的时栅信号处理设计LPC2138源程序及<font color='red'>proteus</font><font color='red'>仿真</font>
单片机按键&串口控制步进电机正反转调速含程序和仿真
包含程序和仿真 功能:按键或串口发送字符指令,控制步进电机正转、反转、停止、加速、减速动作 仿真过程可直接通过按下电脑键盘控制 仿真原理图如下 单片机源程序如下: #include reg52.h #define uint unsigned int #define uchar unsigned char //------8拍----- uchar code zz ={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转 uchar code fz ={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
[单片机]
单片机按键&串口控制<font color='red'>步进电机</font>正反转调速含程序和<font color='red'>仿真</font>
步进电机加减速方法
    步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,步进电机控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。要解决这个问题,必须采用加减速的办法。就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。这就是我们常说的“加减速”方法。    步进电机 转速度,是根据输入的脉冲信号的变化来改变的。从理论上讲,给驱动器一个脉冲,步进电机就旋转一个步距角(细分时为一个细分步距角)。实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。   所以步进电机在高速启动时,需要采用脉
[嵌入式]
单片机自行车测速系统+源程序+proteus仿真
自行车测速系统仿真原理图如下 单片机源程序如下: #include d:c51reg51.h #include d:c51intrins.h sbit LCM_RS=P3^0; sbit LCM_RW=P3^1; sbit LCM_EN=P3^7; #define BUSY 0x80 //常量定义 #define DATAPORT P1 #define uchar unsigned char #define uint unsigned int #define L 50 uchar str0 ,str1 ,count;
[单片机]
单片机自行车测速系统+源程序+<font color='red'>proteus</font><font color='red'>仿真</font>
新型步进电机驱动电路的研制
1 引言   在实时控制领域,16位单片机由于其运算速度和精度已得到广泛的应用,尤其在工业过程控制及仪表中,16位单片机对于步进电机的精确控制具有特别重要的意义。在对某型船用燃油机的油门控制器的研制过程中,步进电机作为执行元件,如何提高步进电机的运动平稳性、抗干扰性、可靠性成为研究的核心问题。   对于基于16位单片机的步进电机控制系统来说,驱动电源的输出直接作用于步进电机的绕组,因而驱动电源性能好坏直接影响步进电机的运行性能。 2 对步进电机驱动电源的核心要求   由于步进电机的驱动电流比较大,所以单片机与步进电机的连接需要专门的功率放大电路和驱动电路。油门控制要求响应速度快,运动曲线复杂,所以要求步进电机提高运行特性和反应速
[电源管理]
新型<font color='red'>步进电机</font>驱动电路的研制
基于STM32的步进电机实验
步进电机介绍 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机基础知识 步进电机参数说明 四相步进电机有两种运行方式 1.四相四拍;2.四相八拍。 拍数 指电机转过一个齿距角所需脉冲数,通俗的来讲拍数指的是步进电机运行时每转一个齿距所需
[单片机]
基于STM32的<font color='red'>步进电机</font>实验
步进电机控制芯片与驱动电路
步进电机控制芯片TC1002 是一个高性能二相步进电机细分驱动控制器。TC1002支持14 种细分等级,最大256细分,最大支持4.2A和8.0A电流。TC1002它包含一个模拟 SINE/COSINE 信号发生器, 完整的数字控制集成在一颗芯片中,高集成度减少产品的设计周期。尽量的减少了外部的分 立元件,提供给设计者一个简单但又高效的产品。 在一个完整的细分控制系统上,TC1002 全面的控制马达运行状况,它能在任何时候改变马达状态,没有必要要复位控制器。它很容易使马达前进使用者设定的固定步数。另外在“整步”输出上,当马达长 时间工作后,它会指出马达是否还处于整步状态上。TC1002  通过输入时钟和方向两种信号 就可控制马
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved