Проблема запуска нескольких прерываний на nodemcu 1.0 на одном импульсе восходящего фронта

Я работаю над проектом, который включает в себя подсчет капель, падающих в капельницу флакона для внутривенной гравитационной терапии (физиологический раствор).Я использую ИК-трансивер в капельной камере, чтобы обнаружить падающую каплю. Я использую компаратор для генерации импульса, когда ИК-напряжение падает ниже определенного порога. Выход компаратора подключен к D1 nodemcu. ISR вызывается при нарастающем импульсе компаратора .Но nodemcu вызывает ISR от 3 до 5 раз за одну каплю.что же мне делать?плз помогите.

, 👍2

Обсуждение

Это звучит так, как будто ваша схема производит несколько восходящих ребер на падение. Вы можете проверить это, наблюдая за сигналом с помощью осциллографа или логического анализатора. Самый простой способ решения проблемы - это настроить вашу схему так, чтобы вы получали только 1 восходящий фронт на падение. Или вы можете отключить прерывание на определенное время после первого обнаружения падения (чтобы игнорировать ложные прерывания, @chrisl

Кажется, хорошо, я попробую. я должен отключить прерывание с помощью micros после обнаружения падения и снова включить прерывание через несколько миллисекунд. Я не могу прекратить выполнение основного цикла, поскольку он состоит из отправки оставшегося объема данных, скорости и т.д. к базе данных., @CHETAN NIRADWAR

какова самая быстрая скорость капельного введения физиологического раствора внутривенно?, @jsotola

На самом деле у меня не было идеальной идеи .Я погуглил это, но не получил прямого ответа. Затем я увидел изображения трубок "dial a flow", у них макс. на нем пометка 250 мл/час. А из Google я узнал, что максимальный коэффициент капель (капель, необходимых для 1 мл) равен 60. Исходя из этого, я подсчитал, что максимальная скорость капания может составлять от 4 до 5 капель в секунду., @CHETAN NIRADWAR

можно попробовать использовать небольшой конденсатор, например, 1 или 0,1 мкФ при ИК-напряжении, чтобы замедлить его и отфильтровать шум. по сути, вам нужен фильтр нижних частот частотой 10 Гц. кроме того, АЦП 8266 любит выполнять выборку только около 800 раз в секунду, и запрос большего количества данных может привести к ошибочным результатам., @dandavis


1 ответ


1

Сигнал, вероятно, "прыгает" между максимумом и МИНИМУМОМ вместо того, чтобы выполнять чистый край, как это происходит с кнопками.

Два простых решения:

  1. Аппаратное решение: используйте триггер Шмидта вместо компаратора
  2. Программное решение: определите мертвое время для получения сигнала (отключите прерывание, когда нужный край был обнаружен, и включите его снова после "мертвого времени").
,

Я попробую оба решения. сначала я использовал ацп на nodemcu. но для этого в nodemcu отсутствовали капли. поэтому, чтобы использовать прерывание, я должен использовать компаратор., @CHETAN NIRADWAR

Сим, сын, я могу отключить прерывание в isr. но как повторно включить его, не останавливая основной цикл, потому что проверка условия завершения времени ожидания не позволит выполнять другие действия? Я не могу написать код для этого, который вы можете разработать., @CHETAN NIRADWAR