首先你要搞清楚PID公式原理
PID算法解析PID算法解析_pid滤波算法-CSDN博客
然后你要明白调试原理
首先要确定一个电源
电源决定了你后面调试时电机转动速度大小和pwm占空比的关系,电源电压越大那要转到同一速度所需的占空比越小,反之电源电压越小那要转到同一速度所需的pwm占空比越大,这是pwm积累原理的一个特征
所以我的电源如果说它的电压值是不同的,那我的pi d值也会不同,这就是为什么要保证电源电压一定要相同
而且如果你的电源只是三伏3,那就算你的pid值转到极致,它也就是转成3伏3的电压。如果一个轮子它的额定功率是12伏或者是5伏,你3伏3就不够,可能你放到地上他跑都不会跑,这也是要考虑的一个因素
所以我们调试的时候就需要选定我们的电压,这里我选了12伏作为电压电源电压
其次,你要先确定你的pi d公式是实时可行的,你要配置三个模块,一个是电机转动的tb6612模块,pwm定时器比较输出模块,定时器中断实时处理pi d算法模块,编码器实时读取速度模块
然后把这三者结合在一起,并调试各个模块的功能,调通之后你再进行下一步
然后你需要配置一个串口来实时输出你的 pi d公式对应输出的实时转速和当前pwm占空比
然后用vofa++,这样可以用线条显示你的转速与预测值实际想要得到的值的差距,这样的测试工具可以让你的调试更简单更加明显。这也是通常pi d调试需要的一个软件,下面是vofa的配置方法
vofa++使用方法
vofa++的使用发送数据还是需要用printf函数,不要自己一个一个字节发
准备好之后,我们首先让电机跑一跑看一下当我pwm输出最大值的时候,我的转速达到了多少
这样我们就可以指定我们的目标转速,不然我们不知道最大转速是多少,你就算定一个转速,如果他比你最大转速还要快的话,那他不就一直在加速就没有用
之后呢,我们要看一下我们这个pwm适不适合我们这个占空比这个调值适不适合,因为如果说我们的占空比调值是1~10,那它增大减小的很少,也就是说你的间隔要大一点它才能有一个过程,如果是1~10这么一个小范围里面的话,它没有过程它就直线加速直线减速,这样是体现不了我们pi d公式的效果的,我们完美的pw m占空设置就是我们完美的定时器比较输出值设置,应该是当我比较输出最大的时候,我的转速是最快的,当我的比较输出值最小的时候,我的转速是最慢的,然后他们中间应该相隔千或者万为单位
之后就可以我们知道了我们的最大速度也就是我们最大占空比时我们的最大速度是多少之后,我们就可以设置它的一半为我们的目标速度,然后打开我们的vofa加加看一下当前pid值是怎么样一个变化
P值增大,可以让我更快达到我想要的目标值,然后其他i d值这些你还是要去看pi d原理,你就知道pid值代表的是什么意思要该怎么调
pid值调好之后,要让它使得我的限时转速在我的目标转速左右徘徊,而且它的波形较为完整,然后要更接近于我的那个目标转速
之后用手轻轻触摸轮子看一下我的那个pwm输出它会不会增大。因为当你趋于稳定的时候,你手给轮子添加一个阻力,它速度变慢,pi d公式想要让它速度变得跟原来一样快跟目标速度一样快,那他就需要增大我的p他。M占空比的输出来增加我的力,这样我们就可以看到pi d反馈是否真正实现
这样我们调试就完成了,但是这也只是初调,因为我们此时没有把车放到地上,你这样的初调只能验证你的pi d公式是准确的是可以用的,那我们要把它放到地上的话,我们需要给他先测试一下什么转速能跑,然后设定一个真正适用于我们的一个范围