Датчик расхода жидкости
- Войдите на сайт для отправки комментариев
Сб, 12/12/2015 - 20:51
Здравствуйте! В программировании я новичок. Пытаюсь подружить вот этот датчик с ардуино нано
Мне помогли и предоставили вот этот скетч:
/*
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 %. Есть подозрение что сам датчик имеет большую погрешность, чем заявлено, но меня смущает что в скетче присутсвует упоминание литры в час и литры в минуту, хотя мне нужно лишь количество импульсов.
Поскольку сам ничего не понимаю, прошу мнение знающих людей. Всё ли правильно в этом скетче?
Смотрите в инструкции у Вас пишут 1-литр = 516-импульсов, Значит Вам надо взять то количество импульсов которое натикало (в Вашем случае это flow_frequency) и разделить на 516 чтобы получить количество литров а если Вы залили точное количество литров, поделили и получилось число больше или меньше ожидаемого результата то подправте делитель (не 516 а скажем 502 или 530) чтобы получить правильный результат. Все это называеться КАЛИБРОВКОЙ.
В рабочем диапазоне замеряли? Если нет - ошибка больше,
Спасибо за подсказку, но это всё мне понятно. Только нет смысла узнавать количество литров, пока есть 3 разных результата по импульсам на 3-х разных напорах. Сначала разброс был 22%, потом, после вставки резистора, стал 17%. Если я получу, при разных напорах, результаты с разбросом в 10%, тогда уже можно приступить к калибровке. Вопрос в том, правильно ли скетч считывает импульсы и критично ли то что резистор 14 Ком а не 10 Ком или, может быть, наоборот, надо 20 Ком?
В рабочем диапазоне замеряли? Если нет - ошибка больше,
Как понять, в рабочем?
В характеристиках написано : рабочий диапазон 1-30 л/мин.
Все замеры проводил с тарой 6 литров (что было под рукой). Замый медленный напор воды - 6 литров за 2,5 минуты, самый быстрый - 6 литров за 20 секунд, то есть 2,4 л/мин - 18 л/мин.
Счетчик же импульсы посылает. Как число импульсов может от слпротивления зависит?
У Вас вкоде счетчик сбрасуется в 0 каждую минуту не зависимо от того идет счет или нет(тоесть Вам нужно залить 6 литров Ва залили 3 литра а счетчик сбросился) отсюда и неверные показания. Выход - вместо автоматического сбрса поставить кнопку на сброс
Счетчик же импульсы посылает. Как число импульсов может от слпротивления зависит?
Я не знаю, зависит или нет. Мне порекомендовали так сделать, вот я и сделал. После этого с 22% снизилось до 17%. Возможно это связано не с этим.
У Вас вкоде счетчик сбрасуется в 0 каждую минуту не зависимо от того идет счет или нет(тоесть Вам нужно залить 6 литров Ва залили 3 литра а счетчик сбросился) отсюда и неверные показания. Выход - вместо автоматического сбрса поставить кнопку на сброс
Перед тем как сбросить, он отправляет данные в ком. Я сумировал все показания, а для замеров с высоким напором, время меньше минуты, соответственно там только одно число.
Все это называеться КАЛИБРОВКОЙ.
А точность показаний еще может и от давления зависеть.
Все это называеться КАЛИБРОВКОЙ.
А точность показаний еще может и от давления зависеть.
Для жидкости скорее всего нет.
Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.
Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.
То есть при заявленом отклонении в 10%, 22% это нормально при разных напорах?
Для точного измерения расхода надо строить тарировочную таблицу: объём на импульс от давления. С определенного значения давления жидкости на входе это значение будет постоянным.
Более или менее точно можно измерить установившийся процесс, т.е. когда жидкость течет с одной скоростью и напором, а не "запустил отсчет - вылил ведро - остановил отсчет".
В идеале надо на выходе подпор ставить, чтобы какое-то минимальное давление держать. Такие проточные датчики - штука очень неточная. Даже с гидромоторами разбег хороший получается.
Для жидкости еще как зависит. Я подобными расходомерами занимался. Через датчик можно гнать пену, можно лить небольшой струйкой. Датчик еще может сам раскручиваться при неравномерном потоке. И всё это будет считаться.
Это не зависимость от давления. Вы расход меняете. От давления если расход постоянный, а давление разное. Можно подпором на выходе поиграть. Жидкость не сжимаема. Если давление большое , может корпус раздуть, сечения мзмениться, тогда будет зависеть,
Попытался подключить данный датчик через прерывания, и вот что интересно - ардуина ловит на 2 пин помехи, при подключении 20 см проводка наводки ловит чуть ли не с 1 метра, стоит лишь махнуть рукой. Поэтому подключать датчик даже смысла нет. Кто-то сталкивался с подобным? К плате подключены были еще 1602 и RTC.
Сталкивался всякий, кто полез подключать датчик, не разобравшись даже с кнопкой. Это подсказка.
Поттяшку внешнюю поставь, и лови FALLING фронт, тогда работает как надо
Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.
*****
По FALLING и отлавливаю...
Ребят, вот коль уж находите время и желание давать ответы в темах, давайте их коротко и прямо :) Чем порождать дальнейшие вопросы и писанину.
Что конкретно требуется? Подтянуть 10 кОм между 2 пином и землей?
Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.
Вы всерьез считаете, что никто так до сих пор не смог разобраться с кнопкой?
"куча подключений с результатами работы" как раз только у тех, кто разобрался с кнопкой.
Подтянуть 10 кОм между 2 пином и землей?
коль ты FALLING ловишь, в чём смысл подтяжки к земле? К плюсу надо тянуть, чюдо.
Спасибо за информацию.
пока прописал pinMode как INPUT_PULLUP, вроде работает.
Если б всякий, то прямое подключение не работало бы ни у кого, а так в сети куча подключений датчиков с результатами их работы.
Вы всерьез считаете, что никто так до сих пор не смог разобраться с кнопкой?
"куча подключений с результатами работы" как раз только у тех, кто разобрался с кнопкой.
я ничего не считаю, а лишь указываю на то, что данные методы подключения датчика основывались на информации из сети, в которой приведены как скетчи, так и фото - видео работы датчика, а так же схема подключения, и не в одном из них не было про подтяжку и т.п. Так что уж извините, с прерываниями пришлось впервые столкнуться, кто ж знал, что с ардуины можно датчик индуктивности собрать столь мощный :)
пока прописал pinMode как INPUT_PULLUP, вроде работает.
Это надо было сделать задолго ДО написания любых вопросов на форуме.