更新时间:2016-12-20 17:23:30人气:887
测量芯片周围的环境温度用。这个温度传感器输出的电压与温度成一定比例,获取温度基本就是用ADC测量这个电压。
在芯片内部,温度传感器与ADC1的CH16相连。当不使用改传感器时,可将其设置为PowerDown模式以省电。
主要特性:
测温范围:-45~+125摄氏度
测温精度:±1.5摄氏度
使用步骤:
1、选择ADC1 CH16作为ADC的输入
2、设置采样时间
3、设置ADC1寄存器ADC_CCR的TSVREFE位,将温度传感器从PowerDown模式唤醒。
4、开始ADC转换
5、读取转换值Value并换算成电压Vsense,Vsense = Value×3300/4096 (mV)
6、计算温度。
温度计算公式:Temp = ((Vsense - V25)/Avg_Slope)+25
V25是Vsense 在25度时候的值,Avg_Slope 是温度转换率。这两个值可在datasheet里边查到。
V25 = 0.76V Avg_Slope = 2.5 mV/°C
Temp = (Vsense– 760)/2500 + 25;
【代码实现】
首先,唤醒温度传感器:
ADC_TempSensorVrefintCmd(ENABLE);
将上一程序的4通道,改为16通道:
ADC_RegularChannelConfig(ADC1,ADC_Channel_16,4,ADC_SampleTime_144Cycles);
读取这个转换的值,用上边公式计算即可:
aa = adcvalue[i]-760;
printf("当前温度是: %f摄氏度\r\n",(aa)/2.5+25);
printf("%d\r\n",adcvalue[i]);
这里要注意数据类型,adcvalue定义的是uint16_t的,是无符号数。
这里能读出温度了,但是还有点问题:温度不准,夜里读出的温度竟然有68度,我乖乖还活不了。不知道是片子工作久了内部温度高还是我的计算有错误。
但是这个温度确实是随着温度的变化而变化的,板子断电一会温度就下降了,但还是不准
PREVIOUS温度传感器几种常见的故障及解决方法
温度传感器几种常见的故障及解决方法目前温度传感器越来越多的在不同领域有所使用,在使用过程中不可避免的会出现这样或那样的问题。一般来说,温度传感器出现故障的情况很少见,只要出厂的时候进行仔细的检测,这些情况都是可以避免的。温度传感器技术已经非常成熟了,在各工厂...
液位传感器在设计研发的时候就必须要保证其牢靠性和稳定性,主要包括液位传感器的机械防护部分和电气部分两大方面。机械防护设计包括液位传感器的外壳材料的选用,防腐蚀设计、防阻塞设计、密封设计、防凝露规划。电气部分主要包括液位传感器的电源供电设计、信号获取、扩大、变...