kako kalibrirati mjerač protoka


Odgovor 1:

Dat ću Jockovom lijepom odgovoru. Kada mjerite protoke, željet ćete orijentirati mjerač protoka na isti način na koji će se koristiti. Također biste trebali instalirati cjevovod ili crijevo slično onome kako ćete ga koristiti. ne želite samo spojiti crijevo i pustiti ga da naleti na kantu. Ovo koristi uređaj kao mlaznicu, a vi u sustav unosite hrpu ili nepotrebne pogreške.

Ovaj mjerač protoka vraća puls na otprilike 2,25 ml. To znači da imate mogućnost brojenja impulsa po vremenskom razdoblju ili vremena između impulsa.

Bacio sam pogled na vaš kod koji imate barem na pogrešci u njemu 1 litra = 0,001 ml, a ne 0,0001 ml. Imate dodatnih 0 nakon decimalne točke u .000225. Trebao bi biti .00225. Zapravo bi bilo lakše čitati da je napisano 0,00225.

Na ovoj liniji

navoja.Timer (1, milliliterRate) .start ()

čini se da pokušavate rekurzivno pozvati funkciju jer je milliliterRate naziv funkcije iz koje je pozivate. Mislim da ako ovako dugo trčite, dobit ćete neku vrstu pogreške u hrpi.

Nemam Raspberry Pi u svom posjedu da bih testirao vaš kôd, ali prema onome što mogu slijediti, mislim da se neće pokretati bez pogrešaka u vremenu izvođenja. Čini se da je nepotrebno zamršeno i složeno. U osnovi želite

1) zabilježite vrijeme.

2) početi brojati impulse

3) nakon što prođe dovoljno vremena zaustavite brojanje impulsa

4) pretvoriti impulse u brzinu protoka.

5) poništi sve vrijednosti

6) ponoviti

Druga opcija je:

  1. otkriti puls
  2. zabilježite vrijeme pulsa.
  3. otkriti sljedeći puls
  4. zabilježite to vrijeme
  5. oduzmi drugi put od prvog.
  6. Pretvori vrijeme po volumenu u volumen po vremenu.

Ako koristite drugu opciju, trebat će vam vremena točna do mikrosekundi. Puno je mogućnosti vremena, vremena i sata te bih morao istražiti kako funkcioniraju.

Kalibriranje onoga što ćete učiniti je uspostavljanje stalnog protoka kroz vaš mjerač protoka, a zatim izvršite hrpu mjerenja na tom protoku. Spremio bih ih u datoteku kako bih mogao napraviti neke statističke podatke o njima i vidjeti koliko je mjerač dosljedan. To bih učinio za najmanje 5 različitih brzina protoka između minimalnog i maksimalnog protoka koje ste očekivali. Ako će se temperatura tekućine s vremenom mijenjati, ponovit ćete je za različite temperature. Izvozio bih datoteku iz maline i grafički je prikazao kako bih vidio koliko su podaci glatki. Da nije dovoljno dobro za vašu upotrebu, bio bih u iskušenju da mu prilagodim najvjerojatniju jednadžbu snage. Jednadžba bi najvjerojatnije imala oblik V = (aNV ^ b) (cT ^ d) gdje je V volumenski protok, NV nominalni volumen protoka, T temperatura na apsolutnoj skali i a, b, c, d su konstante. Ako ne možete dobiti jednadžbu koja bi odgovarala tada, kako Jock sugerira, morate potražiti tablicu.

Uređeno za dodavanje odgovora na originalni komentar plakata.

Prvo odredimo koji su vremenski zahtjevi. Specifikacije ovog mjerača protoka daju raspon od 1 do 30 litara u minuti i 2,25 ml po impulsu. Pri najnižem protoku od 1 L / min primat ćete 1 / 0,0225 impulsa u minuti što je 444,444 impulsa / min. ili 7.407 impulsa u sekundi. Uzimajući uzajamnu vrijednost ovoga, puls dobivate svake 135 milisekundi. Pri 30 L / min odgovarajući brojevi su 13.333,3 impulsa / min, 222.222 impulsa / sek ili puls svakih 4,5 milisekundi.

