使用Omron D6T-8L-09 H传感器我们无法正确测量人体温度

问题描述

例如;我正在测量我的体温。我读取的值为(tP [2] + tP [3] * 256)= 182或181。因为MSB字节始终为0。但是传感器的体温还可以,没错。

bus.write_byte(DEVICE_ADDRESS,0x02)
bus.write_byte(DEVICE_ADDRESS,0x00)
bus.write_byte(DEVICE_ADDRESS,0x01)
bus.write_byte(DEVICE_ADDRESS,0xEE)

bus.write_byte(DEVICE_ADDRESS,0x05)
bus.write_byte(DEVICE_ADDRESS,0x90)
bus.write_byte(DEVICE_ADDRESS,0x3A)
bus.write_byte(DEVICE_ADDRESS,0xB8)

bus.write_byte(DEVICE_ADDRESS,0x03)
bus.write_byte(DEVICE_ADDRESS,0x8B)

bus.write_byte(DEVICE_ADDRESS,0x07)
bus.write_byte(DEVICE_ADDRESS,0x97)

bus.write_byte(DEVICE_ADDRESS,0xE9)

a = bus.read_i2c_block_data(DEVICE_ADDRESS,0x05,2)

b = bus.read_i2c_block_data(DEVICE_ADDRESS,0x03,2)


readbuff = bus.read_i2c_block_data(DEVICE_ADDRESS,0x4C,19)
bus.close()

tPTAT = 256 * readbuff[1] + readbuff[0]
tP[0] = ((readbuff[3] * 256) + readbuff[2])
.
.
tP[7] = ((readbuff[17] * 256) + readbuff[16])
tPEC = readbuff[18]

解决方法

根据D6T-8L的datasheet

reference_temprature = 256*readbuff[1] + readbuff[0];
int i = 0;
int j = 0;
for( i = 2; i<16; i = i +2) {
   temprature[j] = (256*readbuff[i+1] + readbuff[i])/10.0;
   j++;
}
packet_error_check = readbuff[i];

请遵循数据手册中的参考电路并验证PEC。这是另一个代码示例:Github

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...