PID程序的实现依据是数字PID的思想,由于数字信号是离散的信号,因此对于书本上积分环节我们采用的是累加方式实现。
通俗的说PID就是利用PID算法来控制微机输出的PWM占空比的手段。
大体编程思想:
设定三个参数,
Kp:比例系数
Ki: 积分系数
Kd:微分系数
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_PWM: 占空比调节参数
P_OUT:比例结果
I_OUT: 积分结果
D_OUT:微分结果
V_diff:目标值与当前值的误差
V_diff_D:积分环节误差累加结果
V_diff_now:微分环节误差之差
V_diff_last:微分环节上一次误差
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
V_diff_D +=V_diff:积分环节累加
V_diff_now = V_diff_last - V_diff :计算微分环节误差之差
Kc:有时候我们还需要添加一个维持系数,至于为什么要添加要视具体情况而定。
与温度PID不同的是电源稳压PID基本不具备惯性,即 当PWM占空比为0时温度还能够维系一段时间,而电压则可能发生剧变。
_PWM += Kp*V_diff + Ki*V_diff + Ks*V_diff_now;
在整定PID参数的时候先从比例开始
电压调节范围:5-15V稳压。
_PWM += P_OUT;
在达到稳压目标电源之前,关闭积分环节,一旦超调即打开积分环节使电压稳定下来。
不过,单只用比例环节就取得了很好的效果,电压基本能够稳定(负载电阻从8欧--300欧)。