跳转到内容

脉冲计量传感器

脉冲计量传感器允许您在任意引脚上对脉冲数量和频率进行计数。它旨在作为pulse counter 组件的无缝替代。它不是在固定时间间隔内对脉冲计数,而是测量脉冲之间的时间间隔。具体的测量方式取决于 internal_filter_mode 选项。这使得分辨率更高,特别是在低脉冲速率下,因为 pulse counter 传感器的分辨率受限于时间间隔内的脉冲数量。

下面是两种传感器的对比图,pulse meter 是较平滑的那条线。两者都设置为 10 秒的更新间隔(分别使用 update_interval 和 throttle_average 选项):

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

# 示例配置条目
sensor:
- platform: pulse_meter
pin: GPIOXX
name: "Pulse Meter"
  • pin (必选, Pin): 用于计数脉冲的引脚。

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

    该选项起到去抖滤波器的作用,可消除输入噪声,因此请选择一个略小于预期最小脉冲宽度的值。

  • internal_filter_mode (可选, string): 确定内部过滤器的应用方式。 可选值为 EDGE 或 PULSE。默认为 EDGE。

    • 在 EDGE 模式下,会对连续的上升沿进行比较,如果它们之间的间隔小于 internal_filter 值,则丢弃后一个。当输入信号存在弹跳,但其他方面比较干净时,这很有用。
    • 在 PULSE 模式下,如果在 internal_filter 时间过去之前检测到任何进一步的中断,则丢弃该上升沿。换句话说,高电平脉冲必须至少持续 internal_filter 时间才会被计数。当输入信号存在噪声,且主要脉冲前后可能出现弹跳时,这很有用。
  • timeout (可选, Time): 如果在这么长的时间内没有检测到脉冲,则假定脉冲数为 0/s。默认为 5 min。

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

  • Sensor 的所有其他选项。

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

# 示例配置条目
sensor:
- platform: pulse_meter
name: 'Electricity Usage'
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 Pulses"

通过此动作,您可以重置/设置总脉冲计数。如果您希望 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

此值是脉冲的原始计数,而不是经过过滤器处理后的值。