Sljedeće je pitanje što znači vrijeme u računalu ili još važnije na što se sat odnosi u računalu. U računalu obično imate najmanje dva sata. Jedan se naziva sat u stvarnom vremenu koji prati kada je. Na to mislimo kad kažemo sat. Na primjer, 21. kolovoza 2016. je 14:30. Način na koji računala to prate je u obliku toliko sekundi od nulte točke koja se naziva epoha. To rješavanje ovisi uglavnom o hardveru i operacijskom sustavu. Također Raspberry Pi nema pravi sat koji održava vrijeme kada se isključuje. To znači da ako upišete datum u ljusku, dobit ćete ili datum na kojem je malina pi mislila da je to bio kad je isključen ili će početi ispočetka iz epohe. Nisam siguran što će učiniti. Za pristup tim informacijama u Pythonu koristimo funkciju time.time ()

Ajmo sada probati time.time () i vidjeti što radi. Ja sam na sustavu Windows 7 na prijenosnom računalu s AMD-om E-450, a verzija Pythona koju koristim je 2.7.10 možda 2.7.11. Ako ćete ovo pokrenuti u 3.x, morat ćete ponoviti ispis

Vodio sam ovaj program nekoliko puta.

#Time demood vremena uvoza vrijemeza i u rasponu (10): t1 = vrijeme () t2 = vrijeme () ispis "t1 =% .5f t2 =% .5f razlika =% .5f"% (t1, t2, t2-t1)

Ovo je moje prvo trčanje

t1 = 1471806162.63900 t2 = 1471806162.63900 razlika = 0.00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162,64000 t2 = 1471806162,64000 razlika = 0,00000

t1 = 1471806162.64100 t2 = 1471806162.64100 razlika = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 razlika = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 razlika = 0.00000

i ovo mi je treći put

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

t1 = 1471806244.52200 t2 = 1471806244.52200 razlika = 0,00000

Primijetite dvije stvari, time.time () vraća vrijeme samo s preciznošću od milisekunde i da je u prvom izvođenju bilo potrebno 2 milisekunde da se pokrene ova jednostavna petlja, a u trećem je trebalo manje od milisekunde da se pokrene treći.

OK, koliko je značajna milisekunda? Ispitajte slučaj protoka od 30 L / min i uzimamo vrijeme od pulsa do pulsa. Puls dobivate svake 4,5 milisekunde, ali nemate razlučivost za mjerenje 4,5 milisekundi, što znači da će vremenska razlika proći kao 4 ms ili 5 ms. Sada će razmak impulsa od 5 ms prevesti na 27 L / min, a puls od 4 ms prevest će se na 33 L / m. Pri jednoj 1 L / min pogreška će biti puno bolja ako vrijeme dođe 134 milisekunde umjesto 135 ms, protok će se prevesti na 1.007 L / min. Ovo se još uvijek približava pogrešci od 1%, pored svih postojećih nedosljednosti sa samim uređajem.

Umjesto toga pokušajte brojati impulse 1 sekundu. Pa pri 222,22 pulsa u sekundi zabilježili biste 222 ili 223 impulsa u jednoj sekundi. Prvi slučaj iznosi 29,97 L / min, a drugi vam daje 30,1 L / min što je puno bolje. Pričekajte, pokušajte s drugim krajem 1 L / m iznosi 7,4 impulsa u sekundi, tako da ćete preko sekunde izbrojati 7 impulsa što izračunava 0,945 L / m, 6% pogreške. Više od svega između 0,945 i 1,19 L / min mjerit će se kao 0,945 L / m.

Možete naravno otići na time.clock () za veliko poboljšanje

od vremena uvoza sataza i u rasponu (10): t1 = sat () t2 = sat () ispis "t1 =% .8f t2 =% .8f razlika =% .8f"% (t1, t2, t2-t1)

Što daje ovo:

t1 = 1169,33820822 t2 = 1169,33821009 razlika = 0,00000187

t1 = 1169,33907113 t2 = 1169,33907300 razlika = 0,00000187

