STM32 ADC 温度采集 可穿戴体温测量仪LMT70
LMT70这个温度传感器是2020电赛D题要求使用的,这个传感器难度倒是不大,主要通过单片机读取ADC的值,根据ad值来换算一下电压和温度的关系,手册里有一个公式,也没必要看了,我会给你提供这部分算法,直接照抄就是了。
软件上虽然没什么难度,但是硬件上确实够你喝一壶,如果你想自己焊接,得用放大镜了,主要是太小了,还是BGA封装,没有一个是好伺候的。
下面我们来看一下这个温度传感器的几个重要的点。
这个是硬件参数,手册的第一页就可以找到所有信息了。
引脚配置
一共4个引脚
VDD:3.3V(我这边接3.3v,跟单片机电压相同),范围是-0.3-6V。
GND:接地。
TAO:接单片机AD脚,用于输出模拟电压。
T_TAO:使能LMT70,默认接3.3v,也可以用单片机来控制使能。
测量精度
这里我直接对室温进行测量,读小数点后1位,感觉跟室温差不多,不会太离谱。
手册里有一个误差对照表,可以根据自身使用情况对应。
分别通过串口和OLED将数据打印出来。
程序也很简单,可以用程序来测试一下硬件是否好用。这是整个核心代码,通过计算就可以将ad数据换算成实际温度值。
lmt70_tick = sys_tick;
AD_value=get_adc();
adc_v=(float)AD_value*3320/4096;
Temp = -1.809628E-09*adc_v*adc_v*adc_v -3.325395E-06*adc_v*adc_v -1.814103E-01*adc_v + 2.055894E+02;
T_sum += Temp;
T_sum_count++;
if(T_sum_count >= 20) //2s¼ÆËãÒ»´Î
{
Temp_real = T_sum/T_sum_count; //¼ÆËãƽ¾ùζÈ
T_sum_count = 0;
T_sum = 0;
}
}
//OLED_ShowNum(1,7,Temp_real,2); //ÏÔʾζÈÊýÖµ
OLED_ShowFloat(1,7,Temp_real,1);
Delay_1ms(200);
printf("Temp=%.1f \r\n",Temp_real);