STM32 功率映射计算方法及调试验证

文章目录

  • 问题发现
    • 描述问题
    • 发现问题
  • 问题分析
  • 模型建立参数拟合
    • 对照表采集
    • 数据处理
  • 代码的实现

问题发现

描述问题

这次的这个问题起因是假负载屏的核心功能是显示功率,这个功率要通过AD9361把功率转换成0-4V电压,然后通过电位器,调节成0-3.3V电压,最后经过adc运放缓冲电路,送给ADC检测IO口。
STM32 功率映射计算方法及调试验证_第1张图片
通过STM32的ADC检测功能,把功率再给反向映射出来。
我的问题就是以为这个映射过程为线性过程,所以,直接使用0-3.3V的数值映射到0-4500W的数值进行显示,计算这个线性参数的方法也就是
P U ∗ 1000 \frac{\text{P}}{\text{U}*1000} U1000P
带入数据
4500 3.3 ∗ 1000 \frac{4500}{3.3*1000} 3.310004500
写成代码也就是如下所示

adcx=1.3636*temp*1000;

发现问题

在实际工作环境中工作调试过程中,发现实际功率与显示功率差别巨大,并且无论较准低位还是高位,都无法正常显示变化。

问题分析

起初我以为是检测方法出现了问题,或者运放电路中增加的电阻导致的数据偏差,但是看到数据的偏离后,排除了这个可能性。
随后的交流中,得自功率转化电压的那个芯片,转化过程并非线性,二是对数关系。
也就是说我的线性模型本身就是错误的,需要改变映射关系。
经过与赵老师与卢老师的进一步沟通,得自需要使用这个公式来进行映射
P = U I = U 2 R P = UI = \frac{{{U^2}}}{R} P=UI=RU2

模型建立参数拟合

对照表采集

这里因为没有去从源头去分析,所以没办法直接得到理论的公式还有参数,采用了对照表拟合的方式
STM32 功率映射计算方法及调试验证_第2张图片
得到了实际参数,这里是使用电流步进的方式,每次步进0.5A,然后测量功率转换模块输出口的十个数据。
STM32 功率映射计算方法及调试验证_第3张图片
这里呢用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就是我们需要的那个参数。
STM32 功率映射计算方法及调试验证_第4张图片
十个采样值的参数取完之后,然后对其做一下平均值的处理,使其拟合更加平滑
STM32 功率映射计算方法及调试验证_第5张图片
然后就是计算一下求得的这个平均参数能否正确及算出来结果
STM32 功率映射计算方法及调试验证_第6张图片
根据图象还是可以非常直观的看出拟合的非常好,参数问题不大,问题解决

代码的实现

其实这里就没啥好说的了,就是改改计算方式就可以了

c = 138.3103
adcx = temp*temp*c;

这里因为是按照这个1092.5W来计算,也就是这个模型,最大也就能检测1500W左右,所以需要改变显示量程的话需要重新输入然后测量以上数据,按照生成的参数配置进去即可。

你可能感兴趣的:(STM32)