как да калибрирам разходомера


Отговор 1:

Ще добавя към добрия отговор на Джок. Когато измервате потоците, ще искате да ориентирате разходомера по същия начин, по който ще се използва. Трябва също да инсталирате тръбопроводи или маркучи, подобни на начина, по който ще го използвате. не искате просто просто да свържете маркуч към него и да го оставите да изтича в кофа. Това използва устройството като дюза и вие въвеждате куп или ненужни грешки в системата.

Този разходомер връща импулс на приблизително 2,25 ml. Това означава, че имате избор между броене на импулси за период от време или време между импулсите.

Погледнах ви кода, който имате поне при грешка в него 1 литър = 0,001 мл, а не 0,0001 мл. Имате допълнително 0 след десетичната запетая в .000225. Би трябвало да е .00225. Всъщност щеше да е по-лесно да се чете, ако беше написано 0,00225.

На този ред

резба.Timer (1, milliliterRate) .start ()

изглежда се опитвате да извикате функция рекурсивно, тъй като milliliterRate е името на функцията, от която я извиквате. Мисля, че ако изпълнявате това много дълго, ще получите някаква грешка в стека.

Нямам Raspberry Pi в себе си, за да ви тествам кода, но от това, което мога да проследя от него, не мисля, че дори ще се изпълнява, без да хвърля грешки при изпълнението. Изглежда, че е ненужно объркано и сложно. По принцип искате

1) запишете часа.

2) започнете да броите импулси

3) след като изтече достатъчно време, спрете да броите импулсите

4) конвертирайте импулсите в скорост на потока.

5) нулирайте всички стойности

6) повторете

Другият вариант е:

  1. откриване на пулс
  2. запишете времето на пулса.
  3. открийте следващия импулс
  4. запишете това време
  5. извадете втория път от първия.
  6. Преобразувайте времето за обем в обем за време.

Ако използвате втората опция, ще ви трябват пъти с точност до микросекунди. Има много опции за време, таймер и часовник и ще трябва да проуча как работят.

За да калибрирате това, което ще направите, е да установите постоянен поток през вашия разходомер и след това да направите куп измервания при този поток. Бих ги запазил във файл, за да мога да направя някои статистически данни за тях и да видя колко последователен е измервателният уред. Бих направил това за поне 5 различни дебита между минималния и максималния дебит, които очаквахте. Ако температурата на течността ще се промени с течение на времето, тогава ще я повторите за различни температури. Бих експортирал файла от малината и бих го изобразил, за да видя колко гладки са данните. Ако не беше достатъчно добро за вашата употреба, щях да се изкуша да го съчетая с най-вероятно уравнение на мощността. Уравнението най-вероятно ще бъде под формата на V = (aNV ^ b) (cT ^ d), където V е обемният дебит, NV е номиналният обемен дебит, T е температурата в абсолютен мащаб и a, b, c, d са константи. Ако не можете да получите уравнение, което да се побере, както Джок предлага, трябва да отидете с таблица за търсене.

Редактирано, за да добавите отговори към оригиналния коментар на постери.

Първо нека да определим какви са изискванията за време. Спецификациите на този разходомер дават диапазон от 1 до 30 литра в минута и 2,25 ml на импулс. При най-ниския поток от 1 L / min ще получавате 1 / 0,0225 импулса в минута, което е 444,444 импулса / min. или 7.407 импулса в секунда. Вземането на реципрочното от това означава, че получавате импулс на всеки 135 милисекунди. При 30 L / min съответните числа са 13 333,3 импулса / мин, 222 222 импулса / сек или импулс на всеки 4,5 милисекунди.

Следващият въпрос е какво се има предвид под времето в компютър или по-важното за какво се отнася часовникът в компютър. В компютър обикновено имате минимум два часовника. Човек се нарича часовник в реално време, който следи кога е. За това си мислим, когато казваме часовник. Например, на 21 август 2016 г. е 14:30 ч. Начинът, по който компютрите следят това, е под формата на толкова много секунди от нулева точка, наречена епоха. Разделителната способност на това зависи най-вече от хардуера и операционната система. Също така Raspberry Pi няма реален часовник, който поддържа времето, когато е изключен. Това означава, че ако въведете дата в подсказка на черупката, или ще получите датата, която малиновият пи е смятал, че е била, когато е била изключена, или ще започне отначало от епохата. Не съм сигурен кое ще направи. За достъп до тази информация в Python използваме функцията time.time ()

Сега нека опитаме time.time () и да видим какво прави. Аз съм на Windows 7 на лаптоп с AMD E-450 и версията на Python, която използвам, е 2.7.10 може би 2.7.11. Ако ще стартирате това в 3.x, каквото и да е, ще трябва да повторите оператора за печат

Пуснах тази програма няколко пъти.

#Time демоот времето за импортиранеза i в обхват (10): t1 = време () t2 = време () отпечатайте "t1 =% .5f t2 =% .5f разлика =% .5f"% (t1, t2, t2-t1)

