温度传感器测量芯片周围的环境温度用。这个温度传感器输出的电压与温度成一定比例,获取温度基本就是用adc测量这个电压。传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
在芯片内部,温度传感器与adc1的ch16相连。当不使用改传感器时,可将其设置为pd模式以省电。
主要特性:
测温范围:-45~+125摄氏度
测温精度:15摄氏度
使用步骤:
1、选择adc1 ch16作为adc的输入
2、设置采样时间
3、设置adc1寄存器adc_ccr的tsvrefe位,将温度传感器从pd模式唤醒。
4、开始adc转换
5、读取转换值v并换算成电压v,v = v33004096 (v)
6、计算温度。
温度计算公式:t = ((v - v25)a_s)+25
v25是v 在25度时候的值,a_s 是温度转换率。这两个值可在里边查到。
v25 = 076v a_s = 25 vc
t = (v 760)2500 + 25;
【代码实现】
首先,唤醒温度传感器:
adc_tsvc(enable);
将上一程序的4通道,改为16通道:
adc_rcc(adc1,adc_c_16,4,adc_st_144c);
读取这个转换的值,用上边公式计算即可:
= []-760;
(当前温度是: %摄氏度\\,()25+25);
(%\\,[]);
这里要注意数据类型,定义的是16_的,是无符号数。
这里能读出温度了,但是还有点问题:温度不准,夜里读出的温度竟然有68度,我乖乖还活不了。不知道是片子工作久了内部温度高还是我的计算有错误。
但是这个温度确实是随着温度的变化而变化的,板子断电一会温度就下降了,但还是不准