留言1:卓老师,我是
带着感情来指导学生参加这个比赛。
我对于博思宇的越野车模被怼,感到
留言2:卓大大,能不能出一个K车舵机电机讲解呀!新手上手K车有点难欸。留言3:卓大大你好,能不能和K车厂家沟通一下,让他们出售舵机单品,舵机坏了就要换车代价太大了。
三种不同的舵机
今年参加室外越野组比赛的队伍,部分选择了广东博思公司提供的K车模。K车模体积大,速度快,但是它的转向舵机与常见到的三线舵机不同,它的接口是五根线。普通的三线舵机接口包括电源线,底线以及控制信号线,工作电压一般在4.56V之间。输出转角与控制信号脉冲宽度(10002000us)成正比。
舵机的驱动和位置反馈电路都已经集成在舵机内部。
普通的三线舵机是依靠脉冲宽度控制输出转角
K车模舵机的接口是五根线,其中包括有驱动马达两根引线,位置电位器三根引线。内部就不再包括有驱动控制电路。
K车模的五线接口
下面是将K车模舵机拆开以后的内部结构。最后面的电路板上仅仅承载着马达和位置电位器,没有其他的电路元器件。
K车模内部结构
如果不拆开舵机,如何判断接口的五根连线的功能定义呢?
可以通过万用表测量端口各引线之间的电阻判断引线的功能定义。
根据这五根连线之间的连通关系,可以将它们分成两组。一组是黄线和黑线,之间的电阻大约为2.6欧姆左右。这应该是连接马达的两根引线。
测量舵机五根连线之间的电阻
另外一组引线之间的阻抗在4.8K以内,根据它们的电阻数值关系,可以分辨出它们连接到位置电位器的三个接头的关系。
K车模接口定义
舵机内部马达的输出通过减速齿轮控制舵机的输出轴,同时经过另外过渡齿轮驱动位置电位器。电位器转动有机械极限位置,这也决定了舵机输出转角有机械机械位置。
如果电机在控制过程中,力矩过大,并且没有进行位置反馈,则容易将位置电位器拧坏。
将舵机位置电位器的三个引线接入直流电压源,使用测量滑动端的电压变化,可以知道位置的反馈信息。
连接位置电位器引线
控制舵机中马达两端的电压(正负1V),可以观察到舵机输出轴的转动,同时位置传感器上的电压随着转动角度线性变化。
当输出角度到达机械极限的时候,舵机就会被位置传感器卡住,停止转动。
舵机转动与位置传感器滑动端的电压变化
电机在5V电压驱动下,转动时的电流大约为75mA,功率很小。
但是当电机转动到极限位置,被卡住之后,电机的堵转电流就会超过500mA。这个电流会随着工作电压的升高而变大。
观察舵机工作电流和堵转电流
使用五线引脚的K车模舵机,需要自行制作驱动电路。这虽然增加了制作的难度,但也给如何提高舵机性能留出了设计空间。
舵机控制一个典型的位置反馈的运动控制问题。对于初学自动控制专业的同学来讲,实现五线舵机的位置控制可以将经典的PID理论认识清楚。这个控制问题和智能车的方向控制、速度的控制原理都是一样的。
根据前面测量,舵机马达工作电流较小,设计舵机控制电路中的马达驱动芯片可以选用体积较小的电机驱动芯片。
A4950电机驱动芯片
手边正好有A4960电机驱动芯片。它的输出峰值电流可以允许3.5A,工作电压范围7.5~40V。如果车模使用镍镉电池(7.2V),驱动它有点困难。考虑到外部越野车膜大都是用高压的锂电池,所以它比较适合K舵机驱动电路设计。
A4950芯片管脚定义
为了达到A4950输出功率范围,在它的数据文件中还给出了PCB的参考设计方案,A4950消耗的功率所产生的热量可以通过芯片底部金属衬底引至电路板上的铜层进行散热,保证了芯片工作的热稳定性。
A4950参考PCB参考设计
A4950可以通过一组互补的PWM波形完成对于电机的正反转控制。数据手册中给出了为了抑制EMC,芯片工作电源上所需要的滤波电容的参数。
A4950另外一个优点就是提供输出电流保护以及热保护。通过LSS端口的电流采样电阻,可以设置芯片输出的最大电流值。比如在VREF = 5V的情况下, 电流采样电阻Rs=0.25欧姆,最大输出电流就被限制在2A左右。
A4950驱动电机的电路
最大输出电流的限制对于舵机工作的安全非常重要。不论是舵机输出转角超过的机械极限被卡住,还是舵机的负载过重都会造成马达工作电流过大,如果没有电路的保护,则容易造成舵机马达烧毁。
对于舵机位置控制,可以使用经典的PID反馈控制完成。可以利用车模上MCU富余的PWM端口,AD端口,配合MCU软件算法完成舵机的位置控制。
测试电路以及控制舵机的转动
下面利用一个STM32F030单片机制作了一个简单的控制电路,完成对于舵机的位置控制实验。
使用PID控制舵机,需要对于PID参数进行整定。这部分可以根据控制对象的近似线性模型通过优化的方式获得。也可以根据舵机转动通过手动方式逐步确定。
通常情况下先确定PID控制中的比例系数P。下面动图显示了P参数从0.01变化到2.0过程中,输入指令为阶跃给定(从500跳变到2000)舵机中位置电位器输出电压的采集曲线。
P参数对于舵机控制影响
从上面实验过程可以看到,当比例参数大约0.3.之后,位置输出就会出现一定的过冲。随着P增大到一定程度,输出就会出现明显的振荡过程。这个震荡是有马达转子的惯性引起的。
舵机的控制电压决定的输出转角的速度,与输出位置之间是积分关系。本质上讲,只是用比例控制,就可以达到位置无偏控制。但是考虑到马达转子电枢的电阻(2.5欧姆)的影响,再加上驱动电路的限流,所以在舵机负载比较大的情况下,在比例P参数比较小的时候,输出位置会有一定的误差。
所以增大P,使得控制有一定的过冲可以减少最后位置输出的误差。
如果PID中,只是引入积分控制,此时控制系统形成两阶的积分关系。负反馈就会引起系统输出振荡。
只在积分反馈下舵机在周期振荡
为了抑制振荡,所以反馈控制中的比例项不能够为0。下图显示当PID控制中的P=0.5,积分项的系数从0增加到0.003的时候,舵机的阶跃响应。
随着积分系数增加,系统的振荡越来越严重,阶跃响应的上升速度并没有增加。
在PI控制下舵机的阶跃响应
因此,提高舵机的响应速度,减少输出振荡,不能够使用PI控制。
引入位置的微分反馈量,可以有效抑制输出振荡。下面的实验显示了在P= 1.0的情况下,引入位置反馈的微分项,微分D参数从0变化到10, 输出振荡就会大大减小。
舵机在PD控制下的阶跃响应
实验中,当微分系数大于10之后,由于位置模拟量中存在着噪声,在微分项的作用下,舵机中产生了较大的高频噪声,同时静态工作电流也会增加。
根据前面实验结果,PID中,P取值0.5~1; I 取值为0; D取值5~10,就可以达到比较好的控制效果。
在确定好PID参数之后,还如何提高舵机的响应速度呢?
如果再想提高舵机的响应速度,只有通过提高工作电压以及工作电流来实现。下面的实验显示了舵机工作电压从7.6V变化到10V的过程中,舵机的单位阶跃响应。
工作电压对于舵机阶跃响应的影响
实验中可以看到,在相同的PID控制参数的作用下,随着工作电压的升高,舵机的响应速度也随之增加。
因此,控制电路中,在保证舵机的最大限流满足安全的情况下,驱动电压越高,舵机的响应速度就会越大。
舵机在PID参数不合适的情况下的输出相应
舵机的控制最终是通过MCU实现的离散控制。控制周期Ts对于输出有一定的影响。在通常情况下,可以将离散控制中的采样时间等效成一个时间常数为0.5Ts的一阶过渡过程,因此随着控制周期的增加,就会引起输出中的振荡。
下面实验显示了控制周期从1ms增加到130ms过程中,舵机在PD控制下的阶跃响应。
控制周期对于舵机响应的影响
从上图中可以看到,当控制周期Ts小于50ms时,舵机的输出相应大体都相同。当Ts大于50ms,输出中过渡过程的振荡明显增加了。
因此对于舵机的PID控制,只要控制周期小于50ms,比如选择20ms,可以达到比较满意的效果。由于控制频率较低,实现PID的运算对单片机的计算量增加非常小。
在网络上关于舵机控制的解决方案很多。自行实现舵机的控制,不仅对于初学者可以提高专业的技术水平,同时也可以提高舵机的安全性能。
磕头智能车
最后回复前面同学的提问,关于舵机的损坏,除非是舵机机械上的缺陷,否则,对于舵机的烧毁现象只能是说明在舵机的驱动上没有做好安全保护。
就像带着感情指导参赛学生的杨老师在前面所讲,学生对五线舵机的抱怨实际上是对其不了解所致。
也希望参赛的同学们,在碰到舵机损坏的过程中,能够吃一堑长一智。激发自己探究的好奇心,在解决问题的过程中,增强自己的学识和技能。
比赛中路障会固定死的,
这种撞路障的结果只有车毁人亡结果