Това е първото ми бягане

t1 = 1471806162.63900 t2 = 1471806162.63900 разлика = 0.00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 разлика = 0,00000

t1 = 1471806162.64100 t2 = 1471806162.64100 разлика = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 разлика = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 разлика = 0.00000

и това е моят трети пробег

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 разлика = 0.00000

Забележете две неща, time.time () връща времето само с точност от милисекунда и че при първото изпълнение са необходими 2 милисекунди, за да стартирате този прост цикъл, а при третия цикъл са нужни по-малко от милисекунда, за да стартирате третия.

Добре колко значителна е една милисекунда? Разгледайте случая на протичане на 30 L / min и ние отделяме времето от импулс до импулс. Получавате импулс на всеки 4,5 милисекунди, но нямате разделителната способност за измерване на 4,5 милисекунди, което означава, че разликата във времето ще се появи или като 4 ms или 5 ms. Сега разстоянието между импулсите от 5 ms ще се преведе на 27 L / min, а импулсът от 4 ms ще се преведе на 33 L / m. При една 1 L / min грешката ще бъде много по-добра, ако времето настъпи при 134 милисекунди вместо 135 ms, потокът ще бъде преведен на 1.007 L / min. Това все още се доближава до 1% грешка в допълнение към съществуващите несъответствия със самото устройство.

Вместо това опитайте да преброите импулсите за 1 секунда. Ами при 222,22 импулса в секунда бихте записали или 222 или 223 импулса за един втори път. Първият случай 29,97 L / min, а вторият ви дава 30,1 L / min, което е много по-добре. Изчакайте опитайте другия край 1 L / m е 7,4 импулса в секунда, така че на секундата ще преброите 7 импулса, което се изчислява на 0,945 L / m, 6% грешка. Повече от всичко между 0,945 и 1,19 L / min ще се измерва като 0,945 L / m.

Разбира се, можете да отидете на time.clock () за голямо подобрение

от часовника за импортиране на времеза i в обхват (10): t1 = часовник () t2 = часовник () отпечатайте "t1 =% .8f t2 =% .8f разлика =% .8f"% (t1, t2, t2-t1)

Което дава това:

t1 = 1169.33820822 t2 = 1169.33821009 разлика = 0.00000187

t1 = 1169,33907113 t2 = 1169,33907300 разлика = 0,00000187

t1 = 1169.33943197 t2 = 1169.33943322 разлика = 0.00000124

t1 = 1169.33961862 t2 = 1169.33961924 разлика = 0.00000062

t1 = 1169.33969141 t2 = 1169.33969203 разлика = 0.00000062

t1 = 1169.33975113 t2 = 1169.33975175 разлика = 0.00000062

t1 = 1169.33980961 t2 = 1169.33980961 разлика = 0.00000000

t1 = 1169.33987120 t2 = 1169.33987183 разлика = 0.00000062

t1 = 1169.33993466 t2 = 1169.33993466 разлика = 0.00000000

t1 = 1169.33998817 t2 = 1169.33998879 разлика = 0.00000062

Днес следобед тази програма дава отклонение от около 1 микросекунда. Снощи тя работеше по-близо до 5 микросекунди. Всичко зависи от това какво още се случва в системата.

Сега нека поговорим за устройството.

Някои от източниците на грешки са:

1) Размерите на не са перфектни. Например, ако устройството е по-голямо и в трите измерения, тогава имате 1,01 ^ 3 = 1,03 или около 3%. Грешка от 1% в размера е около диаметъра на човешки косъм. Това се влияе от температурата. Не знам от какво е направено нещото, но при найлон над 50 ° C ефектът ще бъде около 1%.

Има и друг проблем. Предполагам, че има някакво изтичане около колелото на греблото. Това изтичане ще зависи от вискозитета на течността. Вискозитетът на течността е силно зависим от температурата. При ниски дебити това изтичане е по-голяма част от общия обем, отколкото при по-високи дебити.

Други проблеми, с които ще се сблъскате. Ако улавяте течността в кофа, как ще измервате обема. Ако сте имали голям градуиран цилиндър, те са с точност до около 1%. Ако се опитвате да измерите 30 L обем с 1 L градуиран цилиндър, ще добавите грешка при всяко измерване. Трябва да извадя моята геодезическа книга, за да изчисля колко трябва да се добави всяко измерване. Вероятно най-точният инструмент, който имате у дома, е рулетка. Сега предполагаме, че къде да построите кубична дървена кутия на 300 мм отстрани и сте направили всичко, което трябва да направите, за да предотвратите огъване на стените. Това ще побере 27L. Въпреки това, вместо 300 мм, това всъщност беше 301 мм отстрани. Той ще побере 27.3L, което е 1% грешка. За да се изгради дървена кутия с точност до mm, ще е необходим опитен производител на шкафове.

