Zanim...
Zanim...



Polskie Forum FPV

Forum modelarzy i pilotów FPV
Dzisiaj jest wtorek 10 gru 2019, 09:19


Strefa czasowa UTC+1godz.




Nowy temat Odpowiedz w temacie  [ Posty: 10 ] 
Autor Wiadomość
Post: sobota 27 lip 2019, 17:31 
Offline

Rejestracja: poniedziałek 12 lip 2010, 11:51
Posty: 1850
Lokalizacja: Kraków
Temat trochę od czapy, wymaga większego opisu...

Potrzebuje pod Arduino sprawdzić czy sygnał, który obserwuje ustabilizował się.
Niech to będzie np. ciśnienie. Albo cokolwiek co mierzymy - napięcie, to bez znaczenia,
pomiary co 1s, sygnał możesz lekko szumieć więc może być pojedynczy "pik" od czapy.
Zmiany sygnału powolne...

Muszę stwierdzić, czy mierzony sygnał ustabilizował się i mieści w zadanym odchyleniu.

Ponieważ sygnał może szumieć i nie jest zbyt szybki, nie mogę polegać na pojedynczym odczycie aktualnym.
Pomyślałem, że obliczę sobie średnią z np. ostatnich dziesięciu pomiarów. OK, to mi da "odszumioną" wartość.
Opóźnienie o 10 pomiarów w tył mi nie przeszkadza.

Teraz czy się ustabilizował. Znowu policzę sobie średnia z np. stu ostatnich pomiarów i porównam oba
wyniki. Jeśli różnica mieści się w zadanych widełkach uznaję, że sygnał jest stabilny i wszyscy szczęśliwi :)

Problem jest taki, że tych sygnałów mam z dziesięć, wszystkie float (od bidy int) - jak zrobię dwie tablice
do uśredniania to pewnie mi pamięci w procku braknie ;)

Może macie lepsze pomysły jak to zrobić? :)

PS.

Wpadłem na drobiazg.

Mogę nie zbierać 100 próbek sygnału dłuższego, tylko dziesięć średnich sygnału "aktualnego" i liczyć z nich średnią.
Czyli liczyć średnia z aktualnej średniej i 9 "starych" średnich. To mocno zmniejszy ilość danych.

Może macie lepsze pomysły?

q


Na górę
 Wyświetl profil  
 
Post: sobota 27 lip 2019, 17:58 
Offline
Awatar użytkownika

Rejestracja: piątek 02 mar 2012, 12:47
Posty: 736
Lokalizacja: Warszawa
Zamiast zbierać te dane, dodawaj je do zmiennej czyli po każdym pomiarze zwiększaj jej wartość i po 100 pomiarach lub po określonym czasie podziel ją przez ilość pomiarów

_________________
Pozdrawiam Darek
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]


Na górę
 Wyświetl profil  
 
Post: sobota 27 lip 2019, 19:01 
Offline

Rejestracja: poniedziałek 12 lip 2010, 11:51
Posty: 1850
Lokalizacja: Kraków
Tylko, że w takim wypadku nie będę miał średniej z ostatnich 100 pomiarów, czy np. 10 minut,
tylko od początku zliczania...

q


Na górę
 Wyświetl profil  
 
Post: sobota 27 lip 2019, 19:12 
Offline
Awatar użytkownika

Rejestracja: piątek 02 mar 2012, 12:47
Posty: 736
Lokalizacja: Warszawa
:shock: Po 100 pomiarach lub po jakimś czasie "kasujesz" zmienną i liczysz od początku

_________________
Pozdrawiam Darek
NAZA MLITE , Sky Cruiser 2400 GEMINI 3200]


Na górę
 Wyświetl profil  
 
Post: sobota 27 lip 2019, 19:21 
Offline

Rejestracja: poniedziałek 12 lip 2010, 11:51
Posty: 1850
Lokalizacja: Kraków
Albo nie rozumiem, albo nic to nie da :)

Ja potrzebuję mieć zawsze:
- średnią z np. 100 pomiarów,
- średnią z np. 10 pomiarów.

q


Na górę
 Wyświetl profil  
 
