В программе прерывания считал импульсы, затем за определенное время рассчитывал скорость потока
Я тоже сначала пристроил датчик на вход внешнего прерывания, считал количество щелчков, умножал на коэффициент, получал неправдивые данные. Да и динамическое отображение при этом хромало из-за частых, хоть и кратковременных, прерываний.
Сделал иначе. Переключил датчик с входа прерывания на вход счетчика, считаю сейчас количество щелчков за пол-секунды, по полученному значению частоты вычисляю поправочный коэффициент, и по нему количество пробежавшей за эти 0,5 секунды жидкости, и, соответственно, скорость. Прерывания раз в 500 миллисекунд не напрягают, так как они совпадают с моментом изменения показаний.
Так мой интервал времени почти никогда не кратен периоду следования импульсов, при одинаковой скорости можно получать разное количество импульсов, и показания скорости при ровном потоке будут скакать. Чтобы устранить этот эффект, я вывожу на индикатор среднюю скорость за 10 секунд за 20 замеров. Разумеется, сделал защиту от нулевых показаний, чтобы, во-первых, как только поток остановился, ноль показывался на индикаторе сразу, а не через 10 секунд постепенного снижения.
И при старте потока, пока не набралось 20 значений, на индикатор выводится не округленное значение (оно будет занижено из-за кучи нулевых замеров), а фактическое значение замера за последние 0,5 секунды. Но при резком изменении потока, достоверные значения новой скорости потока начинают отображаться через 10 секунд. Объем при этом вычисляется корректно.
Сверка количества воды по весам и по моему счетчику показала отличные результаты даже с потоком 9 литров в час...
Я выкладывал все результаты...
Можно подключить датчик к входу захвата таймера (capture) и считать время между двумя импульсами, сразу получая период (и частоту), но мне этот способ показался слишком навороченным.
ржаная брага более густая субстанция по сравнению с водой
и она должна более стабильно крутить пропеллер.
smsvip, вопрос к тебе. Какой коэффициент ты используешь для пересчетов - сколько щелчков на литр, или сколько грамм воды на щелчок?
У меня получается, что в среднем 1 щелчок в секунду примерно соответствует одному литру в час, то есть 1 литр - это 3600 импульсов датчика. Или 0,2778 мл на каждый импульс. Но эта цифра требует коррекции в зависимости от скорости потока. Хочу узнать как у тебя чтобы узнать разброс по разным датчикам для установки диапазона подстройки параметров.