1、STWINKT1B上有2个温度传感器,分别是STTS751和 HTS221,HTS221还可以检测湿度。目前HTS221已经停产,不再推荐新项目使用。
在STWINKT1B上2个传感器都是通过IIC接口进行通信,不同的I2C Addr 可以方便的把多个外设接到同一个IIC上进行通信。
2、STWINKT1B的开发包里面提供了各个传感器的读取测试,可以把数据存储到SD卡上也可以通过虚拟串口读取。
默认的demo代码是只读取 STTS751的温度,我们修改下程序,同时读取2个温度传感器进行对比。
BSP_ENV_SENSOR_Init(HTS221_0, ENV_TEMPERATURE);
BSP_ENV_SENSOR_SetOutputDataRate(HTS221_0, ENV_TEMPERATURE, HTS221_ODR);
BSP_ENV_SENSOR_Init(STTS751_0, ENV_TEMPERATURE);
BSP_ENV_SENSOR_SetOutputDataRate(STTS751_0, ENV_TEMPERATURE, STTS751_ODR);
读取数据
if ( BSP_ENV_SENSOR_GetValue(STTS751_0, ENV_TEMPERATURE, &mptr->temperature0 ) == BSP_ERROR_COMPONENT_FAILURE )
{
mptr->temperature0 = 0.0f;
ret = BSP_ERROR_COMPONENT_FAILURE;
}
if ( BSP_ENV_SENSOR_GetValue(HTS221_0, ENV_TEMPERATURE, &mptr->temperature1 ) == BSP_ERROR_COMPONENT_FAILURE )
{
mptr->temperature1 = 0.0f;
ret = BSP_ERROR_COMPONENT_FAILURE;
}
然后把数据传输到串口助手
size = sprintf(data_s, "STTS751 Temp:%5.2f,HTS221 Temp:%5.2f\r\n", rptr->temperature0, rptr->temperature1);
osPoolFree(sensorPool_id, rptr); // free memory allocated for message
BSP_LED_Toggle(LED1);
CDC_Transmit_FS(( uint8_t * )data_s, size);
数据输出如下
把输出的数据用MATLAB绘图如下。
上电首先检测室温,然后用吹风机进行加热,再用吹风机进行降温。最后是关闭吹风机让传感器慢慢降温。
下面的对比图,Y轴单位是温度,X轴是采样点个数,2秒采样一次。
开始的室温接近32度,实际并没有这么高的温度,可能是板子靠近笔记本的出风口导致。
室内开了空调,我一个温度计检测的是29度,空调温度计检测的室温是28度多。
这个降温的过程有点久。
|