Wyliczanie prędkości z dwóch odbiorników IR

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Mayson
Posty: 4
Rejestracja: 13 cze 2015 20:16
Wersja środowiska: LabVIEW 2012
Lokalizacja: Lublin
Kontakt:

Wyliczanie prędkości z dwóch odbiorników IR

Post autor: Mayson »

Dzień dobry,

Mój program ma za zadanie wyliczanie prędkości przejeżdżającego auta na podstawie przerywania połączeń pomiędzy dwoma nadajnikami i odbiornikami IR. Jednocześnie program ma zliczać ilość przejechanych aut. Urządzenia są podpięte pod Arduino UNO. W LAbVIEW używam LINXa do połączenia z Arduino. Program wykrywa przerwania fali podczerwonej, jednak nie wiem w jaki sposób wyliczyć czas pomiędzy przerwaniem jednej fali i drugiej aby na podstawie tego wyliczyć prędkość. W załączniku znajduje się screen mojego programu. Bardzo proszę o pomoc i sugestie.
Załączniki
licznik natezenia ruchu i predkosci.png
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Wyliczanie prędkości z dwóch odbiorników IR

Post autor: aaddaas »

W momencie wyzwolenia (czyli gdy case jest true) wrzuć Tick Count, wartość wrzuć na rejestr przesuwny, a następne wyzwolenie również rejestruj Tick Count - by na końcu odjąć wartości od siebie - masz czas przejazdu;)
PS: dodaj sobie bloczek Wait(ms), ustaw go na np 20 ms - wtedy program nie będzie zżerał Ci całego zasobu komputera.
Obrazek
Awatar użytkownika
Mayson
Posty: 4
Rejestracja: 13 cze 2015 20:16
Wersja środowiska: LabVIEW 2012
Lokalizacja: Lublin
Kontakt:

Re: Wyliczanie prędkości z dwóch odbiorników IR

Post autor: Mayson »

Próbowałem coś takiego wcześniej, jednak o ile w przypadku samego wyświetlania kolejno każdego "przejechanego pojazdu" zlicza go raz aż do kolejnego pojawienia się zmiany stanu na true, tak w przypadku czasu liczy go cały czas zarówno w true jak i false zamiast tylko w momencie pojawienia się przeszkody. Próbowałem zrobić samą bramkę składającą się jedynie z jednego nadajnika i odbiornika, który liczył by ilość przebytych pojazdów i wyświetlał je w tabeli, jednak czas jest wyświetlany ciągle tak samo jak w przypadku wcześniejszym. Załączam zdjęcie samej bramki.
Załączniki
licznik natezenia ruchuu.png
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Wyliczanie prędkości z dwóch odbiorników IR

Post autor: aaddaas »

A myślałeś o czymś takim?
Załączniki
edge.png
Obrazek
Awatar użytkownika
Mayson
Posty: 4
Rejestracja: 13 cze 2015 20:16
Wersja środowiska: LabVIEW 2012
Lokalizacja: Lublin
Kontakt:

Re: Wyliczanie prędkości z dwóch odbiorników IR

Post autor: Mayson »

Dziękuje za pomoc, faktycznie teraz jest wszystko w porządku. Spróbuje zaimplementować to rozwiązanie do pomiarów prędkości.:)
Awatar użytkownika
Mayson
Posty: 4
Rejestracja: 13 cze 2015 20:16
Wersja środowiska: LabVIEW 2012
Lokalizacja: Lublin
Kontakt:

Re: Wyliczanie prędkości z dwóch odbiorników IR

Post autor: Mayson »

Wracając do tematu liczenia prędkości, chyba strasznie coś namieszałem, nie jestem pewny, w którym miejscu powinny znajdować się obliczenia czasu przejazdu. Problem jest jeszcze taki, że w momencie kiedy pojawi się przeszkoda w pierwszej wiązce, program odczytuje czas i nie porównuje go z wartością drugiego gdyż tam stan jest ciągle w False. Gdy przeszkoda pojawi się już w drugim odbiorniku dzieje się na odwrót, i program odejmuje zmierzony czas od zera. W jaki sposób można wymusić aby program zapamiętał otrzymaną wcześniej wartość i porównał ją z następną.
Załączniki
rtdfdfgfb.png
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Wyliczanie prędkości z dwóch odbiorników IR

Post autor: aaddaas »

Możesz to zrobić w dokładnie ten sam sposób, co wcześniej: wrzucaj zmierzony czas w pierwszym case na rejestr przesuwny (tak jak czas i datę), a odczytanie zrób w drugiej pętli, tylko nie zapomnij usunąć tej wartości po odczytaniu.
Dostajesz zero, ponieważ nie masz zdefiniowanej wartości tego czasu w przypadku, gdy pierwsza pętla jest false - domyślna wartość wynosi zero, a nie poprzednia.
PS: Nie wrzucaj print screenów, tylko snippety.
Obrazek
ODPOWIEDZ