作者:Stephen Evanczuk
关键词:传感器, 方案, 开发工具
鉴于温度和湿度对建筑物和电子系统的结构完整性的影响,获得准确和可靠的对这些参数的测量能力是广泛的消费、工业和医疗应用的设计基础。人们十分关注湿度和温度对健康的影响,研究表明,这些参数的变化会产生从体感不适到气溶胶化病毒感染等各种影响。
为了满足这种需求,设计人员需要一种成本效益高、外形尺寸小、易于部署的解决方案,以便在各种应用中检测温度和湿度。为了延长偏远或其他难以到达的地点的电池寿命,解决方案可能还需要消耗很少的电力,同时保持必要的精度和稳定性。
本文讨论了环境温湿度对基础设施、电子系统和人体健康的影响。然后介绍并展示了如何使用 TE Connectivity Measurement Specialties 的小型湿度和温度传感器,以及设计人员怎样利用该传感器更轻松地满足各种应用的关键测量要求。
准确测量湿度和温度的重要性
在很多领域准确监控和调节湿度和温度水平的能力都发挥着关键作用,这些领域包括供暖、通风和空调 (HVAC) 系统以及用于睡眠呼吸暂停的持续正压气道压力 (CPAP) 设备,甚至影响人类的幸福指数。
相对湿度 (RH) 这个耳熟能详的名词,表示空气中的含水量,是指在给定温度下空气所能容纳的最大水量的百分比。和温度一样,湿度过高或过低都会让人感到不舒服,甚至对建筑结构以及机械设备和电子设备造成损害。
建筑物湿度过高,会导致混凝土和其他材料的腐蚀、霉菌生长和分解。在电子设备中,湿度过高,特别是当设备从阴凉处进入潮湿环境时,会因结露而导致短路。
湿度低会造成材料收缩、纸制品损坏、静电积聚。随着积聚量的增加,产生的静电会对电子设备造成损害,并在挥发性有机化合物 (VOC) 含量较高的环境中引发火灾。因此,RH 传感器在为建筑提供安全、健康的环境方面发挥着重要作用。在促进人类健康和福祉方面,类似问题越来越多。
人类通常会注意到不舒服的温度而不是湿度水平,但过低或过高的湿度水平都会影响健康。湿度过高或过低会加重哮喘和过敏患者的症状,并导致睡眠质量较低,即使健康的人也会有影响。在极低的湿度下,人体组织会干燥,造成对眼睛或鼻腔的刺激。CPAP 制造商通常依靠湿度传感器来确保他们的设备为用户提供合适的潮湿空气。
湿度的测量和控制在公共卫生中发挥着更广泛的作用。研究人员发现,湿度水平不需要达到极端的干燥或潮湿,就能对人体生理发生作用。正常情况下,鼻腔中的水分有助于排出气溶胶化病毒(悬浮在微滴中的病毒)。当鼻腔干燥时,气溶胶病原体可以更深入地渗透到呼吸系统,更容易引起感染 [1]。由于这些因素和其他生理因素的影响,当湿度低于 40% RH 时,气溶胶化流感病毒的感染力明显提高(图 1)[2]。最近的研究表明,相对湿度在 40%~60% 之间对降低新冠肺炎感染也有一定作用,甚至可以降解引起新冠肺炎的 SARS-CoV-2 病毒 [3]。
虽然在众多不同的应用中,准确测量湿度和温度至关重要,但相应的设计要求却限制了开发人员轻松构建有效解决方案的能力。除了对高精度和低长期漂移要求外,许多应用还要求传感器以最小封装提供快速测量和低功耗操作能力,以便将传感器放置在理想的测量点上,无论是 HVAC 加湿器、CPAP 湿度控制装置还是精密环境监测系统。TE Connectivity 的 HTU31D 湿度和温度数字传感器可满足越来越多依赖精确数据的应用的要求。
满足关键测量要求的解决方案
HTU31D 具有体积小、精度高的特点,适用于从消费类产品到医疗和专业监测系统的各种应用。它采用 6 引脚封装,尺寸为 2.5 x 2.5 x 0.9 毫米 (mm),已完全校准,无需额外的现场校准。由于其体积小,开发人员可以将传感器放置在对早期传感解决方案来说太小的位置,并使用现成的 I²C 缓冲器或电平移位器,通过其 I²C 串行接口将远程放置的 HTU31D 连接到其主机控制器。
HTU31D 测量的相对湿度范围为 0 到 100%,典型精度为 ±2%,相对湿度滞后为 ±0.7%,典型长期漂移小于 0.25% RH/年。该器件的温度测量范围为 -40 至 125℃,典型精度为 ±0.2℃,典型长期漂移为 0.04℃/年。为了保持其可靠性,该传感器集成了一个加热元件,用于消除高湿度水平下的冷凝水,同时带有内部诊断功能,以检测测量误差、加热元件误差和内部存储器误差。
在用于湿度和温度测量的基准模式下,该传感器的分辨率为 0.020% RH 和 0.040°C,转换时间分别为 1 毫秒 (ms) 和 1.6 毫秒。对于更苛刻的要求,该器件还提供了让开发人员以转换时间为代价来提高分辨率的操作模式。在每个传感器的最大分辨率模式下,HTU31D 可以提供 0.007% 的 RH(转换时间为 7.8 毫秒)和 0.012℃(转换时间为 12.1 毫秒)的精度。
对于某些应用,如电池供电型产品,器件的低电流消耗是同样重要的特性。在其基本分辨率模式下工作,每秒执行一次相对湿度和温度测量,器件通常只需要 1.04 微安 (μA)。在非活动期间,可将器件置于休眠模式,通常只消耗 0.13 μA。当然,短暂地使用内部加热器来消除冷凝水或测试温度传感器,同样会导致电流短暂但显著增加。
简单的硬件和软件接口
HTU31D 湿度和温度数字传感器为开发人员的设计提供了简单的硬件和软件集成接口。除了 3 至 5.5 伏供电电压 (VDD) 和接地 (GND) 引脚外,该器件的硬件接口还包括用于 I²C 标准串行数据 (SDA) 和串行时钟 (SCL) 线路的引脚。其余两个引脚包括一个复位 (RST) 引脚和一个地址 (IC_ADD) 引脚。当 IC_ADD 与 GND 或 VDD 连接在一起时,该器件分别响应 I²C 地址 0x40 或 0x41,允许两个 HTU31D 器件共享同一 I²C 总线而不发生冲突。
主机处理器使用基本的 I²C 串行事务处理进行命令和读取结果发送。命令使用一个由 I²C 地址组成的双字节序列,后接一个命令字节,通过设置各个位来指定支持的功能,具体包括综合温度和湿度测量、仅湿度测量、复位、加热器打开或关闭、设备序列号和诊断。
例如,如要执行温度和相对湿度 (T & RH) 综合测量,主机将发送地址字节和一个包含转换命令位和指定温度和相对湿度测量所需分辨率的位的字节。该器件支持简单轮询方法,因此在发送两个字节的转换命令序列后,主机处理器将等待规格书中规定的与分辨率相关的持续时间,然后再发出一个带有地址字节(0x40 或 0x41)的两个字节序列,然后是 T&RH 读命令字节 (0x0)(图 2,顶行)。每次请求温度和湿度测量时,HTU31D 会将通过发送原始值的上、下字节来做出响应(图 2,下两行)。利用 HTU31D 规格书中提供的一对公式将原始值转换为相应的物理温度和湿度值。
如图 2 所示,HTU31D 在每一个 16 位数据序列后面都有一个字节,其中包含了器件生成的数据循环冗余校验 (CRC) 值。该 CRC-8 校验和能够检测出数据传输中任何地方的单个位错误或双位错误,或 8 位窗口内的位错误群集。通过将这个传输的 CRC 值与从所接收数据计算出的 CRC 值进行比较,主机处理器可以快速识别失败的传输,并采取适当的行动,如重复测量命令,短暂地打开 HTU31D 集成加热元件,发出复位,或提醒用户测量系统可能出现故障。
传输序列的另一个特点是,当发生某种覆盖需求时,主机可以在其正常完成之前停止响应序列。在正常事务处理中,HTU31D 期望在第一个数据字节后有一个确认 (ack),在数据序列的最后有一个最后的不确认 (nack) 和停止序列(见图 2)。当不需要 CRC 数据或湿度数据时,或者急需设备复位或加热器激活等新命令时,开发人员可以使用此功能停止进一步传输。在这里,主机可以发出最后的 ack/stop 序列来立即终止来自传感器的数据传输,而不是在数据或 CRC 字节之后发送预期的 ack。
TE 的 HTU31D 提供了一个直接的电气和功能接口,但采用任何高敏感度的传感器都需要仔细的物理设计,以避免因与板上其他设备的电气或热相互作用而产生测量伪影。同样,在实现命令序列协议或值转换等式方面时出错也会拖延不断演进的产品中的湿度和温度传感功能的评估和原型设计。MikroElektronika 提供的扩展板和相关软件允许开发人员绕过潜在实现问题,并能立即开始设计和开发。
快速原型设计和加速开发
MikroElektronika MIKROE-4306 基于 HTU31D 的 Temp & Hum 14 Click 扩展板完整实现了传感器电气接口(图 3,左),它安装在一块尺寸为 28.6 x 25.4 mm 的电路板上(图 3,右)。
与 MikroElektronika 和其他供应商的其他 mikroBUS Click 扩展板一样,MikroElektronika Temp & Hum 14 Click 板旨在插入到主机处理器板(如 MikroElektronika Fusion 开发板)中,并与 MikroElektronika 的开源 mikroSDK 软件开发框架一起使用。
MikroElektronika 为 mikroSDK 环境补充了软件包,这些软件包为特定的 Click 板和开发板提供了驱动程序和电路板支持。对于 Temp & Hum 14 Click 板,MikroElektronika 为其 Fusion 和其他 MikroElektronika 板系列提供 Temp-Hum 14 Click 软件包的绑定。
Temp-Hum 14 Click 软件包支持使用 HTU31D 专用功能库进行开发,该功能库可通过应用编程接口 (API) 访问。随附的示例应用程序演示了 HTU31D 传感器的操作,使用了一组简单的 API 函数,具体包括:
- temphum14_set_conversion,执行前面提到的转换序列
- temphum14_get_temp_and_hum,执行传感器的 T 和 RH 数据序列
- temphum14_get_diagnostic,从 HTU31D 的片上诊断寄存器读取错误状态
该示例应用程序代码演示了系统初始化、应用初始化和应用任务的执行。列表 1 显示了旨在在 MikroElektronika Fusion for KINETIS v8 MIKROE-3515 开发板上运行的软件包的一个片段,该开发板基于 NXP 的 MK64FN1M0VDC12 Arm® Cortex®-M4 Kinetis K60 微控制器。
副本
#include “Click_TempHum14_types.h”
#include “Click_TempHum14_config.h”
#include “Click_TempHum14_other_peripherals.h”
temphum14_diagn_t status_data;
uint32_t ser_numb;
float temperature;
float humidity;
char log_text[ 50 ];
[code deleted]
void system_init ( )
{
mikrobus_gpioInit( _MIKROBUS1, _MIKROBUS_RST_PIN, _GPIO_OUTPUT );
mikrobus_i2cInit( _MIKROBUS1, &TEMPHUM14_I2C_CFG[0] );
mikrobus_logInit( _LOG_USBUART, 9600 );
Delay_ms( 100 );
mikrobus_logWrite( “—————————–“, _LOG_LINE );
mikrobus_logWrite( ” Temp-Hum 14 click “, _LOG_LINE );
mikrobus_logWrite( “—————————–“, _LOG_LINE );
Delay_ms( 100 );
}
void application_init ( )
{
temphum14_i2c_driver_init( (temphum14_obj_t)&_MIKROBUS1_GPIO,
(temphum14_obj_t)&_MIKROBUS1_I2C,
TEMPHUM14_I2C_SLAVE_ADDR_GND );
Delay_ms( 100 );
mikrobus_logWrite( ” Hardware Reset “, _LOG_LINE );
temphum14_hw_reset( );
Delay_ms( 100 );
ser_numb = temphum14_get_serial_number( );
LongWordToStr( ser_numb, log_text );
Ltrim( log_text );
mikrobus_logWrite( “—————————–“, _LOG_LINE );
mikrobus_logWrite( ” Serial Number : “, _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_LINE );
mikrobus_logWrite( “—————————–“, _LOG_LINE );
mikrobus_logWrite( ” Software Reset “, _LOG_LINE );
temphum14_soft_reset( );
Delay_ms( 100 );
temphum14_get_diagnostic( &status_data );
Delay_ms( 10 );
display_diagnostic( );
Delay_ms( 100 );
}
void application_task ( )
{
temphum14_set_conversion( TEMPHUM14_CONVERSION_HUM_OSR_0_020,
TEMPHUM14_CONVERSION_TEMP_0_040 );
Delay_ms( 10 );
temphum14_get_temp_and_hum( &temperature, &humidity );
Delay_ms( 10 );
FloatToStr( temperature, log_text );
mikrobus_logWrite( ” Temperature : “, _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_TEXT );
mikrobus_logWrite( ” C”, _LOG_LINE );
FloatToStr( humidity, log_text );
mikrobus_logWrite( ” Humidity : “, _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_TEXT );
mikrobus_logWrite( ” %”, _LOG_LINE );
mikrobus_logWrite( “—————————–“, _LOG_LINE );
Delay_ms( 3000 );
}
void main ( )
{
system_init( );
application_init( );
for ( ; ; )
{
application_task( );
}
}
列表 1:来自 MikroElektronika 示例应用程序代码片段演示了初始化和执行一个简单任务的基本设计模式,以便从 HTU31D 传感器获得温度和相对湿度测量值。(代码来源: MikroElektronika)
软件包中包含的示例应用展示了使用 TE HTU31D 传感器实现软件应用程序的基本设计模式。如列表 1 所示,主例程首先调用系统初始化函数 (system_init()) 来设置包括 HTU31D 传感器在内的低层驱动程序,并调用函数 (application_init()) 来初始化应用资源。在这种情况下,application_init() 在执行传感器复位和函数调用 (temphum14_get_diagnostic()) 以检索传感器的诊断信息并显示诊断信息 (display_diagnostic()) 之前,会用传感器对象的实例来初始化系统的 I²C 驱动程序。
在短暂的初始化阶段之后,样本应用程序进入了一个无尽的循环,每隔三秒就会调用一个应用程序任务。在列表 1 所示的示例代码中,应用任务请求以 0.020% RH 和 0.040°C 分辨率在如前所述的 HTU31D 基准工作模式下进行转换。在这种基准模式下,HTU31D 只需要 1 ms 来测量相对湿度,1.6 ms 来测量温度。在调用 API 函数 temphum14_get_temp_and_hum() 之前,示例应用程序会使用 10 ms 的延迟 (delay_ms(10)) 来拉长等待时间,以获取温度和湿度值。由于该库执行了将 HTU31D 的原始值转换为物理温度和湿度测量值所需的转换,因此可以直接使用所产生的测量值,在这种情况下,只需记录结果。
利用这个硬件平台和相关的软件环境,开发人员可以快速评估并开发 HTU31D 传感器应用原型,以获得各种分辨率的精确相对湿度和温度测量值。如需进行定制硬件开发,MikroElektronika Temp & Hum 14 Click 板可作为完整的参考设计使用,同时包括完整的原理图和物理设计。如需进行定制软件开发,Temp-Hum 14 Click 软件包提供了一个基本的模板,可以构建更全面的应用程序。
结语
湿度和温度对结构和设备的完整性以及人类的健康和福祉起着至关重要的作用。然而,对湿度和温度的管理是否合适有赖于测量的精度与普遍的测量方式的结合,由于传统传感器方案的限制,这些很难轻易实现。
TE Connectivity Measurement Specialties 的湿度和温度传感器提供了独特的精度、稳定性、尺寸和易用性组合,可满足消费、工业和医疗应用中新出现的测量要求。
参考文献
小编的话:
对于楼宇、工厂、农业、医疗和家居等领域实现智能化而言,准确测量湿度和温度至关重要,而如文章所言,在具体的系统方案设计中,看起来简单的传感系统却往往需要克服包括精度、体积和功耗在内的多重挑战。通过本文对软硬件设计资源的介绍,相信能够为小伙伴们进行环境传感方案设计提供具有实用价值的参考。
您正在进行温湿度传感系统设计吗?您有哪些问题或经验?欢迎留言,和大家分享!
******
如有任何问题,欢迎联系得捷电子DigiKey客服团队。
中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199
中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com
到微信搜寻“digikey”或“得捷电子”
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利