
专业版
带电压闭环的BUCK电路
3.8k
0
0
0
简介
开关电源DCDC降压电路,带电压反馈网络 输入范围DC12-80V,输出可调
简介:开关电源DCDC降压电路,带电压反馈网络 输入范围DC12-80V,输出可调开源协议
:Public Domain
创建时间:2023-05-18 21:47:36更新时间:2023-09-20 10:09:42
描述
工作条件:输入电压要大于28V,也可以更改使能引脚外的电阻实现调整。
实际电路:要更改输入输出电容的值,最好往大的取,电感也要采用比较大的值,以减少电压纹波。
电路构成:实用EG3112作为驱动芯片,采用LM358作为采样电路的运放。
代码部分只给出PID部分,其他需要可以联系
PID模块代码:
//定义PID变量结构体
struct _pid{
float SetSpeed; //定义设定值
float ActualSpeed; //定义实际值
float err; //定义偏差值
float err_last; //定义上一个偏差值
float Kp,Ki,Kd; //定义比例、积分、微分系数
float voltage; //定义电压值(控制执行器的变量)
float integral; //定义积分值
}pid;
//初始化变量
void PID_Init(float Kp,float Ki,float Kd,float speed)
{
pid.SetSpeed=speed; //设定值
pid.ActualSpeed=0.0; //采样值
pid.err=0.0; //误差
pid.err_last=0.0; //上一次误差
pid.voltage=0.0; //输出值
pid.integral=0.0; //累计积分值
pid.Kp=Kp;
pid.Ki=Ki;
pid.Kd=Kd;
}
//位置式PID算法
int PID_realize(float ActualSpeed)
{
pid.ActualSpeed=ActualSpeed; //传入实际值
pid.err=pid.SetSpeed-pid.ActualSpeed;//计算误差
pid.integral+=pid.err; //积分值
pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);
pid.err_last=pid.err; //给上一次误差赋值
return pid.voltage;
}
设计图

BOM


添加到专辑
0
0
分享
侵权投诉
评论