跳转到内容

脉冲表传感器

脉冲表传感器允许您计算任何引脚上的脉冲数和频率。它旨在作为 脉冲计数器组件 的直接替代品。 脉冲表传感器不是在固定时间间隔内计算脉冲,而是测量脉冲之间的时间。具体的测量方式取决于 internal_filter_mode 选项。这带来了更高的分辨率,特别是对于低脉冲率,因为脉冲计数器传感器受时间间隔内脉冲数量的限制。

以下是两种传感器的比较。脉冲表是更平滑的线条。两者都设置为 10 秒的更新间隔(分别使用 update_intervalthrottle_average 选项):

请注意,不能同时在同一引脚上使用这两种传感器。

# 示例配置条目
sensor:
- platform: pulse_meter
pin: GPIOXX
name: "脉冲表"
  • pin (必需, 引脚): 用于计算脉冲的引脚。

  • internal_filter (可选, 时间): 如果检测到短于此时间的脉冲,则将其丢弃。默认为 13us

    这作为消除输入噪声的去抖动过滤器,因此请选择一个略小于您预期的最小脉冲宽度的值。

  • internal_filter_mode (可选, 字符串): 确定内部过滤器的应用方式。可选值为 EDGEPULSE。默认为 EDGE

    • EDGE 模式下,比较连续的上升沿,如果它们之间的间隔小于 internal filter 值,则丢弃最后一个。这在您的输入信号有弹跳但其他方面干净时很有用。
    • PULSE 模式下,如果在 internal_filter 时间过去之前检测到任何进一步的中断,则丢弃上升沿。换句话说,高脉冲必须至少持续 internal_filter 长才能被计数。这在您的输入信号有噪声且可能在主脉冲之前和/或之后有弹跳时很有用。
  • timeout (可选, 时间): 如果在这段时间内没有看到脉冲,我们假设 0 脉冲/秒。默认为 5 min

  • total (可选, ID): 输出已计算总脉冲数的附加传感器。

  • 传感器的所有其他选项。

传感器默认单位为 pulses/min,您可以使用 传感器过滤器 更改此单位。 例如,如果您使用脉冲表和光电二极管来计算脉冲常数为 10000 pulses / kWh 的功率表上的光脉冲,可以使用以下配置输出瞬时用量(以 W 为单位):

# 示例配置条目
sensor:
- platform: pulse_meter
name: '用电量'
id: sensor_pulse_meter # 可选 ID,如果您想计算总脉冲数则需要。
unit_of_measurement: 'W'
device_class: power
state_class: measurement
internal_filter: 20ms # 假设最大负载为 16 kW,每 kWh 10000 脉冲,任何快于 22.5 ms 的脉冲都会超过负载。-10% ~= 20 ms。
accuracy_decimals: 0
pin: GPIOXX
filters:
- multiply: 6 # (60s / 脉冲常数) * (1000W / 1kW)

当配置了 total 传感器时,pulse_meter 还会报告测量的总脉冲数。

# 示例配置条目
sensor:
- platform: pulse_meter
# ...
total:
name: "总脉冲数"

使用此动作,您可以重置/设置总脉冲计数。如果您希望 total 传感器与您尝试匹配的仪表上的读数一致,这会很有用。

api:
actions:
- action: set_total
variables:
new_total: int
then:
- pulse_meter.set_total_pulses:
id: sensor_pulse_meter
value: !lambda 'return new_total;'

NOTE

此值是原始脉冲计数,而不是应用过滤器后看到的值