脉冲表传感器
脉冲表传感器允许您计算任何引脚上的脉冲数和频率。它旨在作为 脉冲计数器组件 的直接替代品。
脉冲表传感器不是在固定时间间隔内计算脉冲,而是测量脉冲之间的时间。具体的测量方式取决于 internal_filter_mode 选项。这带来了更高的分辨率,特别是对于低脉冲率,因为脉冲计数器传感器受时间间隔内脉冲数量的限制。
以下是两种传感器的比较。脉冲表是更平滑的线条。两者都设置为 10 秒的更新间隔(分别使用 update_interval 和 throttle_average 选项):
请注意,不能同时在同一引脚上使用这两种传感器。
# 示例配置条目sensor: - platform: pulse_meter pin: GPIOXX name: "脉冲表"-
pin (必需, 引脚): 用于计算脉冲的引脚。
-
internal_filter (可选, 时间): 如果检测到短于此时间的脉冲,则将其丢弃。默认为
13us。这作为消除输入噪声的去抖动过滤器,因此请选择一个略小于您预期的最小脉冲宽度的值。
-
internal_filter_mode (可选, 字符串): 确定内部过滤器的应用方式。可选值为
EDGE或PULSE。默认为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)计算总脉冲数
Section titled “计算总脉冲数”当配置了 total 传感器时,pulse_meter 还会报告测量的总脉冲数。
# 示例配置条目sensor: - platform: pulse_meter # ... total: name: "总脉冲数"pulse_meter.set_total_pulses 动作
Section titled “pulse_meter.set_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
此值是原始脉冲计数,而不是应用过滤器后看到的值