Моята прогноза е, че ще се борите с това, за да получите постоянно грешка под 5%.

Питате за маса. Да кажем, че за да калибрирате това, решавате да броите кликванията за 10 секунди. Вие настройвате системата си и я настройвате да тече 1L / min. След многократни опити вие определяте, че с 1L / min изтичане получавате 70 импулса за 10 секунди. Повтаряте това за 5 L / min и така нататък до 30L / min. Сега имате таблица, която изглежда нещо подобно.

Импулси на потока

(L / min) (брой)

1 70

5 360

10 740

15 1120

20 1500

25 1900

30 2450

Сега имате два варианта, които можете да опитате да приспособите уравнение към тези данни. Умишлено направих това нелинейно в краищата и линейно в центъра. Първо, червата ми ми казва, че това може да е начинът, по който работи сензорът, а също и защото ще направи трудното приспособяване на кривата към него. Можете да го разделите и да го направите в три уравнения, например едно за импулси между 70 и 740, друго за импулси между 740 и 1500 и трето за импулси между 1500 и 2450. Ще трябва да подберете кривите достатъчно добре, за да да има странни резултати в близост до преходите. Можете също така просто да работите с масата. Да кажем, че броим 99 импулса за 10 секунди. Отивам до масата и определям, че 99 е между 70 и 360. там имам 29 импулса повече, отколкото за 1 L / min. Ако използвам линейна интерполация, тогава 360 - 70 е 290. 29/290 е 0,1, така че съм една десета от пътя от 1 L / min до 5 L / min. За да изчисля, че правя 5 - 1 = 4, така че в крайна сметка получавам 1,4 L / min.

Голяма част от това се свежда до това, което правите и до колко точност наистина се нуждаете.


Отговор 2:

Флуидните разходомери са мечка за калибриране под 10% толеранс на този, който използвате с вашия Raspberry Pi. Това е така, защото те зависят от неща като температура, вискозитет, число на Рейнолд, скорост и т.н.

Но тъй като използвате компютър, за да го контролирате, може да сте в състояние да постигнете 1%.

Има 2 начина за „калибриране“ на нещо. Нормалното е да го тествате според стандартите и да удостоверите, че е в рамките на спецификациите на производителя или специфичен индустриален стандарт.

Но по-добрият и опростен начин за калибриране е да се измери действителната мярка на нещо и да се изчисли действителните грешки. Това трябва да се направи тук.

По принцип поставете произволни контроли за скоростта на потока в диапазона на вашия интерес и вижте какво прави. Изхвърлете потока в контейнер и измерете колко за колко време. След това увеличете дебита през интересуващата ви област. Таблирайте действителните скорости на потока за командите за действителна скорост.

Ще искате да повторите ден или нещо по-късно, поне веднъж. Бих предложил 3 пробега, за да можете да изчислите стандартното отклонение на несигурността на вашата система. това също ще ви каже дали можете да продължите да използвате разходомера от $ 10 или се нуждаете от по-добър.

Трябва да отбележите температурата и да повторите тестовете при друга температура.

И ако го използвате с различни течности, повторете и с тях.

Тогава е просто въпрос на поставяне на таблиците във вашия код и екстраполиране на точките между тях, а може би и на входа на температурния сензор. Човек би прочел честотата на пулса, проверил температурата, погледнал записите в таблицата, които рамкират четенето, и екстраполирал изходна стойност.

Не мога да ви помогна с вашия код - мина твърде дълго, откакто използвах сглобяването.

късмет.


Отговор 3:

Здравейте,

Преминавайки директно към въпроса ви, няма да кажа, че е невъзможно, но няма да ви е лесно да го направите у дома, тъй като ще трябва да го калибрирате „срещу“ по-точен и точен разходомер.

Теоретично трябва да ги монтирате последователно и след това да регулирате изхода на вашия разходомер, докато съвпадне с резултата от еталонния разходомер.

Това е процедурата, която трябва да се направи, или на калибрираща платформа, или у дома.

Надявам се да съм ви бил от помощ, но въпреки това оставам на ваше разположение междувременно за всичко, с което мога да ви помогна.

Най-сърдечни поздрави от Португалия / Дейвид


Отговор 4:

имате нужда от устройство, което действително да измерва потока, който сам по себе си е калибриран с по-висок толеранс, аз веднъж поставях под въпрос скоростта на потока по 1 ″ тръба, така че се завих в клапан и го подадох в маслена барабан (45g) и го настроих , отне 17 минути, за да се запълни, така че дебитът ми беше 45/17 галона в минута, което беше твърде бавно, така че имах две възможности, да увелича налягането или да увелича размера на тръбата, водоснабдителната компания нямаше да увеличи налягането, затова инсталирах в линейна помпа, но тя създаде вакуум във всмукателната система, така че трябваше да увелича размера на тръбата с пробег от 150 метра до 1 1/2 ″, не евтино успях да я увелича до 45/4 gpm