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

Korekcja sprzętowych błędów pomiaru

sasiadstar 07 Wrz 2020 10:05 1230 8
  • Korekcja sprzętowych błędów pomiaru


    Każde urządzenie pomiarowe charakteryzuje się błędami pomiarowymi i nierzadko nieliniowością pomiarową czego skutkiem są przekłamania pomiaru.
    Owych błędów nie da się wyeliminować ale można spróbować zrobić to programowo.
    Przedstawię kilka przykładów takich błędów i sprawdzę czy jest możliwa kalibracja programowa.

    Dobrane wartości są czysto poglądowe i nie mają żadnego odzwierciedlenia w rzeczywistości , są jedynie przedstawieniem problemu.
    Poniższe informacje mogą mieć zastosowanie w przetwornikach adc, sensorach temperatury, wilgotności , ciśnienia itd.

    Poniżej pierwszy przykład na podstawie którego opiszę procedurę wyznaczania skorygowanych wartości i opis programu do tego użytego. W kolejnych punktach będę pokazywał jedynie wyniki i analizę otrzymanych danych.
    LEGENDA:
    Metoda korekcji – regresja wielomianowa
    REF – wartość referencyjna (mierzona)
    O – wartość odczytana z urządzenia (zmierzona)
    R- różnica w pomiarze REF - O
    RK – kwadrat różnicy REF-O ((REF-O)^2)
    RMSE – pierwiastek ze średniej wszystkich pomiarów RK (pierwiastek błędu średnio kwadratowego) im wartość większa tym gorsze dopasowanie danych REF do O wartość idealna to 0.
    KO – dane po korekcie
    X – wartość zmierzona (O)
    Y – wynik obliczeń po korekcie (poprawne O)


    Przykład 1

    Wartości są przesunięte o pewną stałą wartość R.
    Na chłopski rozum wystarczy przesunąć wynik o wartość 0,5 czyli
    Y = X-0,5 (X to O) w obliczenia będę używał X.
    Korekcja sprzętowych błędów pomiaru

    Korekcja sprzętowych błędów pomiaru

    Przykład banalny i każdy by na to wpadł po chwili namysłu, ale na tym przykładzie sprawdźmy co na to algorytm.

    Otwórz program pastprog..m.zip Download (1.37 MB)Punkty: 2 dla użytkownika PAST
    Korekcja sprzętowych błędów pomiaru

    W kolumnę A wprowadzam wartości otrzymane O
    W kolumnę B wprowadzam wartości REF
    Działa kopiuj/wklej

    Zaznacz obie kolumny jednocześnie przytrzymując klawisz SHIFT
    Korekcja sprzętowych błędów pomiaru


    Następnie przejdź do Model->Polynomial (wielomiany)
    Pojawia się okienko z którego będą pobrane dane
    Korekcja sprzętowych błędów pomiaru

    Jest tu kilka istotnych danych
    1 – rozwiązanie wielomianu takie dane będą użyte do korekcji błędu
    2- wybór stopnia wielomianu w zakresie od pierwszego do piątego stopnia
    3 – dopasowanie modelu, im bliższa jeden tym lepiej. 1 oznacza 100% dopasowanie czyli dane O będą = danym REF
    Dobierz najmniejszy możliwy wielomian spełniający najlepsze dopasowanie.
    4- kopiowanie wyniku obliczeń programu
    Poniżej wyniki skopiowane z programu
    Nas interesują wartości od a0 do a5 (w przypadku wielomianu 5 -stopnia)
    Chi^2: 3,8854E-36
    AIC: 5,5
    R^2: 1 --------------- wynik dopasowania
    F: 2,548E38
    p: 7,5678E-170
    a0: -0,5
    a1: 1


    Czyli mamy
    a0 -0,5
    a1-1
    Podstawmy do równania y=1x-0,5 (dziwnym trafem to nasze chłopskie rozumowanie się sprawdziło)
    A teraz szybkie sprawdzenie
    Odczytałem wartość 11,5 a powinno być 11
    Y = 11,5-0,5 // wynik 11
    Ponieważ wartość dopasowania wynosiła R^2 =1 na 100% mamy kalibrację idealną.
    Przykład 1 udało się skorygować

    Przykład 2

    W tym przykładzie jest już trochę bardziej skomplikowanie, tu błędy pojawiają się w miarę odbiegania od środka układu ( im bliżej dolnej i górnej wartości pomiarowej tym gorzej).
    W dodatku odchyły mają przeciwne znaki czyli przy niskich wartościach jest zawyżanie a przy wysokich zaniżanie wyniku.
    Korekcja sprzętowych błędów pomiaru


    Tak to wygląda na wykresie
    Korekcja sprzętowych błędów pomiaru





    Tu już nie da się na „chłopski rozum” nic zrobić… ale mamy algorytm więc sprawdźmy co on na to.
    Podstawiam i robię tak samo jak w pierwszym przykładzie.
    Tak wygląda wielomian 2 stopnia
    Korekcja sprzętowych błędów pomiaru

    Wartość dopasowania wynosi 1
    Zobaczmy jak to będzie wyglądać dla 1 stopnia
    Korekcja sprzętowych błędów pomiaru

    R^2 również wynosi 1
    Ogólnie zawsze bierzemy wielomian najniższego stopnia spełniające nasze oczekiwania
    Pobieram dane tworze wzór Y = 1,25x-1,5 i sprawdzam jak to będą wyglądać dane po korekcie
    Korekcja sprzętowych błędów pomiaru


    Jak widać znowu algorytm nie zawiódł
    Pora na kolejny przykład może tym razem się nie uda :)

    Przykład 3

    Tutaj niedopasowanie zaczyna się od najniższych wartości i rośnie w miarę pomiaru górnych wartości
    Korekcja sprzętowych błędów pomiaru


    Tak to się przedstawia na wykresie
    Korekcja sprzętowych błędów pomiaru

    Teraz algorytm
    Wzór do podstawienia
    Korekcja sprzętowych błędów pomiaru



    Jak widać w zasadzie 100% dopasowanie
    Korekcja sprzętowych błędów pomiaru

    Idealne pokrycie
    A teraz coś bardziej pokręconego


    Przykład 4

    W tym przykładzie odczyty w miarę odbiegania od środka układu wykazują ujemne przesunięcie
    Korekcja sprzętowych błędów pomiaru


    Korekcja sprzętowych błędów pomiaru

    Podstawiamy dane i otrzymujemy
    Korekcja sprzętowych błędów pomiaru


    Na pierwszy rzut oka widać że coś tu nie gra
    Dopasowanie tym razem wynosi R^2 0.999
    Poniżej jak to się przekłada na wykresie
    Korekcja sprzętowych błędów pomiaru


    Nie wygląda to najlepiej a wręcz gorzej niż było hmm...
    Podejdźmy do problemu inaczej
    Korekcja sprzętowych błędów pomiaru


    Podzieliłem układ na dwa oddzielne zbocza i dokonałem korekcji stosując dwa oddzielne algorytmy
    Dla szarego zakresu i dla żółtego
    Tak to się przedstawia poniżej

    Korekcja sprzętowych błędów pomiaru


    Wygląda że znowu sukces

    Korekcja sprzętowych błędów pomiaru


    Podsumowanie
    Jak widać sprzętowe niedomagania da się poprawić oprogramowaniem i nie jest to nic odkrywczego ale mam nadzieje że poniższy artykuł pomoże komuś kto dopiero zaczyna przygody z pomiarami.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    sasiadstar
    Poziom 13  
    Offline 
    sasiadstar napisał 78 postów o ocenie 20, pomógł 1 razy. Mieszka w mieście Kielce. Jest z nami od 2005 roku.
  • #2
    miszcz310
    Poziom 19  
    Niby wszystko fajnie, ale...
    Po co jakiś wyspecjalizowany program do dopasowania wielomianu (w dodatku czemu tylko do piątego stopnia?). To samo można zrobić w excelu, gnumericu (darmowy) lub, chyba najlepiej w Pythonie (też darmowy). Robiąc takie coś w czymś bardziej uniwersalnym można się nauczyć czegoś więcej zamiast zamykać się na rozwiązania jednorazowe. Poza tym jak jest coś nie tak z liniowością to raczej trzeba powoli zacząć myśleć nad jakimś modelem i np. dopasowaniem metodą najmniejszych kwadratów (polecam lmfit dla Pythona).

    To samo co wyżej tylko w Pythonie: (trzeba mieć numpy i matplotlib zainstalowany):
    Kod: python
    Zaloguj się, aby zobaczyć kod

    #KONIEC
    Robi to samo a można sobie dopasować dowolnego rzędu. Jak ktoś chce to może sobie podzielić dane na części i tak samo dopasowywać.

    Jak ktoś nie chce instalować Pythona to można wejść na stronkę:
    https://repl.it/languages/python3
    Wkleić kod powyżej (chyba trzeba używać ctr+v, bo inaczej nie ma opcji wklejania) i buch!
    Pozdrawiam
  • #3
    sasiadstar
    Poziom 13  
    miszcz310 napisał:
    Po co jakiś wyspecjalizowany program do dopasowania wielomianu (w dodatku czemu tylko do piątego stopnia?).

    Bo to pierwszy program jaki mi wpadł w ręce na tyle łatwy żeby go bez problemu obsłużył laik. 5-tego bo na tyle tylko pozwala.

    miszcz310 napisał:
    To samo co wyżej tylko w Pythonie

    No i fajnie może ktoś skorzysta.

    miszcz310 napisał:
    To samo można zrobić w excelu,

    Było by fajnie zamiast mówić że się da pokazać jak to zrobić.
  • #4
    miszcz310
    Poziom 19  
    Do excella to jest tego na tony. Pierwszy z brzegu:

    Link

    Wystarczy wpisać Excell polynomial regression I jest tego więcej niż będziemy w stanie obejrzeć.
    Pozdrawiam
  • #5
    _jta_
    Specjalista elektronik
    Jeśli przetwarzamy sygnał analogowy na cyfrowy (np. 0V..10,24V na liczbę 0..65535, ze zmianą co 156,25uV), to charakterystyka przetwarzania miewa różne dziwactwa - jakkolwiek na ogół jest monotoniczna (nie jest tak, żeby w jakimś przedziale większe napięcie dawało mniejszy odczyt). A do analizy sygnału potrzeba, by przy równych prawdopodobieństwach wystąpienia napięcia wejściowego o dowolnej wartości w zakresie mieć równe prawdopodobieństwa każdego wyniku (to jest potrzebne do zrobienia histogramu wyników). Tego żadne wielomiany nie załatwią, natomiast może to załatwić korekta, która dla każdego odczytu zrobi losowanie i w zależności od jego wyniku przekaże albo oryginalną wartość, albo do niej doda, albo odejmie 1 (a czasem i więcej, jeśli przesunięcie jest większe). Niestety wyznaczenie potrzebnych prawdopodobieństw dla tego losowania (dla każdej odczytanej wartości są na ogół inne!) to ogromna robota.
  • #6
    odalladoalla
    Poziom 24  
    miszcz310 napisał:
    Do excella to jest tego na tony. Pierwszy z brzegu:

    Link

    Wystarczy wpisać Excell polynomial regression I jest tego więcej niż będziemy w stanie obejrzeć.
    Pozdrawiam

    Językiem urzędowym w Polsce jest jak na razie j. polski. Nie każdy lubi skomplikowane z natury zagadnienia związane z matematyką i statystyką (ogólnie "obliczeniami") wysłuchiwać w języku "mlaskaczy z gulą w paszczy".
    Wersji "excella" jest co najmniej kilka jeśli nie kilkanaście, pozornie są kompatybilne ale prawda jest taka, że bez różnorakich konwerterów i z tym jest problem. W excelu 2003 trzeba sobie "dobudować" odpowiednie moduły obliczeniowe ze statystyką i innymi "przydasiami". W każdej wersji jest inaczej to rozwiązane, nawet "usytuowanie zakładek z narzędziami" a ty twierdzisz iż "excell" jest lepszym rozwiązaniem jak jeden program obsługujący każdy "wydalony przez mikroszit system" mający zawsze w tym samym miejscu odpowiednie proste narzędzie ?
    Dodatkowo autor posta opisał jak to narzędzie używać, w języku polskim, a ty jeszcze marudzisz iż to zrobił ?

    sasiadstar masz dużego +
  • #7
    miszcz310
    Poziom 19  
    odalladoalla napisał:

    Językiem urzędowym w Polsce jest jak na razie j. polski. Nie każdy lubi skomplikowane z natury zagadnienia związane z matematyką i statystyką (ogólnie "obliczeniami") wysłuchiwać w języku "mlaskaczy z gulą w paszczy".


    Hahahah! Życzę powodzenia w życiu z takim nastawieniem! Na pewno wszyscy będą się do Ciebie dostosowywać, żeby kochanego księciunia zaspokoić! :) Poza tym ten program z pierwszego posta też jest przecież po angielsku, więc nie wiem czemu się tak sadzisz...
    Będę pierwszy! prosz... 3 sek. szukania.
    https://youtu.be/HNx9RW_IHSA

    odalladoalla napisał:
    Wersji "excella" jest co najmniej kilka jeśli nie kilkanaście, pozornie są kompatybilne ale prawda jest taka, że bez różnorakich konwerterów i z tym jest problem. W excelu 2003 trzeba sobie "dobudować" odpowiednie moduły obliczeniowe ze statystyką i innymi "przydasiami". W każdej wersji jest inaczej to rozwiązane, nawet "usytuowanie zakładek z narzędziami" a ty twierdzisz iż "excell" jest lepszym rozwiązaniem jak jeden program obsługujący każdy "wydalony przez mikroszit system" mający zawsze w tym samym miejscu odpowiednie proste narzędzie ?
    Dodatkowo autor posta opisał jak to narzędzie używać, w języku polskim, a ty jeszcze marudzisz iż to zrobił ?


    No faktycznie, mój straszliwy błąd z dodaniem drugiego "L". Wyżej było dobrze, przepraszam, za obrazę estetyczną.
    Tak twierdzę, że Excel jest lepszym rozwiązaniem niż ten program. Dlaczego? Chociażby dlatego, że tam można wprowadzić wiele różnych modeli (własnych też). Ten program jest też standardem w środowisku biurowym. Szczerze mówiąc to jeżeli masz problem z ogarnięciem różnic pomiędzy wersjami Excela to chyba można tylko współczuć. Przecież to jeden z najprostszych programów tego typu. To jest standard sam dla siebie! Jak czegoś nie można znaleźć masz przecież instrukcję i pomoc. Wystarczy wiedzieć czego się szuka. Jeszcze tutaj jakie święte oburzenie, że od Microsoftu. Przecież napisałem też o alternatywach np. Gnumeric ("nie wydalony") i Python ("też nie wydalony").

    Serdecznie pozdrawiam i życzę więcej cierpliwości!
  • #8
    sasiadstar
    Poziom 13  
    Wtrącę się choć mi się nie chce.
    Każdy z was ma trochę racji. Fakt excel to podstawa i dzięki filmikowi przerobiłem temat i mogę powiedzieć że jest OK i nie będę polemizował.
    Dodałeś przykład to się ceni.
    Na pewno ktoś wykorzysta to w przyszłości, nie koniecznie bazując na moim rozwiązaniu a na twoim MISZCZU.
    Problemem jest to za co nie lubię tego typu portali każdy jest najmądrzejszy i nawet jak nie ma nic konstruktywnego do powiedzenia to powie.
    Napisałem ten artykuł bo nie każdy zna się na podstawowych programach jak excel python czy inne i nie każdy ma pojęcie jak poprawić funkcjonowanie sensorów.
    Sam to przerabiałem i wiem jak frustrujące to jest.
    Użyłem takiego programu jaki wpadł mi w rękę i wydał się prosty ale tak naprawdę może być dowolne narzędzie. Ale nie o tym czego używać tylko o fakcie podejścia chciałem napisać.
    Jeżeli ktoś w temacie ma coś konkretnego do powiedzenia to niech da przykład napisze co i jak zrobić a nie zaśmieca wątki dyskusjami o wyższości jednego rozwiązania nad innymi.
    Wystarczyło by napisać
    Jest jescze excel (przykład)
    python (przykład)
    inne (przykład)
    Temat byłby bardziej zrozumiały i przejrzysty.
    Sam wielokrotnie korzystałem z waszej i innych pomocy ale wstawianie posta tylko po to żeby wstawić i z kimś wdawać się w dysputę że jest dzbanem bo excel jest lepszy czy gorszy niepotrzebnie zaśmieca wątki i nie wnosi nic w temat.
    Więc jak ktoś ma coś naprawdę sensownego do powiedzenia np o innych technikach korygujących jakość odczytów które mogą pomóc to zapraszam do podzielenia się wiedzą.
    Pozdrawiam
    P.S. Dzięki za słowa uznania zawsze to motywacja do podzielenia się wiedzą.
  • #9
    _jta_
    Specjalista elektronik
    Stosowanie wielomianu jest dobre, jeśli źródło nieliniowości jest "analogowe" - np. termistor z opornikiem daje napięcie zaleźne nieco nieliniowo od temperatury, można dobrać opornik tak, by w potrzebnym zakresie nieliniowość była mniejsza, ale coś pozostaje; jednak pomiar, którego wynik ma być przetwarzany programowo, przechodzi przez ADC, które ma dość specyficzne nieliniowości - na wejście podano trójkąt, na pierwszym obrazku jest zmierzony sygnał, na drugim odchylenia,
    Korekcja sprzętowych błędów pomiaru
    Korekcja sprzętowych błędów pomiaru