HDC1080 湿度转化数值差别较大

Other Parts Discussed in Thread: HDC1080

        我使用HDC1080测量温湿度,传感器放在了电路板的边缘,温度测量数值还基本可以,与其它标准仪表相差1度左右,但是湿度就比较离谱了。我在北京的室内,开着暖气和空调,使用HDC1080测量相对湿度只有3%左右,而victor 231仪表测量的湿度产不多15%,基本真实。用最哈一口气,HDC1080测量相对湿度达到99%。感觉湿度测量的不太正常啊。我们测试的10台设备全部如此,求帮助。

       我每次触发采集后50ms才开始读取数据,应该没有什么问题。下面是我的代码。

void Init_HDC1080()
{
u16 DA_W_DATA;
u8 i2c_array[4];
DA_W_DATA = 0x9000;//0x2000;
i2c_array[0] = (u8)(DA_W_DATA>>8);
i2c_array[1] = (u8)(DA_W_DATA);
SendData_2(0x80, 0x02, NON_H, i2c_array, 2);
_delay_ms(5);
DA_W_DATA = 0x3000;//0x2000;
i2c_array[0] = (u8)(DA_W_DATA>>8);
i2c_array[1] = (u8)(DA_W_DATA);
SendData_2(0x80, 0x02, NON_H, i2c_array, 2);
_delay_ms(5);
}

void Trigger_HDC1080()
{
u16 DA_W_DATA;
u8 i2c_array[4];
DA_W_DATA = 0x1000;
i2c_array[0] = 0x00;
Trigger_Humidity_Temperature(0x80, 0x00, NON_H, i2c_array, 1);
_delay_ms(200);
}

u16 Read_HDC1080()
{
u16 DA_W_DATA;
u8 i2c_array[4];
Read_Humidity_Temperature(0x80, 0x00, NON_H, i2c_array, 4);
Temp_float = ((float)(((u16)i2c_array[0]<<8)+i2c_array[1])/65535.0)*165.0 - 40.0;
Temp_uint16 = ((u16)i2c_array[0]<<8)+i2c_array[1];
Humidity_float = ((float)(((u16)i2c_array[2]<<8)+i2c_array[3])/65535.0)*100.0;
return 0;
}