Post: niedziela 28 lip 2019, 07:01 
Offline
Awatar użytkownika

Rejestracja: niedziela 23 cze 2013, 17:03
Posty: 312
Lokalizacja: Kraków
W takim wypadku możesz stosować rejestr przesuwny lub tablice zmiennych liczbowych.
Każda nowa próbka zawsze jest zapisywana do tej samej komórki w tabeli, ale przed zapisem przesuwasz ostatnia próbkę na przed ostatnie miejsce itd. W ten sposób zawsze będziesz miał ta sama liczbę próbek z ostatniego wycinka czasu. Próbka która znajdzie się poza rozmiarem tablicy zostaje skasowana.


Wysłane z iPhone za pomocą Tapatalk

_________________
Bartek
Szpecu od kudlenia :)


Na górę
 Wyświetl profil  
 
Post: niedziela 28 lip 2019, 07:56 
Offline

Rejestracja: sobota 20 lip 2019, 09:46
Posty: 30
Ustal granice tolerancji aby wyeliminowac bledny pomiar, zastosuj srednia ciagniona aby zminimalizowac wplyw anomalii na wynik. Kazdy pomiar bedzie mial wplyw na wynik, ale nie tak drastyczny jak po prostu korzystanie tylko z ostatniego pomiaru.

Jako granice tolerancji proponuje ustalic srednia + zakladany akceptowalny % bledu. Wyedy granica nie bedzie sztywna, ale skutecznie wyeliminujesz pojedyncze skoki.


Na górę
 Wyświetl profil  
 
Post: niedziela 28 lip 2019, 09:47 
Offline

Rejestracja: poniedziałek 12 lip 2010, 11:51
Posty: 1850
Lokalizacja: Kraków
No tak <> myślę to zrobić - tablicę z przesuwaniem zawartości, wartości "od czapy" będę wycinał.
Właśnie zasiadam do pisania, tylko jeszcze kawa :)

PS. Czy można jakoś jednym poleceniem zsumować elementy tablicy jednowymiarowej w C++
czy też muszę robić petlę i podawać po jednym elemencie?

q


Na górę
 Wyświetl profil  
 
Post: niedziela 28 lip 2019, 12:54 
Offline

Rejestracja: poniedziałek 12 lip 2010, 11:51
Posty: 1850
Lokalizacja: Kraków
Taaa.

Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?


Kod:
    for (int x=99; x>=1; x--)
      {
        t1SR100[x]=t1SR100[x-1]; t2SR100[x]=t2SR100[x-1]; tGSR100[x]=tGSR100[x-1];
      }


A to samo zapisane tak, działa poprawnie?

Kod:
    for (int x=99; x>=1; x--)
      {
        t1SR100[x]=t1SR100[x-1];
      }

    for (int x=99; x>=1; x--)
      {
        t2SR100[x]=t2SR100[x-1];
      }

    for (int x=99; x>=1; x--)
      {
        tGSR100[x]=tGSR100[x-1];
      }


Spędziłem dłuższą chwilę gapiąc się w ekran :)

q


Na górę
 Wyświetl profil  
 
Post: niedziela 28 lip 2019, 14:00 
Offline
Awatar użytkownika

Rejestracja: środa 19 mar 2014, 02:03
Posty: 7665
Lokalizacja: Polska
Jakub Jewuła pisze:
Możecie mi podpowiedzieć dlaczego w tej pętli przesuwają się tylko zapisy w trzeciej tablicy?

A po co tracic czas na przesuwanie? Jak juz raz zbierzesz x sampli biegasz z indeksem w kolko przy kazdym nowym pomiarze odejmujesz od sumy wartosc pod indeksem, zapisujesz na jego miejsce nowa wartosc i dodajesz do sumy. W ten sposob zawsze masz sume x ostatnich pomiarow.


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 10 ] 

Strefa czasowa UTC+1godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Technologię dostarcza phpBB® Forum Software © phpBB Group

Strona korzysta z plików cookie w celu realizacji usług zgodnie z . Polityką prywatności
Możesz określić warunki przechowywania lub dostępu do cookie w Twojej przeglądarce lub konfiguracji usługi.