如何解决使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。