Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ACS712 Arduino Skalowanie - duże zawyżanie wyników

pyton 18 Kwi 2017 00:49 540 7
  • #1 18 Kwi 2017 00:49
    pyton
    Poziom 21  

    Witam

    Mam problem mianowicie:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Odczyt sygnału Analogowego podzielony przez 1023 oraz pomnożony przez 5000 by wynik był w [mV] odejmuje 2500 [mV] gdyż to jest połowa napięcia pracy czujnika czyli jego "0" (dla czujnika 1,5[V] to -5[A], 2,5[V] to 0[A], 3,5[V] to 5[A]) całość dziele przez jego czułość czyli 185[mV] na 1[A] ostatnie dzielenie przez 100 to ilość pomiarów "uśrednianie"...

    Robię 100 pomiarów - chodzi o zrobienie średniej bo czujnik dość pływa...


    Problem w tym że wynik jest dość mocno błędny.... na multimetrze mam 0,50A a na wskazaniu z czujnika 1,9A Podglądam wartość jaką otrzymuje na Analogu jest w okolicy 580 co daje ~330mV.... czyli matematyka działa poprawnie...

    Wiem że zamiast zmierzyć napięcie zasilania czujnika wstawiam stałe... puki co się uczę... i małymi kroczkami a do celu zmierzam...


    Co robię źle?

  • #3 18 Kwi 2017 11:09
    pyton
    Poziom 21  

    Zmienna jest typu float.

  • #4 18 Kwi 2017 11:27
    Piotrus_999
    Poziom 39  

    Zrób sobie filtr dolnoprzepustowy ;



    c - stała

    x = x / c + wynik

    licz na int albo na long

    aby mieć mV

    mV = ((5000 * x) / 1023) /c - szybko i dokładnie.

  • #5 21 Kwi 2017 01:59
    krzysiek_krm
    Poziom 28  

    Witam,

    pyton napisał:
    Problem w tym że wynik jest dość mocno błędny.... na multimetrze mam 0,50A a na wskazaniu z czujnika 1,9A Podglądam wartość jaką otrzymuje na Analogu jest w okolicy 580 co daje ~330mV.... czyli matematyka działa poprawnie...

    wynika z tego, że program działa poprawnie.
    Możliwe, że przetwornik w procesorze źle mierzy napięcie, na przykład ma ustawione złe napięcie odniesienia. W dokumentacji piszą również, że można "niechcący" pozostawić załączony pullup, wynik pomiaru jest wówczas zawyżony, chociaż mało prawdopodobne, żeby było to aż tak duże przekłamanie.
    Możliwe, że błędnie działa czujnik, ma zbyt duże lub źle odfiltrowane napięcie zasilania.
    Możliwe, że mierzysz mocno odkształcony przebieg prądu, multimetr "coś" pokazuje, układ czujnik - przetwornik pokazuje swoje "coś".
    Spróbuj może wymusić przepływ stałego prądu, którego natężenie jesteś w stanie w miarę wiarygodnie oszacować, pomierz tym multimetrem napięcia na czujniku: zasilania i wyjściowe. Coś będzie wiadomo, może na przykład multimetr mierzy prąd z nienormalnie dużym błędem.

    Pozdrawiam

  • #6 21 Kwi 2017 09:15
    tmf
    Moderator Mikrokontrolery Projektowanie

    @pyton Wydaje mi się, że problem wynika z użycia float. Ten typ ma ograniczoną precyzję (do max. 7 miejsc znaczących), w efekcie operując na liczbach tego typu zawsze występuje pewien błąd reprezentacji. Ty sumujesz ten błąd 100 razy, w efekcie może on osiągnąć spore rozmiary. Zapewne lepiej byłoby zrobić np. 100 pomiarów, zsumować je wykorzystując liczby całkowite, a dopiero na uzyskanej sumie wykonać resztę obliczeń. To znacznie zwiększy dokładność obliczeń, a przy okazji je przyśpieszy (zamiast 100 obliczeń na zmiennym przecinku, będzie tylko jedno).

  • #7 21 Kwi 2017 10:09
    pyton
    Poziom 21  

    Dziękuje za zainteresowanie.

    Wczoraj pomierzyłem wszystko.. Niestety najpierw muszę zrobić jakieś mocne i stabilne zasilanie - okazało się że uszkodził się stabilizator 1117 5.0V... przez co na czujnik było podawane 6,9V jak już się z tym uporam zobaczymy jaki będzie efekt - czekam tylko na części.

    Muszę ciut doczytać na temat "odszumiania" sygnałów...

    Pozdrawiam

  • #8 21 Kwi 2017 12:02
    krzysiek_krm
    Poziom 28  

    Witam,

    pyton napisał:
    Muszę ciut doczytać na temat "odszumiania" sygnałów...

    ten czujnik ma sprzętowe "odszumianie" sam z siebie, w postaci dolnoprzepustowego filtru RC. oczywiście przyzwoite zasilanie jest, rzecz jasna, podstawą.
    Musisz jeszcze "wplątać" w pomiar napięcie zasilania, ten czujnik ma skalowanie w funkcji napięcia zasilającego, podczas gdy na przykład LEM-y mają (zazwyczaj) własne napięcie odniesienia. Producent Twojego czujnika tłumaczy swój sposób skalowania, twierdząc, że można go zasilić z napięcia odniesienia przetwornika A/D, pomiar staje się wówczas "fully ratiometric", też jakiś sposób.
    Proponowałbym Ci jednak wykonywanie natywnej kalibracji czujnika. Zakładając, że układ jest liniowy, wystarczy "złapać" dwa, możliwie odległe punkty pomiarowe, a następnie rozwiązać układ równań względem niewiadomych, będących współczynnikami odpowiedniej funkcji liniowej. Później, jak już poprzednicy pisali, możesz wykonywać serie pomiarowe, używając obliczeń stałoprzecinkowych, finalnie "przepuścić" przez wyznaczoną funkcję liniową, i gotowe. Dla zwiększenia precyzji pomiaru, w proces kalibracji można jeszcze wplątać odpowiednią analizę statystyczną.

    Pozdrawiam

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME