Как настроить дребезг на A1 A2 для счетчика воды на WB7

Как правильно настроить дребезг или поправить шаблон что бы счетчики срабатывали при вольтаже больше чем 4 ?

Счетчики подключены по инструкции Подключение устройств с импульсными выходами к контроллеру Wiren Board — Wiren Board

есть дребезги в 0.2 вольта

на mwac такие же счетчики работают отлично

Вот тут задавал аналогичный вопрос. Похоже, сейчас единственный вариант - писать логику антидребезга на правилах WB.

Порог срабатывания универсальных входов описан в документации контроллера и программно - не меняется.
Опишите пожалуйста подключение, расчетные параметры токов и наприяжений на входе при “сработавшем” (активном) входе) и несработавшем, (пассивном).
Реальные напряжения не соответствуют расчетным?

Сделал пока что так , вроде отрабатывает как нужно
при ложном срабатывание А1 успевает увеличить значение но правило то что ниже обратно переписывает на нужное

var water_meter_1_Value = dev["wb-gpio/A1_IN_total"];

var devInput = "wb-adc/A1"; // устройство-источник значений.
var compValue = 2; //Значение, превышение которого отслеживаем
var debounceTime = 200; //Время "дребезга" в миллисекундах

var timerId = null; //тут будем сохранять идентификатор таймера

log.info("start")

defineRule( "debounceTime" ,{
  whenChanged: devInput,
  then: function (newValue, devName, cellName){
    log.info("I’m here!", newValue)
    dev["wb-gpio/A1_IN_total"] = water_meter_1_Value;
    if(newValue > compValue) { //Если значение БОЛЬШЕ
      // log.info("Compare BIGGER", newValue)
      if (timerId){ //Если таймер УЖЕ есть
        // log.info("Timer started BEFORE", newValue)
      }
      else{ //Запускаем таймер
        // log.info("Timer NEED started", newValue)
        timerId = setTimeout(function () { //Начинаем описывать таймер
          log.info("VALUE BIGGER over", debounceTime, " ms") //тут можно описать требуемое действие
          water_meter_1_Value = water_meter_1_Value + 0.01;
          dev["wb-gpio/A1_IN_total"] = water_meter_1_Value;
          //dev["water_meters_k_1/water_meter_1"]  = water_meter_1_Value; // прибовляем 1 сотую к счетчику;
          
          timerId = null; //Сбрасываем идентификатор отработавшего таймера
        }, debounceTime);
      }
    }
    else{ //Если значение МЕНЬШЕ уставки
      if (timerId){ //Если таймер УЖЕ есть
        // log.info("Kill timer", timerId);
        clearTimeout(timerId); //останавливем таймер
        timerId = null; //Сбрасываем идентификатор таймера
      }
    }
  }
})```

Честно говоря это решение мне кажется несколько странным. я бы привел сигнал аппаратно к нормальному виду, это намного надежнее.

скажите как это сделать, я сделаю, проблема в том что срабатывает фантомно на 0.02 вольта (дребезги) на mwac тото же счетчки работает идеально

Какой ток у вас через замкнутый контакт? Чем он, ток обеспечивается (номинал резистора, куда подключен)?
В модулях с входами, предназначенными для сухих контактов ток - порядка 2 мА, наприяжение - 12 вольт. На универсальном входе нет никаких подтяжек и их нужно добавлять.
Если например от +5 вольт - поставьте резистор 2,7кОм.

подключен по вот такой схеме

тоесть получается от 5 вольт

поставил резисторы 3.3 ком на минус (а1 и а2)
и что Вы думаете тоже самое

как видим на канале а2 все равно фантомное увелечение счетчика ((( (правила которые писал выше отключил )

Предполагаю стороннюю наводку. Тут по хорошему надо осциллографом смотреть. Может помочь RC цепочка для фильтрации.

мне кажется лучший вариант поправить логику , сделать изменение счетчика при больше чем 2 вольта , что бы не срабатывало на 0.1 - 0.2.

так же с учетом что на а3 тоже самое , хотя туда не чего не подключено, значит наводка где то внутри WB происходит. по этому лучше логику подправить

Нет. Это аппаратное ограничение и программно не меняется.

Входы имеют высокое сопротивление и- да, подвержены наводкам, естественно. Следует обеспечить выходное сопротивление подклюенной цепи на порядок (лучше на два) чем сопротивление входа.

я по ходу понял и скорее всего решил проблему , убрал десятичные значение в adc

Видел в исходниках WB несколько веток с прототипами реализации антидребезга:

Есть ли шанс, что эти изменения попадут в основную ветку?

Аналоговый канал не имеет отношения к дискретному входу счетчика, совсем.
Его значение отражает только уровень напряжения.
https://wirenboard.com/wiki/Wiren_Board_7#Универсальные_входы/выходы_A1-A3_и_D1