Skip to content

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

@McMax

Description

@McMax

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].

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions