一、PID的理论知识
大家可以搜索 《PID控制算法的C语言实现(绝对的好东西)》很好的入门材料。
下图就是从上面摘下来的PID控制流程图。
二、利用温控讲解单环PID
我们可以在电路板上焊几个电阻进行加热(PWM控制加热速度),然后用温度传感器来读取实时温度来控制加热温度,我觉得这是最好的单环PID实践实验。
在这个实验中,流程图中的传感器是温度传感器,执行器是电阻。
- 位置式PID的公式:无人机上使用的基本是位置式PID
百度百科的公式
上面是代码中参考的公式。
在这个温控当中,我没有带上dt参数也能实现PID温控,而无人机上的PID控制基本上都带上了dt。
- 为了方便和公式对应上,代码里面的变量尽量采用公式的名字进行定义。
void Pid_Realize(void)
{
float desiredvalue = 20; // 期望值,也就是设定值,在这里,我们设定的温度是20℃,让温度保持在20℃
ek= desiredvalue - actualvalue; // 期望值和实际值(传感器测量值)的误差。
integral += ek; // 所有误差的和就是积分。
uk = kp*ek + ki*integral + kd*(ek - ek_1); // PID 控制的输出
// uk = kp*ek + ki*integral*dt + kd*(ek - ek_1)/dt; // PID 控制的输出. 带dt项
// 输出限幅,这里的pwm占空比的数值在0 ~ 4000 之间
if(uk > 4000)
uk = 4000;
else if(uk < 0)
uk = 0;
// 把uk 的值传递给PWM,作为PWM的占空比驱动电阻加热
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
_HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,uk); // 设置占空比
ek_1 = ek; // 更新e(k-1)的值
actualvalue = 温度传感器的测量值; // 这里的实际值保存的是温度传感器的值,曲线看的是这个。
}
- 调参
调参一般是先P,再I,最后D来进行的。大家可以自行调节参数,通过曲线来观察参数的作用。
三、无人机中使用的串级PID
串级PID有两个单环PID,一个内环PID,一个外环PID,下面引用了正点原子的minifly小四轴的串级PID流程图
内环是角速度环,能快速响应,外环是角度环。外环的期望角度是遥控器操作杆给的值,内环的期望角速度是外环PID的输出。测量角度来自于姿态结算,测量角速度来自于陀螺仪的测量值。
四、电机输出
这是一个很重要的点。如果正负号不对的话,怎么调参也是不对。
电机油门肯定是个正号。然后其它的正负号怎么判断呢。比如下面的飞机,只看横滚。
当你向右转动(向右横滚)无人机的时候,1号和2号电机是会抵抗你向右转动的,因此,PWM1和PWM2中,R_motorout 是正号,PWM3和PWM4中,R_motorout 是负号。其它的都可以根据抵抗作用来进行判断。
PWM1 = motor_throttle + R_motorout;
PWM2 = motor_throttle + R_motorout;
PWM3 = motor_throttle - R_motorout ;
PWM4 = motor_throttle - R_motorout;
五、调参
调参前的准备:
如果是小四轴,可以用绳子绑住无人机,注意一定要将绳子固定在中间,不然调出来的参数是不对的。
调参指导:一般先调内环,再外环,先PI,再I,最后D。横滚俯仰一起调。调完横滚俯仰最后调yaw。
具体可以看一下该博主
https://blog.csdn.net/nemol1990/article/details/45131603
我的一些建议:
如果你调参的时候,发现无论Kp 给什么值,貌似都不起作用,这时候,你把PID最后的输出减半,然后再调参,你就会发现新大陆。同时,也要留一些占空比给姿态控制,不要都给了油门控制,比如占空比最多1000的话,留个100给姿态控制。(当时第一次调参的时候,我就没注意这个PID输出的限制,也调了一个多月吧,都没调出来,一度抑郁。呜呜)。
比如这样:
PWM1 = motor_throttle + R_motorout * 0.5;
PWM2 = motor_throttle + R_motorout * 0.5;
PWM3 = motor_throttle - R_motorout * 0.5;
PWM4 = motor_throttle - R_motorout * 0.5;
从现象调参一般只能是个粗调值,如果有无线数传之类的设备,可以通过看曲线来进行细调。文章来源:https://www.toymoban.com/news/detail-415747.html
如果错误,麻烦指正。文章来源地址https://www.toymoban.com/news/detail-415747.html
到了这里,关于PID入门及无人机实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!