TI中文支持网
TI专业的中文技术问题搜集分享网站

HDC3022: HDC3022DEJR测试温湿度偏差较大

Part Number:HDC3022Other Parts Discussed in Thread:HDC3020

我们使用HDC3022DEJR测试温湿度偏差较大:

temp=31.75 humidity=23;    目前厦门翔安室内室温差不多26℃, 湿度39%;

芯片目前试飞线测试;

请帮忙分析下问题?

应该sensor出厂都校准过,不需要补偿吧?

如下试我们一些代码

   // set offset
    op = HDC3020_OFFSET_MSB<<8|HDC3020_OFFSET_LSB;
    buf[0] = 0x00;
    buf[1] = 0x00;
    buf[2] = hdc3020_crc(buf, 2);
    i2c_write_poll(op, buf, 3);

[2:30 PM] Eking-YiQing Chen

int hdc3020_read(int32_t values[])
{
    uint16_t op = HDC3020_MODE_TRIG_MSB<<8|HDC3020_MODE_TRIG_LPM0;
    uint8_t buf[6] = {0};
    i2c_write_poll(op, buf, 0);

    rt_thread_mdelay(20);

    i2c_read_poll(op, buf, 6);

    // check temp crc
    uint8_t tcrc[] = {buf[0], buf[1], buf[2]};
    if (hdc3020_crc(tcrc, 3))
    {
        // crc error
        return -1;
    }

    // check humidity crc
    uint8_t hcrc[] = {buf[3], buf[4], buf[5]};
    if (hdc3020_crc(hcrc, 3))
    {
        // crc error
        return -1;
    }

    /* store temperature */
    values[0] = ((int32_t)buf[0]) << 8 | buf[1];
    /* store humidity */
    values[1] = ((int32_t)buf[3]) << 8 | buf[4];

    return 0;
}

int32_t hdc3020_toCelsius(int32_t x)
{
    float f = ((float) x) / 65535 * 175 – 45;
    return (int32_t)(f * 100);
}
int32_t hdc3020_toRH(int32_t x)
{
    float f = ((float) x) / 65535 * 100;
    return (int32_t)f;
}

Kailyn Chen:

您好,关于您的问题,我这边需要进一步确认。

如有结果,会尽快给您答复。

,

?? ?:

我们目前是2S读一次,最开始temp=24.9    humidity=48,最后稳定是temp=31.53    humidity=27

(和其它的温湿度计对比温度25.6 ,湿度32.5%,温度一开始是比较接近的,开机后一直增加温度;   湿度一开始不准,后面稳定是接近的但也差了4%;

请尽快帮忙回复支持谢谢!

,

Kailyn Chen:

您好,请参考E2E的回复,出厂前确实已经做了校验,精度是准的,另外他在最后也附上了源代码,您可以看下:

有任何问题,我再去上面跟进:

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1310109/hdc3022-the-humidity-is-higher

赞(0)
未经允许不得转载:TI中文支持网 » HDC3022: HDC3022DEJR测试温湿度偏差较大
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1