一、背景
上一步完成的 PID 自整定库的使用,效果不错,虽说有点曲折,但最终搞定。总体而言,在分享的PID-AutoTune 库基础上,可以实现 PID 参数自整定,关键是通过这个过程初步理解的自整定的概念和实现方式,对后续应用 PID 调节时,整定参数有了比较大的信心,这次是针对小车直流电机调速,下次想换一个不同场景,看看这种方式是否可行,如果可以,那就说明这套自整定的逻辑是成立的!
这一步检验一下小车的调速效果,看看自整定是否能给出较好的PID参数。
二、目的
基于前一步实现的自整定方式,用于整定小车的电机PID调速参数,实现小车电机定速转动,从而为后续小车可控运行打下基础。
三、测试方式、过程
3.1 硬件准备
前一篇已说过:由于所用的 7 号镍氢充电电池放置了快 10 年,现在几乎无法正常放电,经过激活后,短路电流从约0.5A升到大约1.5A,勉强能用。
小车的供电电路如下:

原来设计时是考虑到电机启动和堵转瞬间会有较大电流,故使用电池直接给电机驱动H桥供电(电路中标号BAT),但所用的电池由于久置内阻太大,带负载后电压极剧跌落,导致电机无法正常工作。
正好手头有DC-DC升压模块:

在BAT输出上串入此模块,期望能稳住输出。增加后略有改善,但电机转动后,还是会从5V跌落到3V左右。前面尝试自整定功能时,就要基于此状态。
由于想尝试用锂电池供电,所以不太想买新的镍氢电池。目前锂电池逐渐成为主流,原设计选择镍氢电池是考虑比锂电池安全,现在锂电池已经比较安全。
用于电机驱动需要使用动力电池,即可以大电流放电的。选择的是用于模型飞机的聚合物锂电池,号称可以 10C 放电:

电池尺寸正好可以放置在原来小车的电池仓中,但原来的充电电路是针对镍氢电池设计的,改为锂电后,需要改变为4.2V恒压充电。分析上述供电电路,做了以下修改:
1、将R11、R12、R13拆除,脱开原来的充电回路。
2、R13短路,将充电输入直接接入D2。
3、将D2换为 1N4007,充电电压改为标准5V,使用手机充电器,经过二极管 1N4007降压后,正好接近4.2V。
4、充电电源改用标准的手机充电器。
经过这样简单修改,原来的供电电路即可使用。BAT输出增加的DC-DC升压模块保留,正好弥补锂电池输出电压偏低的问题,输出调节到5V。
完成后,测试了一下,效果很好。开始基于此重头开始完成自整定过程。
3.2 PID 参数自整定
前面一篇已经搞清楚使用 PID 自整定库的操作顺序:
1)使用PWM输出确定速度范围和判断线,以及产生速度震荡的PWM摆幅。
2)按所得到的上述数据设定自整定工作参数,启动自整定,两侧电机分别执行。
由于两侧电机特性、结构差异,故考虑两侧的PID参数分开整定。
在执行整定前还发现 MCU 程序的一个 bug:PID调速忽略了负值,因为我设计时将负值定义为反转,但 PID 算法必须是速度绝对值!此篇所附程序已修改。
单侧运转整定,小车原地打转,可以放置在桌上:
自整定参数过程
左侧自整定过程:






右侧自整定过程:






得到两组PID参数,将其放入程序,观察效果如何?
3.3 检验效果
直接将上述整定得到的参数作为程序的默认PID 参数:


先看一下记录的速度及对应PWM波形:
1、左侧速度 200mm/s:

2、左侧速度400mm/s:

3、右侧速度 200mm/s:

4、右侧速度 400mm/s:

图中红色直线为设定速度,红色曲线为实际速度,绿色曲线为PWM值。
从上述图中可以清晰看出:速度很快就围绕设定值以一个固定的偏差波动了,波动幅度应该是小车的驱动特性所致,一是码盘分辨率偏低,虽说20ms刷新一次速度,但测得的速度实际是较长时间的平均值。此外转动机构的阻力变化较大,处于波动状态,这个从前面固定PWM输出时的速度变化就可以看出。
低速时的过冲是由于我在程序中设置了固定的启动PWM (60%),同时为了避免开始速度变化过大,倍频算法有误,延时了10个脉冲后才启动测速和 PID;这个在波形中可以清晰地看到,如果想获得更好的效果,可以根据设定速度选择启动PWM。
上述的速度波动是否会影响调速的效果呢?
用走直线的方式可以大致验证一下,如果两侧速度都能较好的运行在设定速度下,那小车应该走的是直线,将左右侧速度均设置为300mm/s,运行1000mm:
PID 自整定参数验证
从视频中可以看出:开始时由于两侧是固定PWM驱动,小车跑偏了一点,之后PID投入,小车基本走的是直线,到结束时,由于两侧是脉冲计数控制的,故没有走完的一侧继续,小车又回正了。
通过这个视频可以看出:
1、PID调速后的实际运行效果不错,速度波动影响不大。
2、程序所设置的定距离控制精度还行。
四、结语
通过这步验证,我对 PID 的运用十分有信心了,后面想尝试一下走轨迹的PID控制效果,即:将小车走的轨迹作为PID的设定值,通过改变左、右两侧的速度差,实现轨迹跟踪。
这个场景和调速略有区别,看看自整定方式是否可行。
————————————
文中程序下载:
链接:https://pan.baidu.com/s/16-V7hRcgnQXPdn1mZvCVDg
提取码:eg9q

6807



被折叠的 条评论
为什么被折叠?



