ilan2003 发表于 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 的代码很不理解。





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







http://cache.amobbs.com/bbs_upload782111/files_2/armok0154145.jpg

http://cache.amobbs.com/bbs_upload782111/files_2/armok0154146.jpg

http://cache.amobbs.com/bbs_upload782111/files_2/armok0154147.jpg









Rundstedt 的代码:



#include <reg51.h>



unsigned char code mstep=

         {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={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={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;

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;

dac_a=daca;



}



main(){



IT0=1;       // edge trigger

EX0=1;       // external interrupt 0 : CLK



EA=1;

while(1){

   }

}

appleboy 发表于 2005-6-24 10:11:15

我用双A3955+EPM7032

做了个驱动器,

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

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

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

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

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

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

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

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

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

Rundstedt 发表于 2005-6-24 12:34:34

不明白哪里不理解。



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

ilan2003 发表于 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了,那样电机还怎么动啊?

ilan2003 发表于 2005-6-24 16:48:49

我想下个结论:

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

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

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

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

就有一个电流了

Rundstedt 发表于 2005-6-24 17:44:14

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



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

ilan2003 发表于 2005-6-24 19:32:15

但是请楼上的注意了,L6506的内部结构和LM393和74HC74的结构有点区别:

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

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

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

http://cache.amobbs.com/bbs_upload782111/files_2/armok0154305.gif

fetish 发表于 2005-6-27 23:31:05

就算接的是SET而不是CLK,你可以把20k占空比弄得尽可能小,效果不也一样吗?

ilan2003 发表于 2005-6-28 08:46:23

我做过这样的实验,不行

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

就不明白了,呵呵。

darktiger 发表于 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%的快衰减!

不染细分性能太差了!

ilan2003 发表于 2005-6-30 14:13:13

楼上对续流研究的很专业

谢谢

darktiger 发表于 2005-6-30 15:27:43

我曾经有个驱动器细分不均匀,最后我把续流研究透才把这问题解决了!



我刚开始是看lmd18245 入行



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



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

ilan2003 发表于 2005-6-30 21:39:12

呵呵我,一般都是LMD18245入门

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

appleboy 发表于 2005-7-1 08:26:26

能评价一下A3955吗?

在不给CP的时候它有噪声

很讨厌的!

ilan2003 发表于 2005-7-1 08:30:55

我没用过A3955,用LMD18245也一样,发现不给CP也有噪声,14kHZ左右的。

darktiger 发表于 2005-7-1 11:08:45

把频率弄高点(16k-25k)!! 如果全用快衰减就一点声音都没了!

appleboy 发表于 2005-7-1 13:06:09

把频率弄高点(16k-25k)!! 如果全用快衰减就一点声音都没了!



没用的!

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

用手接触Vref声音有改变,

armok 发表于 2009-1-28 22:49:31

relaxs123 发表于 2009-1-28 22:32:04

这帖讨论的不错

yinhe 发表于 2009-1-21 22:41:03

ji

chairang 发表于 2009-2-7 21:45:10

学了点东西

ytrewq 发表于 2009-2-4 10:21:08

迟到的&nbsp;Cool&nbsp;!



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



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



&nbsp;./emotion/em105.gif

relaxs123 发表于 2009-2-4 09:14:45

小松工程对6506的理解很有问题,回头整理下我的看法说一说。

ebug 发表于 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的占空比很重要,一定要比较大,具体计算,很多文档上都有详尽描述。

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

armok 发表于 2009-2-26 13:55:34

155107149 发表于 2009-5-18 08:55:42

我的斩波(LM393+74LS74)得到的是PWM波(按斩波恒流的思路应是占空比50%),在反馈电阻上的波形完全不是正弦形状,而且有电流声,是不是555的频率不够大啊?但是我的已经有20k了。。。

shyany 发表于 2009-5-18 13:15:59

学习了,谢谢各位的讨论。

flash6 发表于 2009-5-18 14:31:15

超长的等候,为数不多的刨坟帖成功的例子!贺一个!

coldwind 发表于 2009-12-18 10:52:53

【20楼】 relaxs123
积分:4
派别:
等级:
来自:        小松工程对6506的理解很有问题,回头整理下我的看法说一说。

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

等了你几个月的看法了

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

wuxianglei 发表于 2010-3-29 01:18:01

mark,理论性很强,

jackmo 发表于 2010-3-29 10:01:12

mark

h572 发表于 2010-3-29 10:10:58

细分可以减少振动,但是不能改变绝对精度。

BINGSHUIHUO 发表于 2010-11-6 00:21:06

2005年的贴子要到2009年才能置

tongyf 发表于 2010-11-18 18:13:59

mark

archi9966 发表于 2012-12-28 22:28:00

好贴,拱了

yangbing2020 发表于 2013-7-28 13:35:34

贴好,也拱了

yeksw206 发表于 2013-9-7 23:13:48

学习学习!
页: [1]
查看完整版本: 潜水潜了好多天,来喘喘气,发表一些对步进电机细分的一些评论