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