大家好!最近在做的一个电源项目中有带电压电流校准功能,也就是AD采样值和实际的输出值有差异时通过一些校准方法使AD读取值和实际值接近。比如下面的这个电流校准,就是测量两个不同的电流值并读取实际AD采样,如果两者偏差较大就使用右边的计算方法来生成一些补偿值,f1 - f6都是浮点类型值,这里我不明白f5和f6计算的原理是什么?想请教下大家,谢谢了!
f5 = (f2 - f1) / (f4 - f3);
f6 = (f1 * f4 - f2 * f3) / (f4 - f3);
大家好!最近在做的一个电源项目中有带电压电流校准功能,也就是AD采样值和实际的输出值有差异时通过一些校准方法使AD读取值和实际值接近。比如下面的这个电流校准,就是测量两个不同的电流值并读取实际AD采样,如果两者偏差较大就使用右边的计算方法来生成一些补偿值,f1 - f6都是浮点类型值,这里我不明白f5和f6计算的原理是什么?想请教下大家,谢谢了!
f5 = (f2 - f1) / (f4 - f3);
f6 = (f1 * f4 - f2 * f3) / (f4 - f3);
引自免费微信小程序:皆我百晓生
在电源设计中,电压电流校准的目的是确保模拟电路(如传感器或ADC采样)输出的数字信号与实际物理量(电压、电流等)之间有精确的一一对应关系。根据您提供的代码片段和描述,这里是在进行一个线性插值校准计算。
原理解释:
f1, f2, f3, f4 分别代表什么?
计算公式的意义:
f5 计算的是斜率 (slope):
f5 = (f2 - f1) / (f4 - f3);
这个表达式实际上是通过两个已知点((I3, f3), (I4, f4))来确定一条直线的斜率,这条直线是用来拟合AD转换读数与实际电流之间的线性关系。
f6 计算的是截距 (intercept):
f6 = (f1 * f4 - f2 * f3) / (f4 - f3);
截距是直线在y轴上的交点,通过这个公式可以得到当电流为0时(理想情况下)对应的AD采样值,用于进一步修正零点误差。
应用到校准时: 当需要校准未知电流值Ix时,我们可以使用得到的斜率(f5)和截距(f6)来计算出该电流下的预期AD采样值:
AD_expected = f5 * Ix + f6;
总结来说,这段代码实现了基于两点线性插值的校准算法,通过测量已知电流下的AD采样值,从而推算出任意电流下的期望AD采样值,并据此生成补偿值以校准系统。不过,请注意实际情况可能需要更复杂的非线性校准算法,这取决于系统的具体特性和误差分布情况。