logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

lm35 i mega8, programowa stabilizacja pomiaru temperatury.

bubu 04 Sty 2007 12:22 1709 8
REKLAMA
  • #1 3403573
    bubu
    Poziom 12  
    Posty: 89
    Pomógł: 1
    Ocena: 1
    Witam

    Jak programowo w bascomie utabilizowac pomiar temp? Chodzi o to ze wyswietlam temperature z dokladnoscia do jednosci. Czasami przy zmianach miedzy np 24 i 25 st. temperatura skacze (wyswietlane sa szybko na zmiane 24 i 25 po kilka razy). Ma ktorys z kolegow pomysl? Probowalem zaokraglac usredniac itp ale efekty mizerne chociaz lepiej jest niz bylo.

    Pozdrawiam.
  • REKLAMA
  • #2 3403775
    wicy
    Poziom 22  
    Posty: 670
    Pomógł: 30
    Ocena: 111
    A nie wystarczy po prostu rzadsze wyświetlanie niż pomiar? Np. co 5-10 pomiarów wyświetlenie. Może nie wyeliminuje to migotania, ale na pewno je w znacznym stopniu je ograniczy.
  • #3 3404918
    jony15
    Poziom 25  
    Posty: 604
    Pomógł: 68
    Ocena: 74
    ewentualnie pomiar temperatury np: co 1 sekundę
  • REKLAMA
  • #4 3404977
    jose_fsoak
    Poziom 1  
    Posty: 1
    Jakakolwiek średnia z kilku pomiarów. Albo ruchoma (koniecznosć tablicowania pomiarów), albo 10 kilka pomiarów w pętli, obliczenie średniej i dopiero wtedy wyrzucenia na wyswietlacz. Ale "stabilbniejszym" rozwiazaniem jest średnia ruchoma.
  • #5 3408122
    bubu
    Poziom 12  
    Posty: 89
    Pomógł: 1
    Ocena: 1
    srednia ruchoma jest troche "pamieciozerna". :) Ktos ma jeszcze jakis pomysl ?
  • REKLAMA
  • #6 3408577
    cyberdar
    Poziom 31  
    Posty: 1465
    Pomógł: 161
    Ocena: 73
    Witam

    Zrobisz sobie tablicę powiedzmy 10-cio elementową i w pętli będziesz przesuwał wyniki o jedną pozycję. Po 9 krokach na pierwszą pozycję wpisujesz wynik bieżącego pomiaru i uśredniasz wszystko. Dosłownie kilka !!! linijek kodu jeśli chodzi o przesuwanie w tablicy.
    Przy takiej tablicy (z autopsji) będziesz miał wątpliwości czy układ jeszcze działa. W zupełności wystarczy 5 elementów.

    --
    pozdrawiam
  • REKLAMA
  • #7 3408744
    bubu
    Poziom 12  
    Posty: 89
    Pomógł: 1
    Ocena: 1
    cyberdar napisał:
    Witam

    Zrobisz sobie tablicę powiedzmy 10-cio elementową i w pętli będziesz przesuwał wyniki o jedną pozycję. Po 9 krokach na pierwszą pozycję wpisujesz wynik bieżącego pomiaru i uśredniasz wszystko. Dosłownie kilka !!! linijek kodu jeśli chodzi o przesuwanie w tablicy.
    Przy takiej tablicy (z autopsji) będziesz miał wątpliwości czy układ jeszcze działa. W zupełności wystarczy 5 elementów.

    --
    pozdrawiam


    Moglbys daj jakis algorytm sredniej ruchomej ew. kod w bascomie ?

    Ze statystyki nie jestem dobry a z tego co znalazlem w necie trudno sie polapac.
  • #8 3414634
    Michał_z1
    Poziom 16  
    Posty: 190
    Pomógł: 13
    Ocena: 2
    Witam.
    Zrób małe opóźnienie typu WAIT, lepiej niż robić tablice, ograniczysz tym ilość kodu, a temat będzie zamknięty.
    pozdrawiam.
  • #9 3415738
    greg_matrix
    Poziom 17  
    Posty: 163
    Pomógł: 28
    Ocena: 3
    Tego typu zjawisko eleminuje się przez wprowadzenie HISTEREZY.

    Powiedzmy, że masz temperaturę 24,5 stopnia- jest jasne, że choć byś liczył najsprytniejsze średnie to wynik i tak w pewnych przypadkach będzie skakał... Nie tędy droga.

    HISTEREZA (przykład):
    Powiedzmy, że aktuanie wyświetlasz 25
    zmiana na wyświetlanie 24 nastąpi kiedy temperatura < 24,4
    zmiana na wyświetlanie 26 nastąpi kiedy temperatura > 25,6

    Powiedzmy, że zmieniło się nam wyświetlanie na 24 (czyli T<24,4).
    Zmiana z powrotem na 25 nastąpi dopiero po wzroście temp do t>24,6.
    Czyli o ile temperatura w rzeczywistości nie skacze sama od siebie, to efekt mrugania zniknie.

    WARTOŚĆ HISTEREZY
    ustalamy tak, żeby nie była ani za mała ani za duża. Za mała nic nie da. Za duża będzie "zamrażała" wynik.

    W praktyce histerezę ustawia się na wartość minimalna, która eliminuje już niechciane zjawisko. Z reguły jest to rzędu kilkadziesiąt % z minimalnej wyświetlanej podziałki. W tym przykłanie szerokość histerezy to 0,2 stopnia, czyli 20% najmniejszej podziałki.

    Powinno pomóc.

Podsumowanie tematu

✨ Dyskusja dotyczy programowej stabilizacji pomiaru temperatury z czujnika LM35 przy użyciu mikrokontrolera Atmega8 i języka Bascom. Problemem jest migotanie wyświetlanej temperatury przy zmianach wartości o jedną jednostkę (np. 24 i 25°C). Proponowane rozwiązania obejmują: rzadsze wyświetlanie pomiarów (np. co 5-10 odczytów), wykonywanie pomiarów z określoną częstotliwością (np. co sekundę), stosowanie średniej ruchomej z kilku pomiarów (tablicowanie wyników i uśrednianie), a także wprowadzenie histerezy, która eliminuje szybkie przełączanie się wartości wyświetlanej poprzez ustalenie progów zmiany temperatury z marginesem. Średnia ruchoma wymaga pamięci na tablicę wyników i przesuwania danych, co może być nieco zasobożerne, natomiast histereza jest efektywnym sposobem na stabilizację wyświetlanej wartości bez nadmiernego komplikowania kodu. Propozycje zawierają także proste opóźnienia (WAIT) jako minimalne rozwiązanie ograniczające migotanie. Dyskusja podkreśla, że dobór szerokości histerezy powinien być minimalny, ale wystarczający do eliminacji niepożądanego efektu skakania temperatury.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA