一、 产品概述
CHTA30IW数字型温湿度传感器是一款小体积,高性能,含有已校准数字信号输出(单总线、标准I2C)的高可靠,高精度温湿度传感器。
特点: 硬件精良:传感器内部采用高可靠,高精度感湿敏感元件和外置的高精度NTC温度感知元件,并与一个高性能,宽电压供电(2.7-5.5Vdc)数模混合微处理器(MCU)相连接,内部具有模拟对数线性处理电路,并内置高精度14位ADC,自带加强型I2C/单总线硬件驱动输出,驱动及抗干扰能力强,低功耗模式。 高精度,高可靠:CHTA30IW系列产品采用多点宽范围在线自动标定工艺,通过独特的算法(多点标定,多阶拟合,线性修正等),确保证产品的精度及一致性,内部电路均做三防处理,产品经过高温高湿环境的老化与测试,确保产品的可靠性与长期稳定性。 复合输出:CHTA30IW系列产品通信方式采用兼容单总线、标准I2C两种通信方式输出。两种通信方式用户通过简单跳线即可选择通信输出方式(见说明六),使用方便,并可直接替代其他类型的数字型温湿度传感器。 数字直读:CHTA30IW系列产品采用数字直读输出,即内部已经对温度,湿度以及温飘进行补偿,用户无需对数字输出进行二次计算,所读数据即实际真实温湿度,无需计算,应用方便。(具体例程见附件一) 二、 应用范围 ※空调、除湿器、加湿器、冰箱等家电行业 ※恒温恒湿机,环境测试设备及仪器 ※智能家居,智慧城市,物联网应用 ※数据记录器、气象站 ※工业、农业、食品,化工等相关环境湿度检测及控制。 三、 传感器性能参数 3.1 相对湿度测量范围及精度 3.2 温度测量范围及精度 四、通讯协议 CHTA30IW模块同时具备两种通讯方式:分别为标准I2C协议与单总线协议;具体通讯方式及应用电路请参考以下章节: 4.1 I2C通讯协议介绍 CHTA30IW模块采用标准I2C接口;模块I2C地址(Slave Address)为0xB8。在I2C标准总线协议的基础上,基于ModBus协议,制定了模块独有的通讯协议,降低传输的误码率。 4.1.2 I2C寄存器介绍 Note: 1. 寄存器保留byte未使用。 2. 湿度输出格式为16bit,输出的湿度值为实际湿度值的10倍,用户需将读取的湿度值除以10得到正确的湿度值。 示例一:00000010 10010010 = 0292(十六进制) = 658(十进制) → 65.8%RH 3. 温度输出格式为16bit,最高位为符号位(0表示正温度;1表示负温度),其他位表示的温度值为实际温度值的10倍,用户需将读取的温度值的低15bit除以10得到正确的温度值。 示例一:00000001 00000010 = 0102(十六进制) = 258(十进制) → 25.8℃ 示例二:10000001 00000010 = 8102(十六进制) = -258(符号位为1) → -25.8℃ 4. 设备号:模块设备号。 5. 版本号:模块固件版本号。 6. 序列码:模块生产序列码。 7. 状态寄存器:预留,未使用。 8. User寄存器1~4:预留,未使用。 4.1.3 I2C Modbus功能码 功能码是每次通讯信息帧的第一个字节;I2C Modbus通讯规则,可定义的功能码为1到127。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发过来的功能码一样,则表明从机引脚响应主机并且已经进行相关的操作。相关的功能码如下: 4.1.5 CRC16计算方法 I2C通讯采用CRC16作为校验,降低通讯时的误码率,详细计算方法请参考以下介绍: 1. 预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器; 2. 把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器; 3. 把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位; 4. 如果移出位为0:重复第3步(再次右移一位); 如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或; 5. 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; 6. 重复步骤2到步骤5,进行通讯信息帧下一个字节的处理; 7. 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换; 8. 最后得到的CRC寄存器内容即为:CRC码。 4.1.6 I2C Modbus通讯协议 l 读帧格式: 主机发送帧格式:(SLA+W)+功能码(0x03)+起始地址+寄存器个数 从机返回帧格式:功能码(0x03)+数据长度+返回数据+CRC l 写帧格式: 主机发送帧格式:(SLA+W)+功能码(0x10)+起始地址+寄存器个数+保存数据+CRC 从机返回帧格式:功能码(0x10)+起始地址+寄存器个数+CRC Note: 1. 对模块进行读写时,一次最多只能访问10个寄存器。 2. 可供用户写的寄存器为(0x0F~0x13);其他寄存器禁止写,且状态寄存器只能单独写。 3. CRC为16bit,通讯时低8bit在前,高8bit在后。 4. 当通讯数据有误时,返回错误数据帧,格式为“功能码+0x01+错误代码+CRC”;错误代码分别为:0x80(不支持功能码);0x81(读取非法地址);0x82(超出写数据范围);0x83(CRC校验错误);0x84(禁止写)。 4.1.7 I2C通讯示例: | | | | | | | 发送:(SLA+W)+0x03+0x00+0x04 | 返回:0x03+0x04+濕度高位+濕度低位+溫度高位+溫度低位+CRC | | | | 发送:(SLA+W)+0x03+0x02+0x02 | 返回:0x03+0x02+溫度高位+溫度低位+CRC | | | | 发送:(SLA+W)+0x03+0x00+0x02 | 返回:0x03+0x02+濕度高位+濕度低位+CRC | | | | 发送:(SLA+W)+0x03+0x08+0x07 | 返回:0x03+0x02+设备号高位+设备号低位+版本号+序列码3+序列码2+序列码1+序列码0+CRC | | | | 发送:(SLA+W)+0x10+0x0F+0x01+0x01+CRC | | | | | 发送(SLA+W)+0x10+0x10+0x04+0x01+0x02+0x03+0x04+CRC | |
4.1.8 I2C通讯注意事项 主机读取模块的温湿度值为上一次的转换值,读取完成后模块将触发一次温湿度转换;因此长时间没有读取模块时,需要读取两次以得到准确的温湿度值(连续读取最小间隔为2S)。 4.2 单总线协议介绍 CHTA30IW模块具备单总线通讯接口,实际应用中主机可通过一个I/O口即可对模块进行温湿度读取,可节省主控的I/O资源。 4.2.1 单总线应用电路 Note: 1. 模块SCL接地,此时模块处于单总线模式。 2. 模块SDA引脚需要外接上拉电阻。 4.2.2 单总线通讯格式 模块的SDA在单总线模式用于与主机通讯和同步,一次传输40为数据,高位先出,分别为湿度高位、湿度低位、温度高位、温度低位、校验位。 4.2.3 单总线通讯时序及特性参数 1. 主机将SDA拉低(建议1ms以上);然后释放总线,等待模块应答; 2. 模块收到主机的起始信号后,将总线先拉低80μs,然后拉高80μs作为应答信号; 3. 紧接着模块开始传输40bit数据,高位在前,低位在后(位数据“0”的波形:50μs低电平+26-28μs高电平;位数据“1”的波形:50μs低电平+70μs高电平); 4. 40bit传输完成后,模块继续输出50μs低电平作为结束信号,然后释放总线。 Note:单总线信号特性参数: 4.2.4 单总线数据格式 示例一:接收到的40位数据: 0000 0010 1001 0010 0000 0001 0000 0010 1001 0111 湿度高8位 湿度低8位 温度高8位 温度低8位 校验位 计算:接收到40位数据后,首先判断校验位是否正确来确认此笔数据是否有效(校验位为前4个字节的累加和后取低8位),如:00000010+10010010+00000001+00000001 = 10010111(校验位) 接收数据正确: 湿度:00000010 10010010 = 0292H(十六进制) = 658(十进制) → 65.8%RH 温度:00000001 00000010 = 0102H(十六进制) = 258(十进制) → 25.8%RH Note:温度的最高位表示符号位,0表示正温度,1表示负温度;如-25.8℃的转换数据为1 000 0001 0000 0010。 示例二:接收到的40位数据: 0000 0010 1001 0010 0000 0001 0000 0010 1001 1111 湿度高8位 湿度低8位 温度高8位 温度低8位 校验位 校验和计算: 00000010+10010010+00000001+00000001 ≠ 10011111(校验位) 校验和错误,放弃此次数据,重新读取模块的温湿度。 4.2.5 单总线应用注意 主机读取模块的温湿度值为上一次的转换值,读取完成后模块将触发一次温湿度转换;因此长时间没有读取模块时,需要读取两次以得到准确的温湿度值(连续读取最小间隔为2S)。
|