前几日简单啰嗦了一下什么是步进电机,什么叫步进电机的细分,高速球为何要做细分,和细分数与高速球性能的关系,也许描述的不够通俗易懂,也欢迎朋友们拍砖。
很多高速球厂商都在宣传自己的高速球低速稳定性如何如何,细分数如何如何,那到底高速球的步进电机细分是如何实现的呢?是不是理论上实现了多细分性能就一定好呢,其中的关键技术和难点在哪里呢?今儿就继续唠唠......
上一篇说到,步进电机是按照步距角的角度一步步的旋转的,并且误差不累计,所以如果不做细分的情况下,步进电机的相位发生变化一次,就会向前走过一个步距角。现在高速球行业内普遍使用的步进电机绝大多数都是步距角为0.9°的4线制混合式步进电机,两个线圈相位不停的交替发生变化,步进电机就不停的按照0.9°的角度向前旋转。我们做细分,其实就是要把这一步瞬间改变的两组线圈的电流大小和方向做成若干步缓慢的交替,先看下面这个图吧。
上面一共四个图,分别是不做细分、2细分、4细分和8细分情况下两组线圈的电流大小示意图。
想必大家应该能看明白了,上面的每一幅图都是两个完整的相位变换周期,没经过一个1/4周期线圈的电流相位发生一次变化,电机转1个步距角也就是0.9° 。如果每个1/4周期,线圈相位分两次不同电流的阶梯型变化,则电机就能够一次旋转至0.45°,分两次走完一个0.9°的步距角。如果每个1/4周期,线圈相位分8次不同电流的缓慢阶梯型变化,则电机就能够一次旋转至0.1125°,分8次走完一个0.9°的步距角,这就是我们如何采用调整步进电机的两组线圈的电流大小,来实现让电机将0.9°的步距角分N次完成,也就是实现细分的最基本原理。对了,忘记说了,大家应该也看出来了,这个电流变化曲线是按照正弦余弦曲线来变化的,至于为什么有兴趣的朋友可以和我单独交流,在这里就不在刨根问底了,呵呵。
上面就是如何实现细分的基本原理,那么我们的高速球是通过什么方法来控制步进电机的这个电流大小和电流方向的呢?这就是硬件电路配合软件所要做的事情,下面看一个典型的步进电机驱动芯片的驱动部分构造--驱动桥电路:
这里简单画出了步进电机的一个线圈的驱动桥电路的主要部分,通过这个电路,可以很简单的控制步进电机的一个线圈的电流方向和电流大小。电流方向可以通过调节桥电路的驱动相位的电平高低,电流大小可以通过调整桥电路放大部分的参考电压值。
总结一下,让步进电机慢慢的微步转起来原来如此简单,只是不停的按照正弦余弦曲线来调整流经步进电机的两个线圈的电流大小,并且控制其电流方向,就可以让步进电机慢慢平稳的按照多细分旋转起来。但是真正要实现这个理论上简单的道理,还需要有大量的工作要做,那就是如何让实际的电路按照理论上的设计实现细分旋转的功能。
据我所知,目前硬件电路上做细分设计有两种常用的构架:
一种是使用内置硬件细分的步进电机驱动芯片(Step Motor Driver with Micro-Step Control),它的特点是芯片内部集成了DA数模转换电路,并且做好了细分,用户只需要向芯片不停的输入脉冲,芯片就能够按照细分一步步的按照正弦余弦曲线调整步进电机两个线圈的电流大小和方向,实现步进电机的细分微步旋转,并且对厂家来讲,需要步进电机按照细分来旋转一步,只需要给Driver IC输入一个脉冲即可,软件程序相对比较好写;但是这种构架的缺点是细分数受芯片本身的限制,目前我所知的内置细分的单芯片驱动两相式混合步进电机驱动芯片最多只能做到64细分,还有一个缺点就是内置细分的Step-Motor Driver IC价格比较高。
第二种是构架是采用外部DA数模转换电路配合不带内置细分的步进电机驱动电路(Mosfet Gate Driver),它的特点是细分数可以根据我们的外部DA数模转换芯片的精度来设计,比如我们选用一款8位输出的DA芯片,就可以做到为步进电机驱动芯片提供高达256细分的参考电压输出,使步进电机驱动芯片输出的电流值达到256个细分等级,实现256个细分,如果采用12位的高精度DA芯片,我们理论上就可以实现2的12次方=4096细分(我还没有见过高速球有做到这个细分数的,假如做到了256细分,步进电机带动摄像机旋转一步,摄像机看100米以外的画面只移动6毫米,在上一篇文章中我已经给出具体算法,更何况我们的高速球还要算上减速比)。但是这种构架的缺点是需要至少用两个芯片及外围电路才能组成一个完整的驱动,电路较复杂,对厂家来讲,每一步的细分步进,都要MCU去控制步进电机驱动芯片以及DA芯片,程序相对来说复杂(但如果真的做好了效果绝对是一流的,细分数多的步进电机旋转起来的声音都不一样,那个细腻的就像在抽丝...)。
这两种构架都有很多芯片可以选择,在这里我就不说啦,省的芯片推广商家们拿砖拍我。
这两种构架在我开发高速球过程中都使用过,第一种构架程序上的处理的确简单,而且微步的效果也不错,几乎从图像上看不出来抖动,因为芯片内部已经做好了处理。第二种构架我也做过,做到了256个细分,虽然控制起来程序比较复杂,但是那个效果就像我刚才说的,听步进电机旋转时的声音就能听出来,细腻啊,呵呵。实践的时候我在高速球云台的摄像机支架上安装了一个激光灯,用它在200米开外打激光点,然后同时用摄像机录像查看点的移动过程,见过这个实验的朋友们都没有看出来有抖动的现象,根据我的经验,其实如果真的能做到了64个细分,就完全满足高速球的微步无抖动的要求了,但就算是理论上做到了256个细分,采用8位DA芯片提供参考电压驱动,外围电路做不好或者软件做不好,同样连16细分的效果好都没有,因为真正效果的好坏,还取决于以下几个方面:
1、步进电机本身的精度。我们刚才所分析的都是建立在理想情况下,但是实际上,步进电机本身没有我们想象中那么均匀的步进,在两个线圈的电流按照正弦余弦曲线进行变换的时候,步进电机如果质量不好,其两组线圈之间的产生的力不会均匀过度,这会造成实际旋转过程中在某一角度或电流变化的某一过程造成严重抖动。
2、DA芯片的精度。现在的DA芯片市场上大把,有串口的有并口的还有高级的SPI高速接口的,无论哪种,用好了都可以很好的实现细分,但是用不好的话,也就是外围电路配合的不好,甚至PCB板布板不合理,也会造成输出电压的波形受到干扰,达不到理想精度,那么步进电机驱动芯片将此参考电压一放大就会出现不理想的情况,造成电机无法平滑运转。
3、DA芯片的速度与同步精度。假如我们采用第二种方案:DA芯片+步进电机驱动芯片的方式,那么一个高速球至少需要4路DA参考电压输入,因为有两个步进电机,每个步进电机有两组线圈。那么理论上这两组线圈的电流变化应该是瞬间同步完成的,但是实际上这个同步过程和速度取决于我们的DA芯片本身以及MCU的速度。如果出现不同步,哪怕是几是个微妙的延迟,实际情况下就会出现过渡状态,也就是相位变换有延迟,我们看到的效果就是步进电机会出现跳跃抖动。
4、MCU软件水平。软件是步进电机硬件电路驱动的灵魂,这里面包括步进电机加速、减速、停止等等控制,不仅仅是一个细分的问题,那么我们要想完美的实现高速旋转加速迅速,又要实现低速高细分平稳顺滑,没有好的软件,12位的4096细分效果一样会一塌糊涂。
【原创文章,欢迎转载,但请注明出处,谢谢!】 |