问题发现
描述问题
这次的这个问题起因是假负载屏的核心功能是显示功率,这个功率要通过AD8361把功率转换成0-4V电压,然后通过电位器,调节成0-3.3V电压,最后经过adc运放缓冲电路,送给ADC检测IO口。
通过STM32的ADC检测功能,把功率再给反向映射出来。
我的问题就是以为这个映射过程为线性过程,所以,直接使用0-3.3V的数值映射到0-4500W的数值进行显示,计算这个线性参数的方法也就是
P
U
∗
1000
\frac{\text{P}}{\text{U}*1000}
U∗1000P
带入数据
4500
3.3
∗
1000
\frac{4500}{3.3*1000}
3.3∗10004500
写成代码也就是如下所示
adcx=1.3636*temp*1000;
发现问题
在实际工作环境中工作调试过程中,发现实际功率与显示功率差别巨大,并且无论较准低位还是高位,都无法正常显示变化。
问题分析
起初我以为是检测方法出现了问题,或者运放电路中增加的电阻导致的数据偏差,但是看到数据的偏离后,排除了这个可能性。
随后的交流中,得自功率转化电压的那个芯片,转化过程并非线性,二是对数关系。
也就是说我的线性模型本身就是错误的,需要改变映射关系。
经过与赵老师与卢老师的进一步沟通,得自需要使用这个公式来进行映射
P
=
U
I
=
U
2
R
P = UI = \frac{{{U^2}}}{R}
P=UI=RU2
模型建立参数拟合
对照表采集
这里因为没有去从源头去分析,所以没办法直接得到理论的公式还有参数,采用了对照表拟合的方式
得到了实际参数,这里是使用电流步进的方式,每次步进0.5A,然后测量功率转换模块输出口的十个数据。
这里呢用excel画出取样电压和实际功率的图象,图像中我们也可以观察出,有比较直观的一元二次方程的曲线关系。
数据处理
这里就直接使用之前确定的
P
=
U
I
=
U
2
R
P = UI = \frac{{{U^2}}}{R}
P=UI=RU2关系皆可,这里本质上计算的就是
1
R
\frac{1}{R}
R1,其实
1
R
\frac{1}{R}
R1就是我们需要的那个参数。
十个采样值的参数取完之后,然后对其做一下平均值的处理,使其拟合更加平滑
然后就是计算一下求得的这个平均参数能否正确及算出来结果
根据图象还是可以非常直观的看出拟合的非常好,参数问题不大,问题解决
代码的实现
其实这里就没啥好说的了,就是改改计算方式就可以了
c = 138.3103
adcx = temp*temp*c;
这里因为是按照这个1092.5W来计算,也就是这个模型,最大也就能检测1500W左右,所以需要改变显示量程的话需要重新输入然后测量以上数据,按照生成的参数配置进去即可。