最近想使用灵动微芯片里面自带的温度传感器来测试大概的温度,根据参考手册提供的信息: T(◦C) = (V25 - VSENSE) / Avg_Slope + 25
V25:温度传感器在 25◦C 时的输出电压。
Avg_Slope: 温度传感器输出电压和温度的关联参数。
V25 和 Avg_Slope 的典型值请参考数据手册温度传感器章节。
VSENSE:温度传感器当前的输出电压
VSENSE = Value * Vdd / 4096
最终经过简化之后得出如下公式:
Temp = (float)(1.45-(ADCPara.ADC_SensorVal*1.2/4096))/0.04801+25;
根据这公式计算,随着温度的升高,ADCPara.ADC_SensorVal的值也跟随上升,代入公式可看出,ADCPara.ADC_SensorVal的数字不断增大,温度反而是降低的。暂且不讨论这公式算的准不准,从原理上来说就已经行不通了。
为何出现这种情况呢,究竟是哪里有错,公式我明明是对着文档给的?
2019-4-15 18:25:05
ADCPara.ADC_SensorVal 这个数值是传感器的温度数值吗
ADCPara.ADC_SensorVal 这个数值是传感器的温度数值吗
1
举报
-
李功灵:
是的,就是12位的AD值,经过滤波之后的了。芯片读出来的AD值是可以随着温度变化而变化的,我用烙铁加热做过实验了,关键在于怎么转化为温度,片子用的是F003的。采用L073那一套温度算法根本不管用,灵动微其它人员提供的公式计算都是不靠谱的。
2019-4-26 09:31:54
参考官网MM32F003手册上的ADC温度计算公式。
参考官网MM32F003手册上的ADC温度计算公式。
举报