跳转到内容

HDC302x 温度和湿度传感器

hdc302x 传感器平台允许您在 ESPHome 中使用 HDC3020、HDC3021 或 HDC3022 (数据手册, 用户指南, Adafruit) 传感器。

HDC3020 是开放式腔体封装,HDC3021 带有用于 PCB 组装的可拆卸保护胶带, HDC3022 则带有永久性 IP67 PTFE 过滤器,可防尘防水汽凝结。

此传感器需要在您的配置中设置 I²C 总线。

HDC3022 温度和湿度传感器。图片来源:Adafruit。
# Example configuration entry
sensor:
- platform: hdc302x
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
update_interval: 60s
  • temperature (可选): 温度传感器的信息。

    • 来自 Sensor 的所有选项。
  • humidity (可选): 湿度传感器的信息。

    • 来自 Sensor 的所有选项。
  • power_mode (可选,枚举): 触发温度和湿度测量时使用的电源模式。这会 影响测量精度和传感器功耗。

    • HIGH_ACCURACY(默认): 最高精度,速度较慢,功耗较高。
    • BALANCED: 在精度和功耗之间取得平衡。
    • LOW_POWER: 功耗较低,速度较快,精度较低。
    • ULTRA_LOW_POWER: 最低功耗,最快,精度最低。
  • address (可选,int): 手动指定传感器的 I²C 地址。 默认为 0x44。支持的地址为 0x44 至 0x47。

  • update_interval (可选,Time): 检查传感器的间隔。 默认为 60s。

此操作启用具有指定 ID 的传感器上集成的加热器。 加热器可用于去除湿度传感器上的凝结水,或验证传感器功能。

WARNING

加热器工作时,温度和湿度读数将不准确。 加热器可使芯片温度比环境温度 高出最多 80°C(取决于供电电压和功率等级)。

如果传感器上凝结了水,必须注意避免超过 100°C。 温度过快超过 100°C 可能导致 水滴爆裂并损坏传感器腔体内的聚合物材料。从环境温度升至 100°C 至少需要 5 到 10 秒。

加热器功率取决于 VDD——较高的供电电压会产生更多热量。在 5V 下使用较高功率 等级时请小心。

加热器可蒸发凝结物,但无法去除开放式腔体传感器 (HDC3020、HDC3021)上的溶解污染物。污染物残留可能影响湿度测量并导致漂移。HDC3022 的 IP67 PTFE 过滤器可在蒸发过程中防护溶解污染物。

on_...:
then:
- hdc302x.heater_on:
id: my_hdc302x
power: QUARTER
duration: 5s
  • id(必选,ID): HDC302x 传感器的 ID。
  • power (可选): 加热器功率等级。较高功率可更快去除凝结物, 但会增加芯片温度。默认为 QUARTER。
    • QUARTER: 最低功率,最安全选项。
    • HALF
    • FULL: 最大功率。请谨慎使用——参见上方警告。
    • 也可以使用 0 到 16383 之间的原始整数值,以精细控制 14 位加热器电流控制。详见数据手册表 7-15。
  • duration (可选,Time): 加热器运行时长。 设置为 0s 可保持加热器开启,直到手动使用 hdc302x.heater_off 关闭。默认为 5s。

此操作禁用具有指定 ID 的传感器上集成的加热器。 关闭加热器后,请等待数分钟让传感器冷却,然后再期望获得准确读数。

on_...:
then:
- hdc302x.heater_off: my_hdc302x

在凝结环境中,当环境温度降至露点以下时,传感器上可能形成湿气,导致湿度读数不准确。集成的加热器可用于蒸发这些凝结物。

WARNING

使用加热器前,请阅读上方加热器安全注意事项。除凝 结的时机和功率需求因您的电路板布局和供电电压而异。

详见数据手册第 7.3.7 节,以及 HDC3x Silicon 用户指南第 3.6 节获取详细指导。

要去除凝结物,使用 duration: 0s 启用加热器以保持其运行,监测湿度读数, 并在读数降至接近 0%(表示凝结物已去除)或最多 5 分钟后禁用加热器。禁用加热器后,请等待数分钟让传感器冷却,然后再期望 获得准确读数。

sensor:
- platform: hdc302x
id: my_hdc302x
temperature:
name: "Temperature"
humidity:
name: "Humidity"
id: hdc302x_humidity
on_value_range:
- above: 95.0
then:
- script.execute: hdc302x_condensation_removal
update_interval: 10s
script:
- id: hdc302x_condensation_removal
mode: single
then:
- hdc302x.heater_on:
id: my_hdc302x
power: QUARTER
duration: 0s
- wait_until:
condition:
sensor.in_range:
id: hdc302x_humidity
below: 1.0
timeout: 5min
- hdc302x.heater_off: my_hdc302x