Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino Nano oversampling wartości pomiaru GYML8511

05 Mar 2019 19:49 210 7
  • Poziom 22  
    Witam.
    Od jakiegoś czasu walczę z płytką Nano i sensorem UV.
    Początkowo była sobie płytka z Uno i moduł GYML8511.
    Jakiś prosty kod ściągnięty nawet nie wiem skąd "zaskoczył" i była frajda bo sypało wynikami na "monitor serial"
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jednak apetyt rośnie w miarę jedzenia a wygodnictwo zwycięża rozsądek-niewygodnie robi się "pomiary" targając w mało dostępne miejsca laptopa jako wyświetlacz. Udało mi się kupić wyświetlacz działający na I2C i podłączyć do Nano, z lekko zmodyfikowanym programem pojawił się wynik na ekraniku, a ja byłem cały w "skowronkach". Do czasu. Zauważyłem pewien feler- wynik wyprowadzany na wyświetlacz "waha" się o kilka jednostek ostatniego pola odczytowego między 0.05 a -0.03 a jest to nieprawdopodobne przy braku światła UV kierowanego na czujnik.Jest to jakiś "szum" pomiarowy z którym pewnie niewiele da się zrobić.Można pewnie "trochę oszukać" uśredniając wyprowadzony wynik z dziesięciu kolejnych pomiarów. Mnie zadowalałaby taka opcja, ponieważ nie zamierzam mierzyć sygnałów "szybkozmiennych". Niestety ale nie mam pojęcia jak to zrobić, oraz nie posiadam umiejętności programowania w C lub czymkolwiek przypominającym ten język.
    To iż udało mi się zmodyfikować "skecz" by działało z wyświetlaczem uważam za "cud równy trafieniu szóstki w lotto".
    Pozostawiam w nadziei, iż ktoś sobie może kiedyś skorzysta, lub znajdzie się ktoś kto "pochyli się nad tym
    wynalazkiem" i zmodyfikuje tak by ''owersamplingował''.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Co się przy tym nakląłem to moje, na szczęście na moim zestawie działa.
  • PCBway
  • PCBway
  • Poziom 22  
    kaczakat napisał:
    W kodzie masz już "oversampling",....
    Jak chcesz więcej próbek to możesz zamienić byte numberOfReadings = 8; na większą liczbę.

    Dziękuję, dla Ciebie zauważyć to, było banałem, a ja strawiłbym mnóstwo czasu na bezskuteczne przeszukiwanie.
    Teraz dobrać "metalową puszkę na wymiar" i można dokonać montażu końcowego. Będzie przyrząd nie kupiony na Ali lub ten sam ale drożej na Alle...niewymowne.
    Pozostaje kwestia "skalibrowania zakresu" ale to już problem na potem - Google moim przewodnikiem.
    Ostatecznie będę musiał skorzystać z jakiegoś lab. zajmującego się "przyrządami optycznymi".
    Jeszcze raz dziękuję.
    Edycja.
    Dokonałem paru pomiarów i wychodzi mi iż optymalny jest zakres "32" bo zmniejsza szumy "przyzerowe" a nie wpływa na jakieś radykalne zwolnienie dla większych wartości w okolicach 1mW/cm².
    Wprowadzenie wartości "64" nie poprawia zasadniczo nic zauważalnego a wartości powyżej "80" powodują "wywalenie się" programu (na wyświetlacz pojawia się wartość np. 32,77 mW/cm² co jest bzdurą przy nieoświetleniu sensora diodą Led UV).
    oversampl..32.xls Download (36.5 kB)
    owersampli.. 64.xls Download (28 kB)
    Gdzie można "poczytać" jak to jest z tymi wartościami "oversamplingu" i ich wpływie na przetwarzanie wartości wejściowej ?
    Jakby jeszcze w naszym narzeczu było bo google translate czasami fajne bajki tworzy ...
  • Poziom 31  
    To "oversampling" nie bez powodu było w cudzysłowie, bo tak naprawdę korzystasz z narastającej średniej, czy czegoś w tym rodzaju (nazwa runningValue jest nie bez powodu). Nie możesz bezkarnie zwiększać ilości próbek, bo ich suma może przekroczyć maksymalną pojemność zmiennej. Jeśli pojemność int bez znaku jest za mała:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    możesz to zmienić na uint32_t.
    Int bez znaku w AVR (16bit) to zaledwie około 65 tysięcy.
  • Poziom 22  
    kaczakat napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    możesz to zmienić na uint32_t.
    Int bez znaku w AVR (16bit) to zaledwie około 65 tysięcy.

    Jak by to miało wyglądać ? Mógłbyś "pokazać" ten zmodyfikowany fragment, nie mam pojęcia jak to zastąpić w tym cytowanym fragmencie.
    Dziękuję za zainteresowanie i poprzednie Twoje odpowiedzi, przydały się, a jakoś "tłumów" interlokutorów" nie wdać.
    Znaczy banał na poziomie "żłobka", a "wróblami na ulicy" mało kto się interesuje.
  • Poziom 22  
    Wskazówki "kaczakat" umożliwiły zmianę kodu i poprawne działanie urządzenia.