地瓜patch 发表于 2025-7-10 16:19

F070的IIC读取SHT40-AD1B-R2温湿度与实际偏差较大,10%以上

读取SHT40-AD1B-R2温湿度与实际偏差较大
读取温度28.96℃,实际温度24.6℃
读取湿度47%RH,实际湿度52%RH

void SHT40_Read_Temperature_Humidity(void)
{
        uint8_t I2C_Transmit_Data;
        I2C_Transmit_Data=0xFD;
        uint8_t I2C_Receive_Data;
        HAL_I2C_Master_Transmit(&hi2c1, SHT30_Write, I2C_Transmit_Data,1,HAL_MAX_DELAY);
HAL_Delay(8);
        HAL_I2C_Master_Receive(&hi2c1, SHT30_Read, I2C_Receive_Data,6,HAL_MAX_DELAY);

Temperature_data = (175 * ((I2C_Receive_Data << 8) | (I2C_Receive_Data))/65535.0 - 45) * 100;
Humidity_data    = (125 * ((I2C_Receive_Data << 8) | (I2C_Receive_Data))/65535.0 - 6    ) * 100;
}


zcyxh12345 发表于 2025-7-18 08:35

需要水合校准的

地瓜patch 发表于 2025-7-18 09:42

zcyxh12345 发表于 2025-7-18 08:35
需要水合校准的

请教,这种数字传感器不是已经校准过的么?直接IIC读取数据

jcky001 发表于 2025-7-18 16:06

建议用低噪声LDO为传感器供电,并在VDD引脚就近添加0.1μF陶瓷电容滤波,减少电源纹波干扰。

地瓜patch 发表于 2025-7-18 17:37

jcky001 发表于 2025-7-18 16:06
建议用低噪声LDO为传感器供电,并在VDD引脚就近添加0.1μF陶瓷电容滤波,减少电源纹波干扰。 ...

有道理,供电是用整流滤波后的电源,同时给另一路模拟元件供电,采集精度良好

kzlzqi 发表于 2025-7-25 14:59

代码中对温度和湿度的计算未使用浮点数精确运算,可能引入截断误差。
页: [1]
查看完整版本: F070的IIC读取SHT40-AD1B-R2温湿度与实际偏差较大,10%以上