t1 = 1169,33943197 t2 = 1169,33943322 razlika = 0,00000124

t1 = 1169,33961862 t2 = 1169,33961924 razlika = 0,00000062

t1 = 1169,33969141 t2 = 1169,33969203 razlika = 0,00000062

t1 = 1169,33975113 t2 = 1169,33975175 razlika = 0,00000062

t1 = 1169,33980961 t2 = 1169,33980961 razlika = 0,00000000

t1 = 1169,33987120 t2 = 1169,33987183 razlika = 0,00000062

t1 = 1169,33993466 t2 = 1169,33993466 razlika = 0,00000000

t1 = 1169,33998817 t2 = 1169,33998879 razlika = 0,00000062

Danas popodne ovaj program daje varijancu od oko 1 mikrosekunde. Sinoć je trčao bliže 5 mikrosekundi. Sve ovisi o tome što se još događa u sustavu.

Sada ćemo razgovarati o uređaju.

Neki od izvora pogrešaka su:

1) Dimenzije nisu savršene. Na primjer, ako je uređaj veći u sve tri dimenzije, tada imate 1,01 ^ 3 = 1,03 ili oko 3%. Pogreška u veličini od 1% približno je promjera ljudske dlake. Na to utječe temperatura. Ne znam od čega je stvar napravljena, ali za najlon iznad 50 ° C učinak će biti oko 1%.

Postoji još jedan problem. Pretpostavljam da postoji neko curenje oko kotača. Ovo istjecanje ovisit će o viskoznosti tekućine. Viskoznost tekućine jako ovisi o temperaturi. Za male brzine protoka ovo propuštanje veći je udio u ukupnom volumenu nego kod većih brzina.

Ostali problemi na koje ćete naići. Ako hvatate tekućinu u kantu, kako ćete izmjeriti volumen. Ako ste imali veliki graduirani cilindar, oni su točni oko 1%. Ako pokušavate izmjeriti volumen od 30 L s 1 L graduiranim cilindrom, dodavat ćete pogrešku pri svakom mjerenju. Morao bih izvaditi svoju geodetsku knjigu kako bih izračunao koliko se procjenjuje da će dodati svako mjerenje. Vjerojatno najtočniji alat koji imate kod kuće je traka. Sada pretpostavimo da trebate sagraditi kubičnu drvenu kutiju od 300 mm sa strane i učinili ste sve što je trebalo da biste spriječili savijanje stranica. Ovo će držati 27L. Međutim, umjesto 300 mm, to je zapravo bilo 301 mm sa strane. Sadržalo bi 27,3 L, što je pogreška od 1%. Za izradu drvene kutije do preciznosti mm potreban je vješt izrađivač kabineta.

Moje je predviđanje da ćete se boriti s tim da biste stalno dobivali pogreške ispod 5%.

Pitate za stolom. Recimo da za kalibraciju ovoga odlučite brojati klikove 10 sekundi. Postavljate svoj sustav i prilagođavate mu protok od 1L / min. Nakon ponovljenih pokusa utvrđujete da s protokom od 1L / min dobijete 70 impulsa u 10 sekundi. To ponavljate 5 L / min i tako dalje sve do 30L / min. Sada imate tablicu koja izgleda otprilike ovako.

Impulsi protoka

(L / min) (broj)

1 70

5 360

10 740

15 1120

20 1500

25. 1900

30 2450

Sada imate dva izbora koja možete pokušati prilagoditi jednadžbi ovim podacima. Namjerno sam to učinio nelinearnim na krajevima i linearnim u središtu. Prvo mi crijeva kažu da je to možda način na koji senzor djeluje, a također i zato što će mu teško prilagoditi krivulju. Mogli biste ga rastaviti i pretvoriti u tri jednadžbe, na primjer jednu za impulsne između 70 i 740, drugu za impulsne između 740 i 1500 i treću za impulsne između 1500 i 2450. Morat ćete uklopiti krivulje dovoljno dobro da imati čudne rezultate u blizini prijelaza. Također možete samo raditi sa stolom. Recimo da izbrojim 99 impulsa u 10 sekundi. Odlazim do stola i utvrđujem da je 99 između 70 i 360. tamo imam 29 impulsa više nego što bih imao za 1 L / min. Ako koristim linearnu interpolaciju, tada je 360 ​​- 70 290. 29/290 je 0,1, tako da sam desetina puta od 1 L / min do 5 L / min. Da izračunam da radim 5 - 1 = 4, tako da na kraju imam 1,4 L / min.

