搜索
bottom↓
回复: 36

潜水潜了好多天,来喘喘气,发表一些对步进电机细分的一些评论

[复制链接]

出0入4汤圆

发表于 2005-6-23 14:21:09 | 显示全部楼层 |阅读模式
前一段日子同事(差不多是老板,呵呵)叫我帮他做一个小项目,所以一直在忙这个事情,项目接近尾声,终于可以喘口气了。

透露一下这个项目的有关硬件:ATmega16 主控芯片,主要是温度的采集 用DS18B20,还有语音芯片ISD2500系列的,还有红外遥控的单片机解码,这些都很快搞定了,后来由于开环控制直流电机,有点棘手,弄了好几天,后来发现是电机正反转速度不一样。





转到正题:

步进电机的细分驱动远没有我想的那样简单,所以很多人多步进电机的细分驱动问题摸不着头脑。我也在细分驱动设计中失败了好多次。原本以为成功的,现在用示波器测试了驱动器中的波形,发现电机的电流没有达到预想的那样的 正弦余弦的波形。

所以说对步进电机的细分驱动还有很多没有搞清出的地方,今天重新打开一些PDF格式的datasheet在看。一篇文章中看到这样的描述:

We now come to one of the most advanced topics in all of Stepper motor theory - Current Recirculation.  This subject separates the men from the boys when it comes to manufacturers of Microstepping circuitry.  Some choose to ignore it completely, some give you complete control.  Personally, I consider Allegro's understanding and handling of this topic to be top-notch.  But first, what is Current Decay?  (Note: this topic also has relevance in non-Microstepping Controllers but will not be discussed here.)



大致的翻译是这样的:

(电流续流)Current Recirculation是步进电机驱动最重要的问题。细分驱动的高手往往对电流续流问题研究的非常的透彻。作者认为Allegro的驱动芯片处理此类问题做的最好了。

在 Allegro的驱动芯片资料中,有三个关键词:我觉得非常的重要:slow decay      fast decay   mixed decay  。也就是处理(电流续流)Current Recirculation的方法。



还有一个问题我一直没有想明白就是使用L6506的事情:上次用L6506设计的驱动器有问题。一直对L6506很有疑惑,因为L6506的datasheet实在是不怎么详细。看L6506的内部结构和通常的斩波驱动的结构有点差异,就是20k的信号脚是接在D锁存器的CLK还是S脚。L6506是接在了S脚,datasheet中没有说明里面的锁存器的时序是和7474的时序是一样的。这一点我很气愤的。但是在实际的测试中我得出结论是一样的。

当L6506的内部的S脚是0(20K斩波的低电平),R端是0(比较器输出是0)那么输出的还是Q端还是1

所以当SENSE的电压即使高于REF的电压,Q端输出的波形和20K斩波的波形是一样的。



L6506和L6203 或者L298的电路很容易得到,但是软件的实现可能有点麻烦,至今我还没有搞明白



看了 Rundstedt 的代码很不理解。





还有用示波器测试步进电机产品的波形是这样的:这个就更不明白了





















Rundstedt 的代码:



#include <reg51.h>



unsigned char code mstep[64]=

         {0xf4,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,

          0xf1,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,

          0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

          0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc};

unsigned char code dacb[32]={200,199,196,191,184,176,166,154,

                             141,126,111, 94, 76, 58, 39, 19,

                               0, 19, 39, 58, 76, 94,111,126,

                             141,154,166,176,184,191,196,199};

unsigned char code daca[32]={  0, 19, 39, 58, 76, 94,111,126,

                             141,154,166,176,184,191,196,199,

                             199,199,196,191,184,176,166,154,

                             141,126,111, 94, 76, 58, 39, 19};





unsigned char tmp,cnt;



unsigned char dac_a,dac_b;





sbit sel=P1^4;

sbit wr=P1^5;



void incr (void) interrupt 0 //***********0

{  

  P2=mstep[cnt];

  P0=dac_b;

  wr=0;

  wr=1;   // write data to DACB

  P0=dac_a;

  sel=0;

  wr=0;

  wr=1;   // write data to DACA

  P1=-1;

  tmp=P1&0x3;

  switch(tmp){

    case 0:

     ++cnt;

      break;

   case 1:

     cnt=(cnt&0x3e)+2;

     break;

   case 2:

     cnt=(cnt&0x3c)+4;

     break;

   default:

     cnt=(cnt&0x38)+8;

     break;



  }

  cnt&=0x3f;

  dac_b=dacb[cnt&0x1f];

  dac_a=daca[cnt&0x1f];



}



