我们都知道STM32内部有个adc_channel_16连接到内部的温度传感器,可以使用内部传感器测量温度,但是往往温度测量的不准确,如何进行修正呢?
通常,读取ADC_channel_16的步骤为:
1)设置 ADC,开启内部温度传感器。
ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器功能:
2)读取通道 16 的 AD 值,计算结果。
在设置完之后,我们就可以读取温度传感器的电压值了.
3)、转换采样值为温度
ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
V25 - VSENSE
T(℃) = ------------ + 25
Avg_Slope
V25: 温度传感器在25℃时 的输出电压,典型值1.43 V。
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:
ADC_ConvertedValue * Vdd
VSENSE = --------------------------
Vdd_convert_value(0xFFF)
Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。
//Converted Temperature
Vtemp_sensor = ADC_ConvertedValue * Vdd / Vdd_convert_value;
Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;
|