思路说明:
我们设置一个目标值,这是我们要调节的目标。我们通过AD采样(PC3)采集到当前电压,通过减法运算我们得出当前电压与目标电压的差值,接下来我们只要发现当前电压与目标电压不同,我们就要想办法改变当前单片机的输出电压(PA8),也就是当前电压,使其向目标值靠近,我们知道我们是在中断内通过通道一改变CCR的值来改变输出电压的,并且是通过改变系数coefficient来改变输出电压SPWM波的幅度。因此我们只要发现当前电压比目标电压小,我们就让coefficient增大,我们发现当前电压比目标电压大,我们就让coefficient减小。并且为了增加调节速度和防止超调,我们采用一开始软启动调节,当目标电压与当前电压相差较小时,我们启动PID调节,精确调节。(注意,PA8输出SPWM波时要接一个截止频率为1.5K的低通滤波电路才能得到正弦波)。
PID相关参数函数定义
double coefficient=0.02:
float goalVoltage=0.5,goalVoltageIndex=0.1;//目标电压参数 目标电压步进
关于PID调节:我们设置目标值为0.5V,goalVoltageIndex为步进值
按键3和4控制目标电压变化。
TIM1->CCR1 = arr*(0.5f+coefficient*sin_table_336[Counter_sine1++]);//2000(0.5+0.01*() 2000(0.5+0.48*)
coefficient改变,输出电压幅度改变。系数保护,示波器测得在coefficient处在0.49到0.01之间SPWM有效值输出电压范围为0.33到0.91之间
if(Real_Voltage-goalVoltage<=-0.025f || Real_Voltage-goalVoltage>=0.025f)
SoftFlagVoltage=1;
if(Real_Voltage-goalVoltage<0.015f || Real_Voltage-goalVoltage>-0.015f)
PIDFlagVoltage=1;
在采样处理模块中,在目标值和当前电压值相差大于0.025时,软启动标志位置1
在目标值和当前电压值相差0.015和0.025之间, PID标志位置1。开始PID调节
CloseFlagVoltage为闭环调节标志位。
按键9控制闭环调节的开始与否,置一闭环调节开启