电机PID控制过程的问题


1. 结构体指针和结构体作为函数参数

在测试电机速度PID调节的过程中,发现如果把结构体作为参数,函数内的操作,不会改变原结构体。

测试时,又出现跟踪不了运行代码的情况:

用结构体的话,即使占空比还未达到满,pid的输出也不再变了

 总之把结构体参数改为结构体指针就行了:

 我还加了积分限幅和pwm输出限幅,若是有一段时间始终存在一个方向的误差,并且pwm输出最大也无法减小(电压不够),

则积分会不断累加,造成负载降低或是供电上升时,此时pid不能迅速降低输出的pwm,原因是积分项积累的太大了,

限制在pwm满值/积分系数就行了。

2. 减小了控制周期,发现我的pid效果更差,重新从P调,

1.发现在增加I时,即使之前没超调,也有可能出现超调,解决办法是同时把P和I减小到超调量小于10%,优先减少I,

切记,在两者的效果达到比较好的时候再加微分;

2. 积分本意是解决静差,但由于系统在一定范围内会自稳,此时积分会一直上升,直到输出能驱动系统为止,

但实际系统有惯性,加入微分可以在系统刚动时,立刻撤回一点力。

理解还很肤浅,需要多学理论知识。

调了几个小时,下次这样差不多就行了,还是要建立理论基础,不然都是试凑,无聊。

3. 串口接收助手异常的情况

把波特率从115200降为9600

4. TIM无法控制CH1通道

不初始化串口: