舵机 (Servo) 是机器人系统中非常常见的执行机构,在多足机器人、人形机器人、相机云台以及低成本机械臂中,我们都可以见到舵机的身影。舵机的本质是一套小型的闭环伺服系统,它接收目标信号,通过驱动内部的直流电机,并经过减速齿轮组,从而调整输出轴的角度。该输出角度通过电位器采样,再由反馈控制系统调整其输出角度与目标值匹配。整个过程构成一个典型的闭环反馈控制系统。
舵机的优势在于结构紧凑、使用方便、价格便宜,但位置精度、负载能力及维持位置的能力有限,适合对控制性能要求不高、体积要求小的场合。而对于高精度、大扭矩、高速的场合则不适用(除极少数高端产品外),可以用交、直流有刷/无刷电机 + 旋转编码器的方案替代。
舵机按内部控制方式分为:
无论模拟还是数字舵机,接受的都是PWM信号;而在数字电机下还有一类为"总线式舵机" — 即在数字舵机的基础上,支持通过总线(TXD/RXD)下发指令。总线式舵机可以减少硬件平台的负载,且具有“维持”功能,不用持续输出信号。总线式舵机控制方式更加灵活,一般可以支持速度闭环、位置闭环等多种模式。有些数字舵机还支持多级串联,可以减少占用的I/O口数量。缺点是一般价格很高,可达几百美刀。如TurtleBot 3中就使用了DYNAMIXEL XL430-W250的总线舵机,价格在人民币500元左右。
总结一下,即舵机可按命令输入方式分为:
根据尺寸和动力特性,舵机也可以按照以下方式进行分类:
我们在为机器人选用舵机时,主要考虑的因素与指标有:
舵机在使用过程中,期望20ms为周期的PWM方波。其中,高电平的时长决定了输出轴的角度,并呈线性关系。一般中间位置为1.5ms,范围为[1ms, 2ms],即1ms为最左侧,2ms为最右侧。
使用PWM控制舵机的方式有以下三种:
Arduino的Servo库同时使用了方式(1)和(2),在有PCA输出的引脚上实现了硬件PWM (Pin 2, 3, 5, 6, 7, 8, 44, 45 and 46),而在其他引脚上使用软件PWM.
总线舵机的控制则相对简单,连接TXD/RXD后,只要安装手册中的通信协议下发对应指令即可。
影响舵机精度的元素很多:
另外很重要的一点就是齿轮组的品质,决定了反向间隙误差 (Backlash error) 和角度精度等。在这一点上,金属齿轮比塑料齿轮好很多。
舵机在工作时会产生瞬时大电流,一般峰值电流是维持电流的数倍到数十倍,所以一定要保证电源功率充足。否则会拉低整体电压导致控制部分死机或复位。另外一点要注意的地方就是,如果长时间遭遇堵转或超出额定负载,不仅会增加电源压力,还会导致电机烧毁及传动件损坏,一定要避免。
本文提供了舵机的分类、选择和基本的使用介绍。文章虽然不长,也没有精美的配图,但足以帮助入门者了解舵机的方方面面,希望对读者有帮助。
>> 本文章版权归作者所有,如需转载请联系作者授权许可。
>> 原文来自: 云飞机器人实验室
>> 原文地址: 在机器人系统中使用舵机
>> 关于我们: 关于云飞实验室
>> 支持我们: 帮助我们可持续发展
The post 在机器人系统中使用舵机 appeared first on 云飞机器人实验室.