Датчик расхода жидкости

glass_001
Offline
Зарегистрирован: 12.12.2015

  Здравствуйте! В программировании я новичок. Пытаюсь подружить вот этот датчик с ардуино нано

    Мне помогли и предоставили вот этот скетч:

 

/*
YF-S201 Hall Effect Water Flow Meter / Sensor
 
Read Water Flow Meter and output reading in litres/hour
 
*/
 
volatile int flow_frequency; // Measures flow meter pulses
unsigned char flowmeter = 2; // Flow Meter Pin number
unsigned long currentTime;
unsigned long cloopTime;
 
void flow () // Interruot function
flow_frequency++;
 
void setup()
pinMode(flowmeter, INPUT);
Serial.begin(115200); 
attachInterrupt(0, flow, RISING); // Setup Interrupt 
sei(); // Enable interrupts 
currentTime = millis();
cloopTime = currentTime;
 
void loop () 
{
currentTime = millis();
// Every second, calculate and print litres/hour
if(currentTime >= (cloopTime + 60000))
cloopTime = currentTime; // Updates cloopTime
// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min. (Results in +/- 3% range)
Serial.println(flow_frequency); // Отправить количество импульсов
flow_frequency = 0; // Обнулить счётчик
 
}
}
 
    Подсоединил всё и сделал три замера, при разных напорах, при заполнении ёмкости в 6 литров, получаю разницу в 22 %, хотя продавец утверждает что погрешность 10 %.
    По одной рекомендации вставил 14 Ком (по рекомендации было 10 Ком, но под рукой не оказалось) в провод данных и те же замеры дают погрешность в 17 %. Есть подозрение что сам датчик имеет большую погрешность, чем заявлено, но меня смущает что в скетче присутсвует упоминание литры в час и литры в минуту, хотя мне нужно лишь количество импульсов.
    Поскольку сам ничего не понимаю, прошу мнение знающих людей. Всё ли правильно в этом скетче?
vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Смотрите в инструкции у Вас пишут 1-литр = 516-импульсов, Значит Вам надо взять то количество импульсов которое натикало (в Вашем случае это flow_frequency) и разделить на 516 чтобы получить количество литров а если Вы залили точное количество литров, поделили и получилось число больше или меньше ожидаемого результата то подправте делитель (не 516 а скажем 502 или 530) чтобы получить правильный результат. Все это называеться КАЛИБРОВКОЙ.

uragan
Offline
Зарегистрирован: 23.02.2015

В рабочем диапазоне замеряли? Если нет - ошибка больше,

glass_001
Offline
Зарегистрирован: 12.12.2015

   Спасибо за подсказку, но это всё мне понятно. Только нет смысла узнавать количество литров, пока есть 3 разных результата по импульсам на 3-х разных напорах. Сначала разброс был 22%, потом, после вставки резистора, стал 17%. Если я получу, при разных напорах, результаты с разбросом в 10%, тогда уже можно приступить к калибровке. Вопрос в том, правильно ли скетч считывает импульсы и критично ли то что резистор 14 Ком а не 10 Ком или, может быть, наоборот, надо 20 Ком?

glass_001
Offline
Зарегистрирован: 12.12.2015

uragan пишет:

В рабочем диапазоне замеряли? Если нет - ошибка больше,

Как понять, в рабочем?

uragan
Offline
Зарегистрирован: 23.02.2015

В характеристиках написано : рабочий диапазон 1-30 л/мин.

glass_001
Offline
Зарегистрирован: 12.12.2015

  Все замеры проводил с тарой 6 литров (что было под рукой). Замый медленный напор воды - 6 литров за 2,5 минуты, самый быстрый - 6 литров за 20 секунд, то есть 2,4 л/мин - 18 л/мин.

uragan
Offline
Зарегистрирован: 23.02.2015

Счетчик же импульсы посылает. Как число импульсов может от слпротивления зависит? 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

У Вас вкоде счетчик сбрасуется в 0 каждую минуту не зависимо от того идет счет или нет(тоесть Вам нужно залить 6 литров Ва залили 3 литра а счетчик сбросился) отсюда и неверные показания. Выход - вместо автоматического сбрса поставить кнопку на сброс

glass_001
Offline
Зарегистрирован: 12.12.2015

uragan пишет:

Счетчик же импульсы посылает. Как число импульсов может от слпротивления зависит? 

Я не знаю, зависит или нет. Мне порекомендовали так сделать, вот я и сделал. После этого с 22% снизилось до 17%. Возможно это связано не с этим.

glass_001
Offline
Зарегистрирован: 12.12.2015

vosara пишет:

У Вас вкоде счетчик сбрасуется в 0 каждую минуту не зависимо от того идет счет или нет(тоесть Вам нужно залить 6 литров Ва залили 3 литра а счетчик сбросился) отсюда и неверные показания. Выход - вместо автоматического сбрса поставить кнопку на сброс

