梁工
发表于 2025-7-7 16:59:54
cqjoyspe 发表于 2025-7-7 12:06
看过代码,这个限幅是明白的,但中间的值PIDTERM和PWM要输出的值如何对应的不太明白,比如我现在检测到AD ...
PID计算的结果PIDTERM就是PWM值。
你现在检测到ADC比设定值低了20%,这个20%的ADC差值是500,那么经过PID计算后就会得到一个PWM值。
我的PID计算是根据实际电压值、电流值来计算的,不是原始ADC值。在恒压模式下,如果当前的电压值比设定的低,则误差是整数,误差*比例系数 + 积分*积分系数 + 微分*微分系数 = PID输出,这个输出就是PWM值。
不知道这样解释你明白了吗?
cqjoyspe
发表于 2025-7-7 18:03:23
梁工 发表于 2025-7-7 16:59
PID计算的结果PIDTERM就是PWM值。
你现在检测到ADC比设定值低了20%,这个20%的ADC差值是500,那么经过PID ...
还有待消化,这个SEPIC电路用的是位置式PID吗,为什么很多人说电源用增量式PID会比较好?
梁工
发表于 2025-7-7 21:11:35
cqjoyspe 发表于 2025-7-7 18:03
还有待消化,这个SEPIC电路用的是位置式PID吗,为什么很多人说电源用增量式PID会比较好? ...
位置式PID:计算的是控制量的绝对值,输出u(k)直接对应执行机构应该达到的目标位置(例如,阀门开度、电机目标角度、期望电压值),按指定位置作为目标值。
增量式PID:计算的是控制量的变化量(增量),输出Δu(k)表示控制量相对于上一次输出需要增加或减少多少,只控制增量值。
所以,对于这种有绝对设定位置的,我个人喜欢使用位置式PID。
对于设定的温度值、电压值、电流值、阀门开度、电机转速等等,这种给定绝对目标值的,我没用过增量式,要不你给个例子我学习下?
cqjoyspe
发表于 2025-7-8 13:53:56
让你学习下版主太抬举我了,我也是一知半解,胡乱改了下,不知道可不可行,不行的话版主就当个笑话看看
data float Ui;//新增积分数组
data int ERR;//新增误差数组
dataint pidTerm;
void PID_nitialization(void)
{
Kp =0.5f; // 比例系数
Ki =0.07f; // 积分系数
Kd =0; // 微分系数
integral = 0; // 积分累计值
iMax =24000.0f; // 积分高限幅
iMin = -24000.0f; // 积分低限幅
prev_input = 0; // 上一个输入
prev_error = 0; // 上一次误差
output= 0; // 输出值
out_min = 0; // 输出最小值
out_max = 1500.0f; // 输出最大值
Ui=0;
Ui=0;
ERR=0;
ERR=0;
ERR=0;
pidTerm=0;
}
//增量式PID算法
u16 PID_Compute(float setpoint, float input)
{
ERR = setpoint - input; //ERR可能为正也可能为负
Ui =Ui+((float)ERR * Ki); //积分环节 前一个Ui+现在误差*KI
if( fabs(Ui) > iMax )//积分限幅
{
Ui = Ui > 0 ? iMax :-iMax;
}
pidTerm =pidTerm+ERR*Kp+ ERR*Ki+ERR*Kd ;
ERR=ERR;
ERR=ERR;
Ui = Ui; //保留到下次
if(pidTerm >out_max) pidTerm = out_max; // 输出限幅
if(pidTerm <out_min) pidTerm = out_min; // 输出限幅
return (u16)pidTerm;
}
梁工
发表于 2025-7-8 16:02:08
cqjoyspe 发表于 2025-7-8 13:53
让你学习下版主太抬举我了,我也是一知半解,胡乱改了下,不知道可不可行,不行的话版主就当个笑话看看
dat ...
ERR = setpoint - input; 这个实际也是拿绝对位置与当前位置的偏差去计算,觉得跟位置式没有质的区别。
你实际测试效果如何?特别是给低内阻的电池充电时的响应。
神农鼎
发表于 2025-7-31 10:37:58
谁出个 立创EDA 版本开源,辛苦费 RMB300
USB-TypeC 接口
forstc
发表于 2025-7-31 10:38:25
收藏参考了,感谢版主分享
abc
发表于 2025-7-31 15:52:52
神农鼎 发表于 2025-7-31 10:37
谁出个 立创EDA 版本开源,辛苦费 RMB300
USB-TypeC 接口
星期天画好可以吗
神农鼎
发表于 2025-7-31 16:28:44
abc 发表于 2025-7-31 15:52
星期天画好可以吗
可以
(^v^)
发表于 2025-7-31 20:26:07
神农鼎 发表于 2025-7-31 10:37
谁出个 立创EDA 版本开源,辛苦费 RMB300
USB-TypeC 接口
不需要做实验焊接吧