Антидребезг на портах A1-A4

Добрый день!

Занимаюсь подключением счетчика газа к WirenBoard. Счетчик древний, без импульсного выхода.
На младшем разряде счетчика есть магнитик и блестящая метка. С магнитиком не сложилось: пробовал разные герконы и датчики холла, но не удавалось четко улавливать изменение показаний. В результате остановился на оптическом датчике, который срабатывает на блестящую метку.

Оптический датчик на базе TCRT5000 + компаратор LM393 в виде платки с Али. Схема ниже. Плата запитана от +5v WirenBoard, а выход компаратора подключен к A2 WirenBoard. В нормальном состоянии на A2 напряжение 4.35v и падает до 0.18v когда срабатывает компаратор.
В целом работает, но показания завышаются в среднем на 10-20%.
Кабель между платой и WirenBoard - UTP длиной порядка 10м. У меня подозрение на помехи/наводки, из-за которых возникают ложные срабатывания.

Что можно сделать для более стабильной работы? В настройках WirenBoard не нашел ничего про программный антидребезг на входах A1-A4.
Можно как-то отфильтровать помехи на входе при помощи электрического фильтра? Конденсатор на вход поставить?

Вообще думаю, что без осциллографа ничего хорошего из этого не получится.

Покажите пожалуйста логи wb-mqtt-gpio, в них должно быть про дребезг. Можно скачать диагностический архив из веб-интерфейса и посмотреть логи там.

Спасибо за идею. Осциллографа нет, но нашелся простенький логический анализатор Saleae Logic.
Он показал, что компаратор дает на выходе кучу “иголок” при переходе между состояниями. Картина одинаковая, независимо от того, где снимать сигнал - рядом с компаратором или через 10м на входе WB.


Значит проблема не в помехах.

Почитал про гистерезиc компараторов и попробовал немного доработать плату - убрал конденсатор и добавил резистор обратной связи.
image

Картина в анализаторе стала значительно лучше (и на выходе компаратора и на входе WB):

Но в WB все равно показания счетчика завышаются. То есть ложные срабатывания совсем не пропали.
Получается мне нужно дальше разбираться с моей платой и добиваться “ровного” сигнала на выходе.

В логе wb-mqtt-gpio.service.log пусто - “-- No entries --”. Может логгирование нужно включить где-то предварительно? Сходу не нашел.

А функционал антидребезга фактически есть в wb-mqtt-gpi?

в wb-mqtt-gpio нет, но можно сделать его на правилах.
Вот здесь было.

Еще раз проверил свою схему, обнаружил, что при переделке выпаял не тот конденсатор и перепутал номинал резистора :slight_smile: .
Вот так у меня гистерезис работает и на выходе получается “красивый” прямоугольный сигнал без дребезга при переходе состояний. Но тем не менее фантомные срабатывания остались :frowning: .
image

Попробую правила, спасибо.

Я посмотрел исходники wb-mqtt-gpio и обнаружил несколько веток с реализацией антидребезга: Branches · wirenboard/wb-mqtt-gpio · GitHub

Есть ли шанс, что эти доработки будут выпущены в обозримом будущем?