FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Среда, 18.10.2017, 21:33
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Определение мгновенной скорости счетчика жидкости типа YF-S
Определение мгновенной скорости счетчика жидкости типа YF-S
ivanpost Дата: Вторник, 10.10.2017, 19:57 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Уважаемые знатоки! У меня в системе несколько счетчиков, поэтому аппаратный счетчик не подходит, но и счет всех импульсов не нужен, именно МГНОВЕННАЯ СКОРОСТЬ, которую буду оценивать 1-2 раза в секунду.
Поэтому подходит способ определения длительности между импульсами с приостановкой выполнения скетча.

Диапазон частоты входных импульсов - от 8 до 600 ГЦ.

Помогите сделать блок, вероятно на CODE, который бы ждал, ловил этот импульс, и мерил длительность до следующего выдавая интервал между ними в мкс.

Вот здесь парни сделали, но добавили делитель, который не нужен:

const uint8_t  pinSensor = 2;                     // Определяем № вывода Arduino, к которому подключён датчик расхода воды
      uint32_t varPulse;                               // Объявляем переменную для хранения длительности импульсов с датчика
      uint8_t  varResult;                              // Объявляем переменную для хранения рассчитанной скорости потока воды
                                                               //
void setup(){                                            //
     pinMode(pinSensor, INPUT);                  // Конфигурируем вывод к которому подключён датчик, как вход
}                                                              //
                                                               //
void loop(){                                              //
    varPulse=pulseIn(pinSensor, HIGH, 200000);                       // Считываем длительность импульса, но не дольше 0,2 сек
    if(varPulse){varResult=uint8_t(1000000/(15*varPulse));}    // Если длительность импульса считана, то рассчитываем скорость потока воды: Q = 1000000/(15L) л/мин
    else        {varResult=0;}                                                    // Если длительность импульса не считана, то считаем что скорость потока воды = 0 л/мин
}
 

И такой вопрос: можно ли делать такой блок на FBD  сделав "выполнение по условию" и "выполнять в цикле пока" ?  Успеет ли он померить такой импульс?

Добавлено (10.10.2017, 19:57)
---------------------------------------------
Уточнение!    Вход в процедуру может прийтись на время, когда датчик уже "включен" и "ждать включения" - слишком долго.  Для экономии процессорного времени имеет смысл считать смены состояния датчика и определять время между первой и третьей сменой состояния!

 
ivanpost Дата: Четверг, 12.10.2017, 21:42 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Ура!
Проще оказалось разобраться в стандартной C-команде и функции чем написать свой блок!
Немножко улучшил код из начального примера   теперь ловит не только HIGH но и LOW и не допустит частичного чтения полупериода датчика.
Также уменьшено максимальное время считывания - ни у одного из датчиков линейки оно не больше 140 милисекунд.
Учтено и то, что датчик холла делает полный оборот в котором 50% -LOW и 50% -HIGH.

Так что если кому нужен CODE  блок - он в аттаче.    Не знаю, общей библиотеки он заслуживает или нет.    Но меряет точно и быстро.
возможно стоит сразу добавить делитель, и выводить в литрах, но он у разных датчиков сильно разный и китайцы толи его безбожно врут, то ли не понятно как считается
Прикрепления: ____YF-CODE-.ubi(16Kb)


Сообщение отредактировал ivanpost - Четверг, 12.10.2017, 21:44
 
ivanpost Дата: Четверг, 12.10.2017, 22:46 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Таблица с ардуиновскими датчиками потока
Прикрепления: 2718296.jpg(107Kb)
 
ivanpost Дата: Воскресенье, 15.10.2017, 19:14 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Все таки целесообразнее оказалось сделать собственно мгновенную скорость.
Обращаю внимание - у меня в милилитрах в секунду.  Кому необходимо - можно изменить множители.
Коэффициенты для основных датчиков с Али - в описании блока.
Прикрепления: 8928070.ubi(25Kb)
 
Форум » Основной » Спросить у знатоков » Определение мгновенной скорости счетчика жидкости типа YF-S
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика