发布时间: 2026-04-18
用PID控制舵机角度,其核心目标在于使舵机能迅速、平稳且精确地停留在目标角度。众多开发者所遭遇的问题是,舵机抵达目标角度后会反复颤动、响应迟缓,或者转过目标角度后再折返。这些问题均可借助正确调节PID的三个参数伟创动力,即比例(P)、积分(I)、微分(D)来予以解决。本文会给出一套经验证的三步调参办法,不管你使用的是180°标准舵机还是360°连续旋转舵机伟创动力舵机,均可直接套用。
舵机内部存在着一个电机,还有一套减速齿轮以及一个角度反馈电位器。PID控制器所承担的任务是,读取当下出现的角差值这一现象也就是当下角度与既定目标角度之间的误差,随后通过运算得出控制信号,以此来驱动电机朝着让误差得以减小的方向去进行转动。
比例(P):将误差直接进行放大,误差要是越大,那么驱动电压也就会越高 ,要是P过小,舵机就转不动 ,要是P过大,舵机就会在目标角度附近出现剧烈震荡的情况(过冲之后反向冲过头,反复循环下去)。
积分(I),它是对过去全部过往之误差予以累积而言。当舵机已然快要接近目标可是始终差那么一点儿而无法停下(形如负载具备较大重量或有着摩擦这种情况)之际,积分项就会持续不断地进行累加,最终给出充足的力量从而推至相应位置。I要是过大的话,就会致使出现严重的过冲现象。
微分(D),它是用于预测误差的变化趋向,当舵机迅速朝着目标靠近时,D项会生成一个反向的制动之力,以此避免冲过目标,倘若D过大,那么舵机的反应就会变得迟缓,出现走走停停的状况。
存在一个常见的案例,此案例为,你运用手臂去按压一个开关。其中P代表的是你的力量,I代表的是你在发现没有按下去的时候持续加以力量时所需的耐心,D代表的是你快要接近开关的时候提前进行减速的控制。仅仅只用P的话,你有可能以过大的力量砸到开关,或者因力量不足而停留在半途中;要是加上I,你能够保证最终按下去;若是加上D,你能够平稳地接触而不会发出“咔哒”声。
在开始之前,要实行这样的准备工作步骤:把舵机稳稳地固定于水平的台面上,然后将摇臂进行拆卸,使得舵机轴处于空载的状态。接着连接控制器,此类如 像 或者专用的舵机控制板那样的,要保证其能够实时输出现存的角度以及输入目标角度。并且推荐运用串口监视器或者上位机软件来进而观察角度曲线。
1. 将I和D设为0。
2. 将一个假设舵机范围为0至180°的90°目标角度进行输入,使其从0°产生跳变,来到90°。
3. 逐渐增加P值。观察舵机响应:
P太小:舵机转不到90°就停了。
舵机能够迅速地转向到大致九十度的附近位置,然而却会于八十九度至九十一度这个范围之内,反反复复地摆动上几次之后,方才达到稳定状态。
P值过大时,舵机会直接冲过90°抵达95°,接着反向冲回到85°,像这样反复震荡且不会停止。
4. 记录下,那个“刚好开始出现持续等幅震荡”时的P值,将其记为P_max ,随后取 = P_max × 0..6作为初始比例系数。
有一个实测的案例,是关于某标准数码舵机,它的供电范围是4.8 7.4V,其转动范围是180°,当P等于2.8时它开始出现震荡,选取P等于1.7作为起始的数值。
1. 保持不变,从0开始增加D。
2. 再次输入90°阶跃信号。
![]()
3. 观察过冲幅度,当D合适时,第一次冲过目标的角度,从原来的3至5°,降低到1°以内,并且,震荡次数从3至4次,减少到1次。
4. D呈现过大的表现时,舵机往接近目标之处行进时,其速度显著地变缓慢,到了的那几度,需耗费很长的时间才能够抵达到位的状态。
5. 以 乘以八分之一到四分之一的结果当作起始存在的范围,然后进行再次的微小调整。
实际取值的示例情况是,当P等于1.7的时候,D从0.2开始进行试验,待到0.5的时候,过冲情况几乎已经消失,并且响应变得干脆。
1. 保持和当前D值,从0开始增加I。
2. 给舵机施加一种轻负载,这种轻负载比如是用手指轻轻按压摇臂,又或者让舵机停在目标角度是45°。
3. 观察稳定状态下是否存在误差情况:当舵机处于停止状态,并且保持在44.5°位置不发生移动时,与标准角度相比所差的0.5°,此即为稳定状态下的误差。
4. 逐渐增加I,直到舵机能顶着微小外力仍然准确停在目标角度。
5. 重要警示:I的值一般情况下是比较小的。针对于大多数的舵机系统而言,I的取值范围处于0.01至0.5之间。要是I过大的话极有可能会引发严重的过冲以及震荡现象。
实际测量的案例情况是,上述提到的舵机,在处于轻负载的状况下,当电流I达到0.05的时候,稳态误差呈现消失的状态,而当电流I变为0.2的时候,开始出现了过冲的现象最终取0.08作为电流I的值。
认证方式为:按顺序对三个目标角度展开测试,先是从0°至90°(此为大行程),接着是从45°到50°(这属于小行程),是从90°至90°(进行扰动测试,通过手动拨动摇臂来查看是否能快速回位),最终得到测试结果。
问题1:舵机到达角度后持续抖动(高频吱吱声)
原因:P过大或D过小,系统在目标点附近微震荡。
解决:降低P 1020%,或者增加D 2030%。
![]()
问题2:响应太慢,目标角度要等1秒以上才到
原因:P过小或D过大。
将P进行增加,每次增加的幅度为百分之二十,与此同时,对D会不会因为尺寸过大从而致使刹车过早出现的情况展开检查。
问题3:带负载时停不到位,差几度
原因:I缺失或I太小。
解决:增加I值,每次增加0.02~0.05,直到误差消除。
问题4:360°连续旋转舵机如何PID控制角度?
阐述:360°舵机不存在角度反馈的电位器,一般是用在速度控制方面而非位置控制上。要是有精确角度的需求,那就得采用带有磁编码器的多圈绝对角度舵机(比如RS485/CAN总线这种类型)。受PWM控制的360°舵机没办法运用前面提及的PID方法来对绝对角度实施控制。
根据参考数据,不同类型舵机的PID响应特性有显著差异:
1. 马上执行:于你的代码里,把PID输出限制幅度到舵机PWM信号的合理范围(一般500 2500μs,对应0 180°)。要是不进行限幅,积分项会积累到危险数值。
2. 优先进行P的调整:遵循“临界震荡值乘以零点六”这样的规则,不要凭借感觉随意尝试。这属于自动化控制领域里被公认的 整定法的简化应用。
3. 负载测试,那是要在最终应用场景所呈现的实际负载状况之下,再次去精细地微调PID。空载的时候调好的那些参数,一旦加上负载,肯定是必然需要去增加I以及P的。
4. 记录参数情况下,存在这样一种情况,即需针对每个舵机型号来保存一组PID参数,并且同型号不同个体之间那种差值情况、不同态势与10%相差额度以内这种状态,通常是这个样子并且存在如此状态、这般态势 这种情况。
把核心观点进行重复阐述:PID控制舵机角度的实质是让“速度、稳定性、精度”这三者达到平衡状态。正确的调参先后顺序一直都是先P再DI,要是跳过D直接去调I必定会致使出现剧烈震荡情况。要是你仅仅能够记住一个数值,那就记住这个:对于绝大多数数码舵机而言,起始参数(P等于1.5,I等于0.05,D等于0.3)能够解决80%的基础应用场景。
最终得出的结论是:依照上述所说的三步法来进行操作,不管是哪一位技术人员,尽数都能够在30分钟之内完成舵机PID参数的初次整定。要是震荡始终持续存在着,那么要优先去检查供电是不是充足——舵机在产生快速响应的时候,其瞬时电流能够达到2至3A,若是供电不足之处,就会致使控制失效,而这可不是PID参数所能够解决掉的问题。