Перед тем как сбросить, он отправляет данные в ком. Я сумировал все показания, а для замеров с высоким напором, время меньше минуты, соответственно там только одно число.

Radjah
Offline
Зарегистрирован: 06.08.2014

vosara пишет:

Все это называеться КАЛИБРОВКОЙ.

На самом деле тарировка.

А точность показаний еще может и от давления зависеть.

uragan
Offline
Зарегистрирован: 23.02.2015

Radjah пишет:

vosara пишет:

Все это называеться КАЛИБРОВКОЙ.

На самом деле тарировка.

А точность показаний еще может и от давления зависеть.

Для жидкости скорее всего нет.

Radjah
Offline
Зарегистрирован: 06.08.2014

Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.

glass_001
Offline
Зарегистрирован: 12.12.2015

Radjah пишет:

Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.

  То есть при заявленом отклонении в 10%, 22% это нормально при разных напорах?

Radjah
Offline
Зарегистрирован: 06.08.2014

Для точного измерения расхода надо строить тарировочную таблицу: объём на импульс от давления. С определенного значения давления жидкости на входе это значение будет постоянным.

Более или менее точно можно измерить установившийся процесс, т.е. когда жидкость течет с одной скоростью и напором, а не "запустил отсчет - вылил ведро - остановил отсчет".

В идеале надо на выходе подпор ставить, чтобы какое-то минимальное давление держать. Такие проточные датчики - штука очень неточная. Даже с гидромоторами разбег хороший получается.

uragan
Offline
Зарегистрирован: 23.02.2015

Radjah пишет:

Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.

Это не зависимость от давления. Вы расход меняете. От давления если расход постоянный, а давление разное. Можно подпором на выходе поиграть. Жидкость не сжимаема. Если давление большое , может корпус раздуть, сечения мзмениться, тогда будет зависеть,

achuser
Offline
Зарегистрирован: 02.03.2013

Попытался подключить данный датчик через прерывания, и вот что интересно - ардуина ловит на 2 пин помехи, при подключении 20 см проводка наводки ловит чуть ли не с 1 метра, стоит лишь махнуть рукой. Поэтому подключать датчик даже смысла нет. Кто-то сталкивался с подобным? К плате подключены были еще 1602 и RTC. 

rkit
Offline
Зарегистрирован: 23.11.2016

Сталкивался всякий, кто полез подключать датчик, не разобравшись даже с кнопкой. Это подсказка.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Поттяшку внешнюю поставь, и лови FALLING фронт, тогда работает как надо 

achuser
Offline
Зарегистрирован: 02.03.2013

rkit пишет:
Сталкивался всякий, кто полез подключать датчик, не разобравшись даже с кнопкой. Это подсказка.

Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.

*****

По FALLING и отлавливаю...

Ребят, вот коль уж находите время и желание давать ответы в темах, давайте их коротко и прямо :)  Чем порождать дальнейшие вопросы и писанину.

Что конкретно требуется? Подтянуть 10 кОм между 2 пином и землей?

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

achuser пишет:

rkit пишет:
Сталкивался всякий, кто полез подключать датчик, не разобравшись даже с кнопкой. Это подсказка.

Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.

Мы тут - читаем, тут - не читаем, а тут - рыбу заворачиваем?

Вы всерьез считаете, что никто так до сих пор не смог разобраться с кнопкой?

"куча подключений с результатами работы" как раз только у тех, кто разобрался с кнопкой. 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

achuser пишет:

 Подтянуть 10 кОм между 2 пином и землей?

коль ты FALLING ловишь, в чём смысл подтяжки к земле?  К плюсу надо тянуть, чюдо. 

achuser
Offline
Зарегистрирован: 02.03.2013

Спасибо за информацию.

пока прописал pinMode  как  INPUT_PULLUP, вроде работает.

 

achuser
Offline
Зарегистрирован: 02.03.2013

andriano пишет:

achuser пишет:

rkit пишет:
Сталкивался всякий, кто полез подключать датчик, не разобравшись даже с кнопкой. Это подсказка.

Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.

Мы тут - читаем, тут - не читаем, а тут - рыбу заворачиваем?

Вы всерьез считаете, что никто так до сих пор не смог разобраться с кнопкой?

"куча подключений с результатами работы" как раз только у тех, кто разобрался с кнопкой. 

 

я ничего не считаю, а лишь указываю на то, что данные методы подключения датчика основывались на информации из сети, в которой приведены как скетчи, так и фото - видео работы датчика, а так же схема подключения, и не в одном из них не было про подтяжку и т.п. Так что уж извините, с прерываниями пришлось впервые столкнуться, кто ж знал, что с ардуины можно датчик индуктивности собрать столь мощный :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

achuser пишет:

пока прописал pinMode  как  INPUT_PULLUP, вроде работает.

Это надо было сделать задолго ДО написания любых вопросов на форуме.