Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Przy więcej niż 10 pomiarach do uśredniania PMS program szaleje #173

Open
McMax opened this issue Nov 18, 2023 · 0 comments
Open

Przy więcej niż 10 pomiarach do uśredniania PMS program szaleje #173

McMax opened this issue Nov 18, 2023 · 0 comments

Comments

@McMax
Copy link

McMax commented Nov 18, 2023

Cześć!
W moim przypadku (ESP32866, BME280, PMS7003), ale chyba nie tylko w moim, jest problem związany z tym, że jak chce się przy PMSie ustawić uśrednianie po więcej niż 10 pomiarach to dzieją się dziwne rzeczy. Przy pierwszej serii pomiarowej pomiar 11 zawsze jest błędny, a potem licznik pomiarów (zmienna iPM) wariuje. W moim przypadku po wartości 9, wyskakuje do losowej wartości z przedziału 5-7 i potem się zapętla. Nigdy nie przekracza 9. Potem w tym fragmencie:

if (++iPM == sensorsSettings.numerOfMeasurements) {
    averagePM();
    iPM = 0;
  }

program nie wykrywa, że zmierzono ustawioną liczbę pomiarów i nie wykonuje uśredniania. A jak nie wykonuje uśredniania to nie wystawia ostatecznych wyników.

Wygląda na to, że jest to związane z tym, że tablica pmMeasurements ma na twardo ustawiony rozmiar 10. Po testowej zmianie na np. static unsigned short pmMeasurements[30][3]; i ustawieniu 13 pomiarów, wszystko działa dobrze. Nie wiem czy lepiej tutaj ustawić na twardo większy rozmiar tablicy, czy może w jakiś sposób sparametryzować jej rozmiar, a może po prostu ustawić na stronie konfiguracyjnej ogranicznik dla liczby pomiarów. Pozostawiam to do rozważenia. :)

Jeszcze dorzucę jedną rzecz. Wydaje mi się, że poniższa linia w funkcji takeNormalnPMMeasurements jest błędna:
if (pmMeasurements[iPM][2] < 0 || pmMeasurements[iPM][1] > 3000)
W sensie, że drugi warunek pmMeasurements[iPM][1] > 3000 powinien mieć indeks [2], a nie [1].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant