typedef struct
{
float Kp; //比例系数Proportional
float Ki; //积分系数Integral
float Kd; //微分系数Derivative
float Ek; //当前误差
float Ek1; //前一次误差 e(k-1)
float Ek2; //再前一次误差 e(k-2)
float Sum; //累计积分位置
}PID;
PID pid;
static float PID_Calc(float TargetPLoad, float PowerPresent, PID *PID)
{
float PID_Calc; //位置
PID->Ek = TargetPLoad - PowerPresent;
PID->Sum += PID->Ek; //累计误差
PID_Calc = PID->Kp * PID->Ek + (PID->Ki * PID->Sum) + PID->Kd * (PID->Ek1 - PID->Ek);
PID->Ek1 = PID->Ek;
return PID_Calc;
}
//uint32_t ActualValue,SetValue;
1.你想要 5v 电压,但是现在实际电压是2v.
2.这样就知道 差值 =设置5v-实际电压2v=3v
3,把3放入PID,这样PID就自动输出PWM值,自动自加到5V


这只是PID其中一个优势
本文深入探讨了PID控制器的工作原理,通过具体实例说明了如何使用PID控制器自动调节目标值与实际值之间的差值,实现系统稳定。以5V电压调节为例,展示了PID控制器如何根据误差输出PWM值,自动调整至设定值。
4336

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



