跳转到内容

VEML7700 和 VEML6030 环境光传感器

veml7700 传感器平台允许您在 ESPHome 中使用 Vishay VEML7700 和 VEML6030 环境光传感器。 与设备的通信通过 I²C 进行,因此您的配置中必须包含 I²C 总线。VEML7700 和 VEML6030 本质上是相同的传感器,只是封装不同。VEML7700 使用固定地址 0x10,而较小的 VEML6030 可以配置使用 0x100x48

VEML 7700/6030 设备可从多个供应商的扩展板上获得,包括 AdafruitSparkFunDFRobot 等。

VEML7700 环境光传感器模块及独立传感器。
Home Assistant 界面中的 VEML 传感器。

该传感器是一款高精度环境光数字传感器,具有 16 位分辨率,动态范围从 0 lux 到约 120,000 lux。 其广泛的测量范围由四个可配置的_增益_级别和六种不同的_积分时间_选项实现。 较高的增益值通常用于较低光照条件。

该传感器有两个具有不同光谱响应的光电二极管,由两个通道表示:ALS 通道和 WHITE 通道。 ALS(环境光)通道非常接近所谓的人眼曲线。WHITE 通道覆盖更宽的波长/光谱范围,捕获大量近红外辐射。

ALS 和 WHITE 通道的光谱响应

建议使用此组件的自动测量模式;在此模式下,组件会在进行几次测量后自动选择适当的_增益_和_积分时间_。为此,它遵循制造商推荐的流程。

如果您希望手动控制这些参数,请注意:

  • 1/8 和 1/4 的增益级别应在大多数情况下使用。
  • 1 和 2 的增益级别仅适用于低光照条件 < 100 lux。对于非常高的照度,它会表现出高度非线性。
  • 在 0 lux - 1000 lux 范围内,增益 1/4 和 1/8 的传感器测量严格线性,超过 1000 lux 后会表现出非线性。

在明亮条件下使用 lux 补偿公式可获得更好的读数。 但是,在非常明亮的直射阳光下,它会产生相当大的误差(可能会显示 150-200k+ 而不是 100-120 kilolux)。

维基百科文章中有一个用于比较的 lux 值表格。

在自动测量模式下,组件从增益 1/8 和 100ms 开始(默认值)。

  • 如果照度高于 46 lx(100 计数),它会逐渐减少积分时间以获得良好的读数(最佳范围在 100 - 10,000 计数之间)。
  • 如果照度较低(小于 46 lx),它会尝试逐渐增加增益,然后再增加积分时间。

请注意,在低光照条件下,由于长曝光时间和传感器重新配置,测量过程可能需要几秒钟。

可以通过设置 gainintegration_time 参数来覆盖起始值。如果可能,增益值会首先被调整。

Lux 补偿按照制造商的建议进行,但可以通过在设备配置中设置 lux_compensation: false 来关闭。

lux = counts × resolution(time, gain)
lux_comp = 6.0135e-13 × lux⁴ - 9.3924e-9 × lux³ + 8.1488e-5 × lux² + 1.0023 × lux

其中:

  • counts - 传感器读数,计数
  • resolution - 给定积分时间和增益下的传感器分辨率,lx/计数
  • lux - 计算的照度,lx
  • lux_comp - 补偿后的照度,lx

该实现提供七个传感器:

  • 两个提供 lux 值,

  • 两个直接来自设备的无量纲数据测量,

  • 两个用于测量的实际_增益_和_积分时间_值(在自动模式下有用),以及

  • 一个完全人工的,某种程度上代表近红外光谱部分。

  • ambient_lightALS 通道的照度值,代表人眼,lx

  • full_spectrumWHITE 通道的照度值,具有宽光谱,lx

  • infrared:计算的照度值(WHITE 减去 ALS),代表近红外光谱,lx

  • ambient_light_countsALS 通道的原始 16 位读数,计数

  • full_spectrum_countsWHITE 通道的原始 16 位读数,计数

  • actual_gain:用于报告值的实际增益值,倍数

  • actual_integration_time:用于报告值的实际积分时间,ms

# 配置条目示例
sensor:
- platform: veml7700
address: 0x10
update_interval: 60s
# 传感器定义的简写形式:
ambient_light: "环境光"
# 传感器定义的完整形式:
actual_gain:
name: "实际增益"
  • auto_mode (可选, 布尔值): 自动选择增益和积分时间。默认为 True

  • integration_time (可选, 时间): 传感器曝光的时间量。有效值为 25ms50ms100ms (默认)200ms400ms800ms在自动模式下设置起始值

  • gain (可选, 字符串): 设备用于内部 ADC 的增益。有效值为 1/8x (默认)1/4x1x2x。较高的值在低光照条件下更好。 在自动模式下设置起始增益值

  • lux_compensation (可选, 布尔值): 按照制造商建议使用 lux 补偿公式。 默认为 True

  • glass_attenuation_factor (可选): 如果传感器位于玻璃或塑料面板后面,则为玻璃的衰减因子。默认为 1.0,表示 100% 透射率。2 表示 50% 透射率等。

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

  • I²C 设备中描述的所有其他选项。 传感器支持”标准”和”快速”总线模式:10 kHz 至 400 kHz。

您可以配置前面描述的所有传感器或任意子集。 每个配置的传感器在每个 update_interval 单独报告。 支持 传感器的所有选项。

但是,如果您不需要任何其他选项,可以像这样使用简写形式:ambient_light: 环境光

  • ambient_light (可选): 可见光照度(ALS 通道),lx。
  • full_spectrum (可选): 全光谱传感器的照度(WHITE 通道),lx。
  • infrared (可选): 近红外光谱的计算照度(WHITE 减去 ALS),lx。
  • ambient_light_counts (可选): 可见光读数(ALS 通道),计数。
  • full_spectrum_counts (可选): 全光谱传感器的读数(WHITE 通道),计数。
  • actual_gain (可选): 用于报告值的增益值。在选择”auto_mode”时特别有用。
  • actual_integration_time (可选): 用于报告值的积分时间,ms。在选择”auto_mode”时特别有用。