Mnogo se toga svodi na to što radite i koliko vam točnosti zapravo treba.


Odgovor 2:

Tekući mjerači protoka su medvjedi za kalibraciju ispod tolerancije od 10% od one koju koristite s Raspberry Pi. To je zato što ovise o stvarima poput temperature, viskoznosti, Reynoldova broja, brzine itd.

No budući da za upravljanje njime koristite računalo, možda ćete uspjeti postići 1%.

Postoje 2 načina za "kalibriranje" nečega. Uobičajeno je testirati ga prema standardima i potvrditi da je u skladu sa specifikacijama proizvođača ili određenim industrijskim standardom.

Ali bolji i jednostavniji način kalibracije je mjerenje stvarne mjere nečega i tabeliranje stvarnih pogrešaka. To je ovdje stvar.

U osnovi stavite bilo koje proizvoljne kontrole protoka u opsegu koji vas zanimaju i pogledajte što radi. Ispustite protok u posudu i izmjerite koliko u koliko vremena. Zatim povećajte protok kroz područje koje vas zanima. Tablicirajte stvarne brzine protoka za naredbe stvarne brzine.

Morat ćete ponoviti dan ili tako kasnije, barem jednom. Predložio bih 3 izvođenja kako biste mogli izračunati standardno odstupanje nesigurnosti vašeg sustava. to će vam također reći možete li i dalje koristiti mjerač protoka od 10 dolara ili vam treba bolji.

Trebali biste zabilježiti temperaturu i ponoviti testove na drugoj temperaturi.

A ako ga koristite s različitim tekućinama, također ponovite s njima.

Tada je samo pitanje stavljanja tablica u kod i ekstrapoliranje točaka između, a možda i unosa temperaturnog senzora. Čitalo bi se puls, provjeravalo temp, tražilo unose u tablicu koji uokviruju očitanje i ekstrapoliralo izlaznu vrijednost.

Ne mogu vam pomoći s vašim kodom - prošlo je previše vremena otkako sam koristio sklop.

sretno.


Odgovor 3:

Zdravo,

Idući izravno na vaše pitanje, neću reći da je to nemoguće, ali neće vam biti lako to učiniti kod kuće jer ćete ga morati kalibrirati "nasuprot" preciznijem i preciznijem mjeraču protoka.

Teoretski ćete ih obje montirati u seriju, a zatim prilagoditi izlaz vašeg mjerača protoka dok se ne podudara s rezultatom referentnog mjerača protoka.

To je postupak koji treba obaviti bilo na kalibracijskoj platformi ili kod kuće.

Nadam se da sam vam bio od pomoći, ali bez obzira na to, u međuvremenu vam stojim na raspolaganju u svemu što vam mogu pomoći.

Najljepši pozdrav iz Portugala / David


Odgovor 4:

potreban vam je uređaj za stvarno mjerenje protoka koji je sam po sebi kalibriran na veću toleranciju, jednom sam ispitivao brzinu protoka kroz cijev od 1 so, pa sam nataknuo ventil i ubacio ga u bubanj za ulje (45g) i namjestio ga , trebalo je 17 minuta da se napunim, tako da mi je protok iznosio 45/17 litara u minuti, što je bilo presporo, pa sam imao dvije mogućnosti, povećati tlak ili povećati veličinu cijevi, vodovod nije povećao tlak pa sam instalirao u linijskoj pumpi, ali je stvorio vakuum u usisavanju, pa sam morao povećati veličinu cijevi 150 metara na 1 1/2 ″, a nije jeftino uspio je povećati na 45/4 gpm