模拟舵机
(1)相信绝大多数入门PWM波的时候,都是使用的SG90进行学习的。
(2)SG90作为模拟舵机的经典款式,具有便宜,小巧的特点。不过一般在实际操作过程中不会使用到SG90,因为他的扭矩太小,不足以做到控制的效果。
(3)在我们使用SG90的时候,需要不断的输入50HZ(20ms周期)的方波,通过调节这个正弦波的占空比来设置舵机旋转的角度。
(4)我们除了SG90是模拟舵机以外,还有MG995,MG996R,MG90S等。其他型号的模拟舵机能够根据需求提供更高的扭矩。绝大多数情况都可以使用。
数字舵机
(1)数字舵机是什么呢?其实很好理解,数字舵机可以理解为模拟舵机的升级版本。
(2)数字舵机从构造上与模拟舵机类似(几乎可以说就是一样的)。
(3) 数字舵机比模拟舵机多了一个微控制器,是其可以获取更快的响应频率。
(4)虽然数字舵机比模拟舵机多了一个微控制器,但是在写单片机程序的时候,控制方法都是一样的。基本就是50HZ(20ms周期的方波),控制占空比来设置舵机的角度。
(5)只不过数字舵机内部的微控制器会对接收到的50HZ方波进行处理,最后转换为300HZ甚至更高频率的方波对舵机进行控制。这样能够让数字舵机拥有较高的精度以及非常快的响应速度。
(6)我个人认为最重要的一点就是,数字舵机只需要一次PWM波就可以让角度一直保持!而模拟舵机需要持续的PWM波才可以保持角度!这样能够让一些资源比较少的主控拥有控制多路舵机的能力。
注意:如何理解角度保持?
我们可以购买两个舵机,一个数字舵机,一个模拟舵机。都只对其输出一次相同的PWM信号。然后我们尝试用手取改变舵机的角度,会发现模拟舵机的角度是可以很轻松的搬动的。但是数字舵机能感受到明显的阻力。
(7)数字舵机的死区也比模拟舵机的小。
(8)数字舵机的微控制器还可以检测堵死以及一些抖动,而模拟舵机不可以。检测堵死非常非常重要!因为当舵机被堵住之后,原来要转换为机械能的能量无法被释放,那么就会进而转换成热能,造成舵机的自烧毁。
之前我比赛的时候就遇到过这样的情况,我购买的模拟舵机没有检测堵死的情况。然后舵机堵住,堵住的时候人肉眼是分辨不出来的,我们以为是他到达了这个角度停止了。过了一会儿,舵机突然乱转,导致整个机械结构崩坏。你要知道,这可是开赛前一天啊!直接心态崩了,一晚上没睡。虽然最后修好了,但是比赛的时候心狂跳,清晰感受到了心跳。
(9)虽然数字舵机优点很多,但还是有缺点存在的。比如数字舵机会比模拟舵机价格贵很多!数字舵机的耗电一般也比模拟舵机的高。
总线舵机
(1)这个舵机很有意思,他不是使用的PWM波控制,而是采用的串口控制(好像可以主控1个IO口进行控制,不过很麻烦,不建议)。
(2)串行总线舵机的最大优点是,一个串口可以控制多台舵机。每个舵机有一个ID号,根据这个ID号,可以实现一个串口对多个舵机的控制。有点类似与I2C的仲裁机制。
(3)这个舵机还可以支持角度回读,可以实时检测到舵机当前角度位置。
(4)我看到的这款串行总线舵机(自己淘宝搜总线舵机,我就不打广告了。因为我也没买过,不清楚到底好不好用),还可以进行温度电压值的检测,拥有智能放堵转功能。这是非常完美的功能,可以有效处理我上面说的,明明舵机处于堵死状态,但是我们自己以为舵机是到规定角度停止的问题。
(5)这个舵机还有一个有趣的功能,可从舵机变成马达。(不建议,太浪费钱了,不如直接自己买马达)
(6)优点这么多,讲一下缺点。毫无疑问,一个字,贵!还有一个问题,就是需要一个TTL的调试板,如果没有这个调试板,那么你需要1个IO口实现对多个舵机控制的,很难控制。
总结
PWM舵机
模拟舵机和数字舵机都是PWM舵机。他们两个区别如下:
总线舵机
优点
(1)总线舵机可以实现1个IO对多个舵机控制,不过控制过程极其麻烦。所以一般需要一个TTL调试板,变成串行总线舵机。方便写程序和控制。
(2)总线舵机不再像PWM舵机那样,只能主控像舵机传输数据。总线舵机可以向主控回传数据,方便查看舵机角度和堵死情况。
(3)串行总线舵机线非常少,对于需要使用到多个舵机的时候,方便定位问题。而PWM舵机,每一个舵机多需要三根线,排错比较麻烦。
(4)串行舵机的寿命比PWM舵机的长。
缺点
(1)有这么多优点,那么肯定有的一个问题就是,贵!贵的要死!!!
(2)一定要板载一个TTL调试模块,变成串行总线控制,否则一个IO控制很麻烦。
建议
(1)如果主控有比较多的硬件PWM资源,而且不是高精度控制,建议使用模拟舵机。因为相同扭矩情况下,比其他两个便宜真的太多了。绝大多是情况模拟舵机都可以处理,没必要当冤大头。
(2)当主控的硬件PWM资源比较少的时候,但是主控又没有很多信息(即中断比较少)需要处理,舵机数量不多,精度要求一般。我建议使用定时器模拟软件PWM,还是采用模拟舵机!我们追求性价比,不当冤大头!
(3)当主控的硬件PWM资源少,而且还有很多信息需要处理(中断比较多,而且有类型I2C这种协议数据需要传输)。那么定时器模拟软件PWM不再推荐。我推荐使用数字舵机,然后主控的硬件PWM输出的IO连接所有数字舵机,中间放一个继电器。继电器由普通IO控制。
(4)当舵机数量一多,主控PWM通道不够,而且像上面这种做法也很花费IO口资源。杜邦线多,排查错误很很难。这个时候串行总线舵机就是首选了。