main(){



  IT0=1;       // edge trigger

  EX0=1;       // external interrupt 0 : CLK



  EA=1;

  while(1){

   }

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2005-6-24 10:11:15 | 显示全部楼层
我用双A3955+EPM7032

做了个驱动器,

用半步模式(没有细分),两项线圈都是方波

但是在不给CP的时候有16K的叫声,

我用整步模式(没用细分),叫声到是没了

但,线圈都不是方波,运行的自然就不稳了,

8细分的程序我写了一半,还没有完全测试

但可以肯定就是在没有CP的时候,会发出16K的叫声

并且该驱动器驱动四海的和日本的电机都不能运行到太高的频率(估计不超过1K)

而使用SLA7024的另一个驱动器则可以运行在2K,我想应该还有余地,没有测试

注:测试使用的升降频都是日本的专利算法!

出0入0汤圆

发表于 2005-6-24 12:34:34 | 显示全部楼层
不明白哪里不理解。



非存贮示波器看不出细分过程。

出0入4汤圆

 楼主| 发表于 2005-6-24 16:40:19 | 显示全部楼层
0xf4,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,  

          0xf1,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,  

          0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,  

          0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc



L6506的IN1,IN2,IN3,IN4的控制,怎么是这样的??

里面是与门啊,如果输入0xf0,那么L6506的OUT1,OUT2,OUT3,OUT4不都是0了,那样电机还怎么动啊?

出0入4汤圆

 楼主| 发表于 2005-6-24 16:48:49 | 显示全部楼层
我想下个结论:

用L6506实现不了电流的控制。(内部的结构已经定死了)

假使REFA输入为0v,那么比较器输出0,D锁存器会输出0,但是

20K的斩波输出为0时,D锁存器输出1,那么当假使REFA输入为0v

D锁存器,输出的并不是始终是0,而是和20K的斩波差不多的波形。

就有一个电流了

出0入0汤圆

发表于 2005-6-24 17:44:14 | 显示全部楼层
这个表是驱动LM393+74HC74来替代L6506的电路的。这个版本中,因为89S51在上电复位前四个输出都是高,所以后面的管子有大量短路的情形,虽然L6506可以控制抑制这种短路,但毕竟干扰非常大,所以我在其中两个IN的前面加了非门,所以4个IN有两个正逻辑两个负逻辑。我的程序只是提供参考示意,并不一定要拘泥。



还有楼上的结论也是错误的,D-FF的Reset和Set跟CLK无关,优先级别最高,只要Reset有效,不管CLK怎么变化,输出始终是0。

出0入4汤圆

 楼主| 发表于 2005-6-24 19:32:15 | 显示全部楼层
但是请楼上的注意了,L6506的内部结构和LM393和74HC74的结构有点区别:

20k的斩波接在了SET脚上,而不是CLK,当SET脚和RESET脚同时为0的情况是

Q=1;(这是74HC74里描述的,L6506应该也一样吧),我在实际中测也是一样

当REF=0V时,OUT端就一直输出20K的斩波信号。

出0入0汤圆

发表于 2005-6-27 23:31:05 | 显示全部楼层
就算接的是SET而不是CLK,你可以把20k占空比弄得尽可能小,效果不也一样吗?

出0入4汤圆

 楼主| 发表于 2005-6-28 08:46:23 | 显示全部楼层
我做过这样的实验,不行

而且看到datasheet里写的占空比是12/13*100%左右

就不明白了,呵呵。

出0入0汤圆

发表于 2005-6-30 10:13:53 | 显示全部楼层
对于这个问题,我说两句!



引用:

(电流续流)Current Recirculation是步进电机驱动最重要的问题。细分驱动的高手往往对电流续流问题研究的非常的透彻。作者认为Allegro的驱动芯片处理此类问题做的最好了。

在 Allegro的驱动芯片资料中,有三个关键词:我觉得非常的重要:slow decay      fast decay   mixed decay  。也就是处理(电流续流)Current Recirculation的方法。





三续流方式,快衰减,慢衰减,混合衰减  这里的衰减是指线圈电流的衰减

假设电源电压是24v 电流1a 电阻1ohm Vd=0.7v Vron=0.5v



续流慢衰减 能量在电感存储 电流在电感中循环 主要是 线圈电阻 d Ron消耗能量 此时线圈电感电压是 -(Vr+Vd+Vron)=-2.2v

续流快衰减 能量返回电源  主要是 把电能返回了电源 此时母线电流是-的 线圈电阻 d Ron消耗能量 -(Vs+V+Vd+Vron)=-26.2v



也就是在快衰减时 线圈电流能很快的变小!



下面来说一下 快 慢的意义

在电机高速运转的时候 如果全是慢  那线圈电流还没变小 下一指令又想变大  …… 电机跑不了高速

快衰减就是为了跑高速的



再说一下混合衰减(不细分就不需要考虑)  就是在电流上升过程中用慢 下降用快

既50%   有些ic 会用 60%慢 40%快 因为正弦波在sin=90度的时候 变化很小!



我一般是用50% 有的驱动器由于检流反馈环节反映慢 那我就用要100%的快衰减!

不染细分性能太差了!

出0入4汤圆

 楼主| 发表于 2005-6-30 14:13:13 | 显示全部楼层
楼上对续流研究的很专业

谢谢

出0入0汤圆

发表于 2005-6-30 15:27:43 | 显示全部楼层
我曾经有个驱动器细分不均匀,最后我把续流研究透才把这问题解决了!



我刚开始是看lmd18245 入行



研究续流是看allegro的 3955 3957 那里面比书上讲的好多了,建议有兴趣可以看看!



只要看图就可以了,文字不需要较真!

出0入4汤圆

 楼主| 发表于 2005-6-30 21:39:12 | 显示全部楼层
呵呵我,一般都是LMD18245入门

好象我的感觉也是这样,要看allegro的芯片资料

出0入0汤圆

发表于 2005-7-1 08:26:26 | 显示全部楼层
能评价一下A3955吗?

在不给CP的时候它有噪声

很讨厌的!

出0入4汤圆

 楼主| 发表于 2005-7-1 08:30:55 | 显示全部楼层
我没用过A3955,用LMD18245也一样,发现不给CP也有噪声,14kHZ左右的。

出0入0汤圆

发表于 2005-7-1 11:08:45 | 显示全部楼层
把频率弄高点(16k-25k)!! 如果全用快衰减就一点声音都没了!

出0入0汤圆

发表于 2005-7-1 13:06:09 | 显示全部楼层
把频率弄高点(16k-25k)!! 如果全用快衰减就一点声音都没了!



没用的!

另外衰减也都实验过了没有差异!

用手接触Vref声音有改变,
头像被屏蔽

出0入0汤圆

发表于 2009-1-28 22:49:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2009-1-28 22:32:04 | 显示全部楼层
这帖讨论的不错

出0入0汤圆

发表于 2009-1-21 22:41:03 | 显示全部楼层
ji

出0入0汤圆

发表于 2009-2-7 21:45:10 | 显示全部楼层
学了点东西

出0入0汤圆

发表于 2009-2-4 10:21:08 | 显示全部楼层
迟到的&nbsp;Cool&nbsp;!



&nbsp;&nbsp;2005年的贴子要到2009年才能置&nbsp;Cool&nbsp;!



&nbsp;&nbsp;呵呵!总算平反了!



&nbsp;

出0入0汤圆

发表于 2009-2-4 09:14:45 | 显示全部楼层
小松工程对6506的理解很有问题,回头整理下我的看法说一说。

出0入0汤圆

发表于 2009-2-26 13:50:51 | 显示全部楼层
看看官方是怎么解释l6506的,当Vsense高于Vref时,确实是按占空比来控制开断的。

The design of the L6506 is such that the flip-flops used in the device are set dominant so that whenever the sync
input is low the Q output of the flip-flop will be high even if the reset is applied by the comparator at the same
time. This characteristic of the flip-flops can be used to make the current sensing immune to the recovery currents
and noise spikes that occur when the power devices switch. If the sync pulse is longer than the turn on
delay time of the power stage, as shown in figure 6, these two sources of errors will be ignored.

用真值表描述就是这样的
S R Q
0 X 1
1 0 0
1 1 Qn

当R=1时,S是脉冲,Q=1;当R=0时,S是脉冲,Q=-S。所以这里控制S的占空比很重要,一定要比较大,具体计算,很多文档上都有详尽描述。

小松工程,不要轻易下结论,在自己没研究清楚的时候,呵呵~
头像被屏蔽

出0入0汤圆

发表于 2009-2-26 13:55:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2009-5-18 08:55:42 | 显示全部楼层
我的斩波(LM393+74LS74)得到的是PWM波(按斩波恒流的思路应是占空比50%),在反馈电阻上的波形完全不是正弦形状,而且有电流声,是不是555的频率不够大啊?但是我的已经有20k了。。。

出0入0汤圆

发表于 2009-5-18 13:15:59 | 显示全部楼层
学习了,谢谢各位的讨论。

出0入0汤圆

发表于 2009-5-18 14:31:15 | 显示全部楼层
超长的等候,为数不多的刨坟帖成功的例子!贺一个!

出0入0汤圆

发表于 2009-12-18 10:52:53 | 显示全部楼层
【20楼】 relaxs123
积分:4
派别:
等级:
来自:        小松工程对6506的理解很有问题,回头整理下我的看法说一说。

............................................................

等了你几个月的看法了

谢谢【11楼】 darktiger 扌丸着真心人

出0入0汤圆

发表于 2010-3-29 01:18:01 | 显示全部楼层
mark,理论性很强,

出0入0汤圆

发表于 2010-3-29 10:01:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-29 10:10:58 | 显示全部楼层
细分可以减少振动,但是不能改变绝对精度。

出0入0汤圆

发表于 2010-11-6 00:21:06 | 显示全部楼层
2005年的贴子要到2009年才能置

出0入0汤圆

发表于 2010-11-18 18:13:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-12-28 22:28:00 | 显示全部楼层
好贴,拱了

出0入0汤圆

发表于 2013-7-28 13:35:34 | 显示全部楼层
贴好,也拱了

出0入0汤圆

发表于 2013-9-7 23:13:48 | 显示全部楼层
学习学习!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 17:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表