Расходомер жидкости
- Войдите на сайт для отправки комментариев
Друзья, нуждаюсь в вашей помощи с программным кодом. Сейчас нахожусь в процессе создания аппарата по смешению напитков. Недавно пришли посылки ebay с насосами, датчиками расхода жидкости, Ардуино Мега, Уно и набором для начинающих, включающий в себя кучу сенсоров и всяких электронных мелочей. Расходомеры или датчики холла на фото ниже:

Теперь мне нужно проверить работоспособность и параметры насосов и датчиков расхода жидкости - нашел скетч специально для таких датчиков:
// reading liquid flow rate using Seeeduino and Water Flow Sensor from Seeedstudio.com // Code adapted by Charles Gantt from PC Fan RPM code written by Crenn @thebestcasescenario.com // http:/themakersworkbench.com http://thebestcasescenario.com http://seeedstudio.com volatile int NbTopsFan; //measuring the rising edges of the signal int Calc; int hallsensor = 2; //The pin location of the sensor void rpm () //This is the function that the interupt calls { NbTopsFan++; //This function measures the rising and falling edge of the hall effect sensors signal } // The setup() method runs once, when the sketch starts void setup() // { pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input Serial.begin(9600); //This is the setup function where the serial port is initialised, attachInterrupt(0, rpm, RISING); //and the interrupt is attached } // the loop() method runs over and over again, // as long as the Arduino has power void loop () { NbTopsFan = 0; //Set NbTops to 0 ready for calculations sei(); //Enables interrupts delay (1000); //Wait 1 second cli(); //Disable interrupts Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate in L/hour Serial.print (Calc, DEC); //Prints the number calculated above Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a new line }
Код взял отсюда: http://www.seeedstudio.com/wiki/index.php?title=G1/2_Water_Flow_sensor
Подключил – все работает, но выдает скорость потока (показания в литрах в час). Подскажите, пожалуйста, как подправить код, чтобы показания были в миллилитрах (или литрах), т.е. мне нужна не скорость потока, а объем жидкости после прогонки через датчик.
NbTopsFan - переменная в которую пишется кол-во импульсов с расходомера за секунду.
Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5)Q, = flow rate - формула, которая на основании кол-ва имульсов за секунду считает расход.
Сможете посчитать, сколько жидкости прошло через расходомер за секунду?
Diemon, если я правильно понимаю, нужно раделить значение calc на 3600000 (т.к. в часе 3600 секунд или 3 600 000 милисекунд) и тогда получится расход в секунду. Примерно так:
Calc = (NbTopsFan * 60 / 7.5/3600)
Но тогда нужно чтобы последнее значение складывалось каждую секунду - а это уже сложно для меня)
Для начала скажите модель вашего расходомера. Я догадываюсь, что число 7.5 это весовой коэффициент импульса, но хотелось бы уточнить.
Создайте новую числову переменную volume. и в void_loop плюсуйте в неё каждую секунду значение объема. Вот вам и общий объем. Правда это не очень правильно.
В идеале вы должны знать, сколько нужно налить жидкости, и по прерыванию сравнивать уже налитый объем с заданием, а по достижению заданного объема выключать насос. Но это пока сложно для вас, начните с малого.
Посмотри в сторону этого кода, найдешь для себя наметки под свой код или возмешь сразу этот
https://github.com/adafruit/Adafruit-Flow-Meter/blob/master/Adafruit_Flo...
spa-sam, спасибо, то что нужно - уже во всю тестирую)
Diemon, спасибо - это будет следующим шагом. Эти китайские датчики ноунэймы на них почти нет спецификации и коэффициента я не нашел. Как раз вычислением этой цифры я сейчас и занимаюсь.
тоже на почте лежит расходомер из китая, все некогда сходить )
а на фотке у вас один расходомер, а второй насос ? и что за насос ? видел в китае тока расходомеры и клапана, насосы как-то не попадались.
видел в китае тока расходомеры и клапана, насосы как-то не попадались.
Такие насосы бывают двух типов: мембранные и шестеренчатые. Первые дают приличное давление, вторые - расход. Стоят в районе $5 - $20. Шестеренчатые довольно широко применяются в качестве насосов для автомобильных омывателей стекол и фар...
Calc = (NbTopsFan * 60 / 7.5);//(Pulse frequency x 60) / 7.5Q, = flow rateа что за значение 7,50 ? количество импульсов в минуту ?
в паспорте водомера написанно написано 4380, насчитал 2966.
расходомер
http://www.dx.com/p/hs01-high-precision-flow-meter-white-black-226937#.U6x_u_4hZko
насос
http://www.dx.com/p/wt-030-sc600b-type-cooling-single-water-pump-w-speed-test-line-and-base-black-silver-12v-286964#.U6yAHv4hZko
[quote=Sosisochnik]
spa-sam, спасибо, то что нужно - уже во всю тестирую)
Diemon, спасибо - это будет следующим шагом. Эти китайские датчики ноунэймы на них почти нет спецификации и коэффициента я не нашел. Как раз вычислением этой цифры я сейчас и занимаюсь.
Добрый день. У меня такие же датчики. Получилось у Вас с показаниями? У меня не получается счетч на 2 датчика. Если возможно, полелитесь готовым скетчем. Спасибо.
Привет, найди плиз меня вконтакте vk.com /neolead
собираю такой же девайс.)
Посмотри в сторону этого кода, найдешь для себя наметки под свой код или возмешь сразу этот
https://github.com/adafruit/Adafruit-Flow-Meter/blob/master/Adafruit_Flo...
Код хороший, не получается адаптировать под 2 сетчика. Вот,что получилось:
Подключил – все работает, но выдает скорость потока (показания в литрах в час). Подскажите, пожалуйста, как подправить код, чтобы показания были в миллилитрах (или литрах), т.е. мне нужна не скорость потока, а объем жидкости после прогонки через датчик.
Ну так надо скорость умножить на время и получится
путьобъемСтесняюсь спросить, а зачем был нужен весь этот гемор с высчитыванием скорости потока(профит), если в итоге нужно посчитать сколько воды прошло через датчик? Это все= что дергать зубы через задницу! :)
Вопрос прост как 3 копейки:
У меня было так, взял электронные весы, обнулил тару, прогнал через датчик энное количество воды, чем больше тем лучше, больше точность. Посчитал количество "тиков" датчиком холла в мониторе порта, потом в переменную объёма одного тика записал количество жидкости (1 литр - 1 кг) деленное на количество тиков. Это число в прерывании на датчике холла прибавляется к счетчику литров. В дальнейшем уже в готовом устройстве сделал пункт меню калибровки датчика, где после прогона жидкости нужно было забить в окошко показатель количества шидкости, программа делает нужные вычисления, и обновляет значнеие переменной в EEPROM.
PS: Датчик потока нужно ставить перед клапаном, т.е. вход -> датчик -> клапан -> выход.
Я тоже делал проще, я не знал вообще коэффициент датчика протока на колонке Ariston Fast Evo.
Ардуиной зацпился внутрь колонки, чтоб температуру воды показывать (на колонке нет индикатора, а я по прошлой привык), ну к батарейкам зацепился - заряд измерять, ну и раз такое дело зацепился и к датчику протока, хотя и не знал делителя. В программе просто сделал измерение количества импульсов за секунду, но это мне ничего не говорило. Тогда сделал напор, чтоб показывало 100 имп в сек (просто для удоства расчёта), получил за 40 сек 3 литра при потоке 100 имп в сек, посчитал, в итоге получилось 4.5 л/мин или 1 импульс это 0.045 л/м, всё, умножаю в программе количество импульсов в секунду на 0.045 и получаю литров в минуту.