大多数32位MCU都有一项非常实用的功能——内部集成了一个温度传感器,这个温度传感器产生一个随温度线性变化的电压VTS。 因为是内置, 测试的当然是芯片内部温度, 这对控制芯片发热和保障MCU健康运行非常重要。对于一些恶劣的应用环境,可以通过检测芯片内部而感知设备的工作环境温度, 如果温度过高或者过低,就触发进入睡眠状态或者停止运转,以提高设备运行的可靠性。
图1. AT32单片机芯片内含温度传感器
如果芯片外接负载不变,那么芯片的发热也基本稳定,相对于外界的温度而言,温度变化值也是基本稳定的。就是说,也可以用MCU芯片的内置传感器来测量外界环境的温度。以下以AT32 MCU为例,说明内置温度传感器应用和评估测试方法,并提供测试数据供使用者设计参考。
内部传感器特性
AT32单片机芯片内含温度传感器,它产生一个随温度线性变化的电压,在内部被连接到ADC1_IN16的输入通道上,用于将传感器的输出转换到数字数值。
图2. AT32 MCU的温度传感器特性
以AT32F413为例,只要遵守以下公式,即可求得目前温度传感器量测出的温度:
温度(°C) = {(V25 - VSENSE) / Avg_Slope} + 25
这里:V25 = VSENSE在25 °C时的数值,Avg_Slope = 温度与VSENSE曲线的平均斜率(单位为mV/°C),VSENSE为温度传感器经由ADC转换出的电压换算成mV,再依照上述公式,只要将V25带入典型值1280mV,Avg_Slope带入-4.20mV/°C即可求得。 图3为套用典型值计算出的温度与传感器输出电压(VSENSE)的特性曲线。
图3. VSENSE对温度理想曲线图应用此温度传感器需注意因生产过程的变化,每个芯片的温度传感器V25具有相对大的偏移,若以Avg_Slope典型值来换算相当于47.6°C,最小值与最大值一般会有最多200mV的误差。因此,内部温度传感器更适合于检测温度的变化,而不是测量绝对的温度。
内部温度传感器的使用
AT32芯片的温度传感器在内部被连接到ADC1_IN16的输入通道上,用于将传感器的输出转换到数字数值。这个数值为温度的变化数,而非绝对温度。 AT32芯片温度传感器为内部弱电压源,ADC进行采样时需要足够时间让VSENSE输出为采样电路达到充放电平衡而稳定,使用者需确实遵照数据手册中的TS_TEMP参数为内部温度传感器设置足够的采样时间,以获得正确的转换数值。 在3.6V、3.3V和2.6V操作电压下,不同AT32温度传感器的Avg_Slope在各电压条件下几乎一致。但细部分析,就发现各芯片V25参数之间具有相对较大的差异,这是造成AT32温度传感器量测与实际温度徧差的主要原因。若以软件校正偏移量(offset)后或仅作为相对温度量测时,在芯片全温度-40到105°C操作范围内,温度误差(线性度)可以达到±2°C之内。 但若未做偏移校正或用以量测绝对温度,因温度传感器本身架构于芯片生产过程的变化,温度变化曲线的偏移在不同芯片上会有明显差异。因此,建议AT32芯片内部温度传感器仅用作检测温度的变化,而不是测量绝对的温度。如果需要测量精确的温度值,应该使用一个外置的温度传感器。
|