You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实时忽略噪声值 解决电压报警程序指示灯闪烁问题

解决方案

你原有逻辑的核心问题是:单次读数跨越报警阈值就立刻切换灯效,因此单点噪声跳变就会导致指示灯状态频繁切换,出现闪烁。可通过以下几种实时可用的方案解决问题:

方案1:迟滞(滞环)阈值策略

这是工业报警场景最常用的防误触发方案,无额外延迟,只需要给每个报警设置触发、解除两个阈值即可:

  • 高报警(绿灯):触发阈值保持4.27V,新增解除阈值(可根据你的噪声幅度调整,比如设为4.1V)。当前绿灯已亮起时,只有电压低于解除阈值才会灭灯,电压介于4.1V~4.27V区间时保持绿灯状态不变。
  • 低报警(红灯):触发阈值保持-2.56V,新增解除阈值(比如设为-2.4V)。当前红灯已亮起时,只有电压高于解除阈值才会灭灯,电压介于-2.56V~-2.4V区间时保持红灯状态不变。

方案2:防抖计数确认

如果存在连续2-3个点的噪声,可以叠加计数防抖逻辑:读数满足状态切换条件时不立刻切换,只有连续N个读数都满足切换条件时才执行状态切换。N可以根据采样率调整,比如采样率1Hz时设为2,即可过滤所有单点、双点噪声。

优化后可直接使用的代码

以下代码组合了迟滞阈值+防抖计数逻辑,完全适配你的场景,可直接解决样本中945点导致的闪烁问题:

high_alarm_trig = 4.27   # 绿灯触发阈值
high_alarm_release = 4.1 # 绿灯解除阈值,可根据实际噪声幅度调整
low_alarm_trig = -2.56   # 红灯触发阈值
low_alarm_release = -2.4 # 红灯解除阈值
Q = 0.009765625

# 状态变量
current_light_state = "off" # 可选值 off/green/red
stable_count = 0
STABLE_THRESHOLD = 2 # 连续2个读数符合条件才切换状态,可按需调整

for i in range(120):
    volt_bit = my_daq.next_reading()
    volts = volt_bit * Q - 5

    # 计算期望的目标状态
    target_state = current_light_state
    if current_light_state == "green":
        if volts < high_alarm_release:
            target_state = "off"
    elif current_light_state == "red":
        if volts > low_alarm_release:
            target_state = "off"
    else:
        if volts > high_alarm_trig:
            target_state = "green"
        elif volts < low_alarm_trig:
            target_state = "red"
    
    # 防抖逻辑
    if target_state == current_light_state:
        stable_count = 0
    else:
        stable_count += 1
        if stable_count >= STABLE_THRESHOLD:
            current_light_state = target_state
            stable_count = 0
            # 执行灯效切换
            if current_light_state == "green":
                bstick.set_color(index=6, name="green")
            elif current_light_state == "red":
                bstick.set_color(index=3, name="red")
            else:
                lights_off()

内容的提问来源于stack exchange,提问作者hoshimani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:24:07