• 西北工控自动化网 专业的兰州PCB芯片级无图维修,电路板软硬件开发公司-甘肃先睿工控科技有限公司!欢迎你! 业务咨询电话:0931-8593134 技术支持电话:18609487812

 

先睿工控广告

运动创意
其它的类

首页 》 全屏查看 》


步进驱动器驱动信号设计方案

关键词: 步进驱动器,驱动信号设计方案,先睿工控,西北工控自动化
描述:

步进驱动器驱动信号设计方案,无反馈运动控制解决方案


作者:代码灵魂  日期:2017/3/3

步进驱动器驱动信号设计方案

 

    小编手中有两台步进驱动器,据客户描述说是工作不太好,小编苦苦查找电路故障,并无发现异常,于是小编想,驱起来看看,到底是什么问题?

可是,小编手中,并没有驱动器的脉冲信号源,肿么办?于是小编动手做一个,

 

对于步进驱动器,我们知道,主要的控制信号有,DIR ENA PLU

其中DIRDIRECTION方向控制,ENA为启用 ENABLE的意思 PLU就是具体的驱动信号啦,这个信号是一个PWM

由于输入信号会经光耦隔离,我们就定义为高电平有效吧。(相比而言,高电平驱动与低电平驱动,更加安全一点。)

 步进电机驱动器-实物

设:

   DIR =0 为正转

    ENA=1  为启用

    PLU=1 为一个脉冲的宽度,

 

由于,步进驱动器已有,电路的搭建很简单,就这两根信号线加电源,外接电机就可以啦。

小编简单用CAD画一个图。

步进驱动机驱动信号示意图

我们控制上面三个脚就能控制步进电机,

 

其中如何去控制,主要是由程序来完成。

 

小编想,既然 要做一个驱动器的信号驱动,就做一个通用的吧,免的改来改去麻烦,

小编手头有各类贴片CPU,8脚单片机,也有51开发板,各种电子元器件若干,常用各器件全面。

 电子元器件

于是,我们规划如下功能:

三个输出控制信号线,DIR,ENA,PLU

编码开关三个输入信号来控制速度,用五个脚,其中,两个脚可以接一起接地,分别为,Key_UP, Key_DOWN, Key_SAVE

 

再加两个指示灯,输出  OUT_LED_RUN   OUT_LED_PLU

考虑到,驱动器会有细分的情况,我们定义两个指示灯,做为细分的倍率使调节起来方便,

我们定义,OUT_A,OUT_B  00时,转一下,增加一个点,01时转一下增加10个点,

10时转一个增加100个点,11时,转一下增加1000个点。

 

我们再增加一个指示灯,用来表示,脉冲来自外部还是由按键产生,

定义为,OUT_LOCK  OUT_LOCK 1时,我们锁定数据来自按键,0时来自外部,

外部来的信号,走完数量就停,内部来的信号,我们由旋钮来改变。

 

考虑到不实际生产,不进行PCB设计,我们就直接规划功能直接先写程序。 

 

接下来,我们规划程序功能。

开始运行时,读取保存的数据,旋转,旋钮,进行无级加减速,过程中,我们可以按下中键进行倍率选择,1*1    1*10    1*100   1*1000

 

我们定义一个变量UINT  PLUCOUNT   作为脉冲数量,即每秒的脉冲产生数。

我们定义一个变量UINT PLU_FROM_W  表示来自外部,

UINT PLU_FROM_N表示 来自内部,

 

过程如:

     说明,当待运行的脉冲数量大于1时,我们先运行1步,再判断数据来源是内还是外,

是外,我们就减1,是内,我们就不减,这样以来,旋钮调速就是恒速,不会停啦。实现了此设计测试的目的,当然,有的小朋友们,可能会用此方法去真正的实现控制,那数据就从外部来吧,,至于怎么改,小编预留了外部数据输入功能,不会改,那就麻烦了,建议还是多学点东东,再来看本方案吧,改法就是,置OUT_LOCK永久为0. 

  

我们先写一个脉冲发生,信号,这个信号函数 Output_PLU(uint ms)  返回为空,是一个执行函数,实现我们上面所说,数据来自外部还是内部的功能,实现输出一个脉冲的功能,实现,外部会走完停,内部会锁定一直转的功能,


  1. void Output_PLU(uint ms)
    {
  2.     if(OUT_ENA==1)
  3.         {
  4.               if (PLUcount>1)  //判断预执行的脉冲数
  5.                {
  6.                 OUT_PLU=0; //输出一个脉冲
  7.                 Delay_ms(1);
  8.                 OUT_PLU=1;
  9.                 Delay_ms(1);
  10.                 OUT_PLU=0;

  11.  
  12.                 if (OUT_lock==1 ) //如果脉冲锁定,则数据来自旋钮,否则来自外部,
  13.                     PLUcount=PLU_from_n;
  14.                 else
  15.                      PLUcount=PLU_from_w;
  16.                if (PLUcount>1) 
  17.                      PLUcount =PLUcount--; //来自外部的数据会减少到0
  18.  
  19.                 Delay_ms(ms); //用来调整速度。
  20.                 }
  21.                }
  22.         else
  23.     Delay_ms(50);   //如果没开启运行功能,就延时好了。即等待。
  24. }


我们以此为基础,继续不断扩展功能,完成预期目标。


                                                                                  未完待续


本信息由  甘肃先睿工控科技有限责任公司 发表于 西北工控自动化网
注意: 转载或分享 请注明来源:西北工控自动化!

在全屏模式下分享,效果更好!


扫一扫 添加通信录 扫一扫 添加微信号


COPYRIGHT ©2008-2018 XBGHZDH CORPORATION ALL RIGHT RESERVED .
COPYRIGHT ©2008 XBGHZDH ALL RIGHT RESERVED .           

        西北工控自动化 © 版权所有

本网站由:甘肃先睿工控科技有限公司独家赞助


总访问量:343032
当前在线:66