Определение мгновенной скорости счетчика жидкости типа YF-S

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
Аватара пользователя
ivanpost
Сержант
Сообщения: 142
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Контактная информация:

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение ivanpost »

Уважаемые знатоки! У меня в системе несколько счетчиков, поэтому аппаратный счетчик не подходит, но и счет всех импульсов не нужен, именно МГНОВЕННАЯ СКОРОСТЬ, которую буду оценивать 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
Сержант
Сообщения: 142
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Контактная информация:

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение ivanpost »

Ура!
Проще оказалось разобраться в стандартной C-команде и функции чем написать свой блок!
Немножко улучшил код из начального примера   теперь ловит не только HIGH но и LOW и не допустит частичного чтения полупериода датчика.
Также уменьшено максимальное время считывания - ни у одного из датчиков линейки оно не больше 140 милисекунд.
Учтено и то, что датчик холла делает полный оборот в котором 50% -LOW и 50% -HIGH.

Так что если кому нужен CODE  блок - он в аттаче.    Не знаю, общей библиотеки он заслуживает или нет.    Но меряет точно и быстро.
возможно стоит сразу добавить делитель, и выводить в литрах, но он у разных датчиков сильно разный и китайцы толи его безбожно врут, то ли не понятно как считается
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось ivanpost 12 окт 2017, 21:44, всего редактировалось 1 раз.
Аватара пользователя
ivanpost
Сержант
Сообщения: 142
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Контактная информация:

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение ivanpost »

Таблица с ардуиновскими датчиками потока
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
ivanpost
Сержант
Сообщения: 142
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Контактная информация:

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение ivanpost »

Все таки целесообразнее оказалось сделать собственно мгновенную скорость.
Обращаю внимание - у меня в милилитрах в секунду.  Кому необходимо - можно изменить множители.
Коэффициенты для основных датчиков с Али - в описании блока.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
thrash
Рядовой
Сообщения: 12
Зарегистрирован: 18 ноя 2017, 02:46
Откуда: Lebedyan

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение thrash »

ivanpost, дружище, а не мог бы ты прикрутить к счётчику 8928070.ubi ещё один выход? На котором будет вестись отсчёт количества литров (миллилитров) во Float. Буду очень признателен.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение AlexCrane »

thrash, Для чего float?

Попробуй
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
thrash
Рядовой
Сообщения: 12
Зарегистрирован: 18 ноя 2017, 02:46
Откуда: Lebedyan

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение thrash »

Float для того, чтобы на экране отобразилось дробное число.
У меня датчик даёт 450 импульсов на литр или 1000 мл. Счётчик считает в импульсах , масштабирует в мл к выдаёт float значение, которое я разделю на 100 и получу 1,0 литров.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение pan »

блоком деления раздели целое цисло на флоат и получишь нужный масштаб уже во флоат
thrash
Рядовой
Сообщения: 12
Зарегистрирован: 18 ноя 2017, 02:46
Откуда: Lebedyan

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение thrash »

Не работает блок

if (digitalRead(pinSensor) == HIGH)
{varPls=pulseIn(pinSensor, LOW, 100000)/5;} // Считываем длительность следующего LOW, но не дольше 0,14 сек
else
{varPls=pulseIn(pinSensor, HIGH, 100000)/5;} // Считываем длительность следующего HIGH, но не дольше 0,14 сек

if(varPls)
{
SpdSensorF=100000000/(varPls*PulseRatio);
SpdSensor= SpdSensorF;
} // Если длительность импульса считана, то рассчитываем скорость потока воды: Q = 1000000/(15L) л/мин
else {SpdSensor=0;} // Если длительность импульса не считана, то считаем что скорость потока воды = 0 л/мин

чёт тут напутано с переменными. Я, к сожалению не силён в с++, но вижу что переменная SpdSensorF что то не то считает.
Аватара пользователя
ivanpost
Сержант
Сообщения: 142
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Контактная информация:

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение ivanpost »

А это мой блок? Что то не совсем похож... Может первая версия вгрузилась... Мой нормально считает на всех датчиках YF... Такие блоки использую.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18 ноя 2015, 22:42
Откуда: Близко к Ставрополю
Имя: Евгений

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение JonyBest »

Доброго дня! Что то не могу разобраться. Можно пример как пользоваться блоками Мгновенная_скорость_потока_датчика_YF и Длительность_импульса_датчика_потока_YF
Аватара пользователя
dizzyy
Капитан
Сообщения: 752
Зарегистрирован: 24 ноя 2017, 16:25
Откуда: Червоноград
Имя: Марьян

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение dizzyy »

нужно больше описания в блоки по выходам
и наверное нужен будет блок для чтения импульсов , для YF-S201 получилось вообще 370 импульсов..
vlad
Лейтенант
Сообщения: 398
Зарегистрирован: 11 сен 2015, 11:50
Откуда: Казань

Определение мгновенной скорости счетчика жидкости типа YF-S

Сообщение vlad »

кто может пояснить по блокам? Кто использовал?
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость