ilość pobranej cieczy

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
karoln3
Posty: 6
Rejestracja: 24 sty 2019 15:41
Wersja środowiska: LabVIEW 2017

ilość pobranej cieczy

Post autor: karoln3 »

Cześć,
Poszukuję pomocy przy obliczeniu ilości pobranej wody przez pralkę, w tym celu mam zamontowany przepływomierz fs300a, z którego udało mi się odczytać przepływ wody w litrach na sekundę. Niestety nie wiem jak zrobić licznik/stoper coś co dało by mi czas przez jaki woda jest pobierana w wyniku czego będę mógł policzyć ilość pobranej wody. do obliczenia przepływu w l/s stworzyłem case z warunkiem obliczania ze amplituda sygnału jest >2 ponieważ w innym przypadku występują szumy sygnału z przepływomierza.
przepływ.JPG
Próbowałem korzystać z bloczka Timing and Transition Measurements zeby obliczyć czas trwania pulsu ale pojawia się błąd.
Dodatkowo chciałbym zrobić tak aby wartość pobranej wody w jakiś sposób "przechować" i dodać do niej kolejną w momencie gdy znowu będzie pobierana woda przez urządzenie (np w czasie płukania) oraz żeby te wartości narysować na wykresie wyglądającym w podobie do tego
woda_pobr.JPG
woda_pobr.JPG (32.39 KiB) Przejrzano 8184 razy
Z góry dzięki
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: ilość pobranej cieczy

Post autor: micard »

Widzę, że projekt pralka się rozwija :)

Czujnik fs300a można z dobrym przybliżeniem potraktować jako impulsowy licznik. Każde zbocze narastające to ~3ml. Zliczając ilość impulsów i mnożąc ją przez 3ml dostaniesz całkowitą objętość.

Jeśli chcesz się trzymać częstotliwości - to sygnał trzeba scałkować. Najprościej to zrealizować przez pomnożenie wartości sygnału przez dT i sumowanie wyników (wyniki można sumować i przetrzymywać w rejestrach przesuwnych : shift registers)


Tak na marginesie - Czujniki typu fs300a mogą mieć spory błąd przy niskich przepływach - nie polecałbym ich stosowania do wykrywania powolnego wycieku.
karoln3
Posty: 6
Rejestracja: 24 sty 2019 15:41
Wersja środowiska: LabVIEW 2017

Re: ilość pobranej cieczy

Post autor: karoln3 »

Czy podpowiesz jak zrobić zliczanie impulsów? Z tego co próbowałem robić czyli podłączać sygnał do wejścia ctr0 do karty i testując w DAQmx uzyskuje bardzo duże wartości rzędu 30000 po kilku sekundach oraz nawet w momencie gdy nie przepływa przez niego woda impulsy są zliczane. Próbowałem też korzystać z przykładowych programów w LV ale wyniki uzyskuje takie same.
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: ilość pobranej cieczy

Post autor: micard »

A Jaką masz kartę?
Czy wyjście czujnika podciągnąłeś do zasilania jak pokazane np tutaj:
https://www.openhacks.com/uploadsproduc ... -_wiki.pdf
karoln3
Posty: 6
Rejestracja: 24 sty 2019 15:41
Wersja środowiska: LabVIEW 2017

Re: ilość pobranej cieczy

Post autor: karoln3 »

Karta to NI USB-6351,tutaj manual: http://www.ni.com/pdf/manuals/374591d.pdf
tak wyjście czujnika mam podciągnięte do zasilania tak jak w linku.
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Re: ilość pobranej cieczy

Post autor: micard »

W takim razie podpięcie pod wejście cnt i właściwe skonfigurowanie wejścia powinno załatwić sprawę ;/ Sprawdź, czy to nie jakieś zakłócenia wyzwalają ci wejście cnt.

Inną opcją jest próbkowanie przynajmniej 4 razy szybciej niż spodziewana częstotliwość impulsów przy maksymalnym przepływie. T.j. zakładając impulsy 50% - jeśli jest inaczej, to dobrą zasadą jest dobranie częstości próbkowania tak, aby na stan trwający krócej przypadały przynajmniej 4 próbki.

Podpinasz do wejścia cyfrowego i wtedy możesz zliczać zbocza.
karoln3
Posty: 6
Rejestracja: 24 sty 2019 15:41
Wersja środowiska: LabVIEW 2017

Re: ilość pobranej cieczy

Post autor: karoln3 »

Cześć,
niestety nie udało się zrobić tego przy pomocy zbudowanych liczników, jak bym nie próbował konfigurować lub podłączać sygnału zawsze zliczały się bardzo duże wartości. Problem rozwiązany przez podłączenie sygnału do wejścia analogowego następnie przekonwertowanie Dynamic Data na tablicę i w pętli zrobienie porównania wartości kolejnych próbek wraz z progiem wyzwalania i działa idealnie.

Pozdrawiam
ODPOWIEDZ