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

Atmega16A, C - Błąd pomiaru prądu.

MacFis 16 Wrz 2015 12:47 1194 17
  • #1 16 Wrz 2015 12:47
    MacFis
    Poziom 17  

    Witam.
    Jakiś czas temu przerobiłem zasilacz ATX dodając do niego regulacje napięć i prądu.
    Zasilacz działa jak powinien. Dwa napięcia oraz prąd chcę wyświetlać na trzech wyświetlaczach 7-segmentowych, w sumie 12 znaków. Napięcia są wyświetlane prawidłowo. Mam jednak problem z interpretacją/zrealizowaniem pomiaru prądu. W ujemnej gałęzi napięcia wyjściowego zasilacza mam wstawiony bocznik rezystorowy 0,05Ω.

    Atmega16A, C - Błąd pomiaru prądu.

    Atemga16A ma za zadanie mierzyć na nim spadek napięcia i na jego podstawie wyświetlać prąd. Część analogowa uC zasilana przez dławik 10µH, napięcie referencyjne 2,5V z tl431, kondensatory filtrujące 100nF. Układ działa prawidłowo, tzn wyświetlacze interpretujące wyniki na ADC0 i ADC1 pokazują poprawnie mierzone napięcia.

    Aby otrzymać zależność mierzonego napięcia na ADC2 od prądu przepływającego przez rezystor dokonałem obliczeń:
    Jedno "oczko" ADC wynosi 2,5V/1024≈0,0024V. Całość dzielę przez 0,05Ω i w rezultacie otrzymuje współczynnik(≈0,0488) określający płynący prąd w zależności od ADC. Aby wartość wyświetlana była prawidłowo mnożę ją x100, co daje 4,88: prąd=ADC*4,88.
    Czyli mogę teoretycznie uzyskać dokładność około 50mA.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jednak po obciążeniu zasilacza rezystorem 10Ω przy napięciu zasilania 3,5V powinienem uzyskać 00.35, wyświetlacz natomiast wskazuje 00.19.

    Wyszło trochę z tego masło maślane, za co przepraszam, pewnie robię gdzieś głupi błąd, jednak ślęczę nad tym już kilkanaście godzin i nie mogę znaleźć rozwiązania.

    Z góry dziękuję za pomoc.

    0 17
  • #2 16 Wrz 2015 13:19
    Steryd3
    Poziom 31  

    Nie bardzo rozumiem co się dzieje w 4 linijce kodu. Pojawiają się jakieś zmienne (nie wiadomo jakiego typu) na których wykonywane są jakieś operacje intencji których mogę się tylko domyślać.
    Abstrahując od kodu...
    Pierwsze co bym zrobił to powtórzył bym eksperyment z rezystorem 10Ω z tym, że zmierzył bym za pomocą multimetru wartość napięcia na wyjściu zasilacza oraz wartość napięcia na boczniku. Dodatkowo wyświetlił bym "goły" wynik uzyskany z przetwornika (liczbę 0-1023). Po takich operacjach wiedział bym już w czym jest problem- czy obliczenia szwankują, czy pomiar jest błędny.

    1
  • #3 16 Wrz 2015 13:53
    MacFis
    Poziom 17  

    Opór obciążenia: 10,2Ω;
    Opór bocznika: 0,05058Ω(dwa 0,1 połączone szeregowo);
    Napięcie wyjściowe: 3,5V;
    Spadek na boczniku: 17,2mV;
    Wskazanie ADC: 4.

    W czwartej linijce kodu liczona jest średnia (próbki*poprzedni wynik+bieżący wynik)/(próbki+1) w celu pozbycia się drobnych skoków, gdzie "próbki" to stała typu int określająca ile razy ma być brany pod uwagę poprzedni wynik w liczeniu średniej,
    wynik jest typu int.

    0
  • #4 16 Wrz 2015 14:00
    Steryd3
    Poziom 31  

    No i nic koledze to nie mówi?
    Jak dla mnie wynik z ADC =4 to za mało (powinno być 6-prawie7) .
    Inną kwestią jest to, że przetworniki a AVRach są mizerne.
    Zrobił bym jeszcze eksperyment z większym prądem lub zastosował wzmacniacz bo przy takim boczniku dla 1A napięcia będzie 50mV co przy napięciu odniesienia 2,5V i 10 bitach ADC wypada raczej blado.

    0
  • #5 16 Wrz 2015 14:14
    94075
    Użytkownik usunął konto  
  • #6 16 Wrz 2015 14:21
    MacFis
    Poziom 17  

    albertb napisał:
    MacFis napisał:
    "]Opór obciążenia: 10,2Ω;
    Opór bocznika: 0,05058Ω(dwa 0,1 połączone szeregowo);
    Napięcie wyjściowe: 3,5V;
    Spadek na boczniku: 17,2mV;
    Wskazanie ADC: 4.

    Która z tych wartości jest niepoprawna według Ciebie?
    Jak duży jest błąd?
    Który element za niego odpowiada?
    Jak duży błąd dopuszcza producent tego elementu w danych katalogowych?


    Niepoprawne jest wskazanie ADC, pozostałe wartości zostały zmierzone multimetrem i porównane z wynikami obliczeń.
    Dopiero teraz doczytałem w datasheet: "±2 LSB Absolute Accuracy". Czyli nie ma co liczyć na 2 mniej znaczące bity?

    Dośw. II:
    Opór obciążenia: 5,1Ω;
    Opór bocznika: 0,05058Ω;
    Napięcie wyjściowe: 5,14V;
    Prąd zmierzony multimetrem: 1A;
    Spadek na boczniku: 51mV;
    Wskazanie ADC: 18-19.
    Wskazanie to różni się teraz tylko/aż o 2-3 jednostki od prawidłowego.
    Dokładność i stabilność przetwornika jest co najmniej irytująca. Wyregulowane wczoraj programowo pozostałe dwa mierniki dzisiaj wykazują odchyłkę o 5-7%(tl431 trzyma stałe napięcie). Czy jest jakiś sposób aby temu zaradzić nie ingerując w sposób znaczący w konstrukcję płytki z mikrokontrolerem? Jakiś zewnętrzny ADC? Zmiana napięcia referencyjnego na niższe?

    0
  • Pomocny post
    #7 16 Wrz 2015 15:41
    Steryd3
    Poziom 31  

    Zmiana napięcia odniesienia na niższe jak najbardziej może pomóc. Oczywiście zmniejszy to zakres mierzonego prądu. Przetworniki w AVRach nie są stworzone do budowy na nich dokładnej elektroniki pomiarowej -błędy przetwarzania które się pojawiły są na poziomie przewidzianym w nocie katalogowej.
    Są metody pozwalające zwiększyć rozdzielczość przetwarzania na zasadzie próbkowania z dużo wyższą częstotliwością niż potrzeba i wyliczaniu z zebranych próbek średniej. Niewiele jednak to pomaga bo problem leży głównie w tym, że przetwornik ma błąd przetwarzania a nie zbyt małą rozdzielczość. Dokładność i rozdzielczość to są często mylone pojęcia które nie oznaczają tego samego.
    Ogólnie Twój projekt rozbił się o szczegóły.
    1.Mikrokontrolery AVR ma dość mizerne ADC o stosunkowo niskiej 10-bitowej rozdzielczości - co sam odkryłeś .
    2.Napięcie mierzone z bocznika jest niskie w stosunku do napięcia referencyjnego i błędów przetwarzania.

    By poprawić projekt trzeba by poprawić wymienione słabe punkty
    Ad1. Zastosować dobry zewnętrzny przetwornik ADC o wyższej rozdzielczości lub inny mikrokontroler(niestety nie AVR) który takim dysponuje.
    Ad2. Zwiększyć napięcie trafiające do przetwornika. Można zwiększyć rezystancję bocznika(co ogólnie nie jest dobrym pomysłem), wprowadzić dobry wzmacniacz pomiarowy lub ostatecznie zmniejszyć napięcie odniesienia dla ADC (co ma słabe strony bo szum ma większy udział w sygnale).
    Tak więc bez "gmerania" w sprzęcie ciężko będzie uzyskać zadowalające rezultaty.

    0
  • Pomocny post
    #8 16 Wrz 2015 15:57
    tronics
    Poziom 36  

    Cytat:
    1.Mikrokontrolery AVR

    Duże uogólnienie. Atxmega to również AVR, a przetwornik jest 12 bitowy i znacząco szybszy. Dodatkowo znacznie dokładniejsze wbudowane źródło referencyjne (to w Atmegach to kpina jeśli chodzi o pomiary). W xmega można przetworniki "kalibrować". Jeśli chodzi o projekt to należałoby dopasować zakres mierzonych napięć do vref (i/lub vice versa) przez np. wzmocnienie opampem i przesunięcie (wprowadzenie offsetu).

    0
  • #9 16 Wrz 2015 16:01
    MacFis
    Poziom 17  

    Napięcie referencyjne mam zewnętrzne, na "programowanej diodzie zenera". Najłatwiej chyba będzie dorobić do tego wzmacniacz, który podniesie mi napięcie z bocznika. Tylko czy poprawi to wyniki? Biorąc pod uwagę napięcie 2,5V i maksymalny prąd 15A, mógłbym pomnożyć teoretycznie napięcie 3.3 razy. Tylko czy to coś zmieni? Który ze wzmacniaczy operacyjnych polecasz?

    0
  • #10 17 Wrz 2015 10:39
    94075
    Użytkownik usunął konto  
  • #11 17 Wrz 2015 12:17
    pawel_konin
    Poziom 20  

    albertb napisał:
    Zmniejszając napięcie referencyjne niewiele osiągniesz, zwłaszcza, że minimalne to 2V
    Natomiast zwiększając je do Vcc możesz zwiększyć wzmocnienie ponad te wyliczone przez Ciebie 3.3 raza
    Możesz także wykorzystać wewnętrzny wzmacniacz w trybie różnicowym - jeśli pomiar jest mały przełączasz programowo wzmocnienie i dokonujesz pomiaru ponownie.
    Dobór wzmacniacza operacyjnego jeśli na takowy się zdecydujesz, jest sprawą wtórną w stosunku do schematu połaczeń i założeń programu.

    Albert

    Czy kolega aby napewno jest pewny swego iż, minimum to 2V??
    Skoro posiadając taki sam procesor Atmega16A- i zewnętrzne źródlo 1.2V pomiary działają prawidłowo z rozdzielczoscia do 12mV. W związku z tym mierze LM35 z rozdzielczością 0.12°C i działa i co kolega na to??

    -1
  • #13 18 Wrz 2015 14:05
    pawel_konin
    Poziom 20  

    albertb napisał:
    pawel_konin napisał:
    Czy kolega aby napewno jest pewny swego iż, minimum to 2V??


    Ani to moje, ani pewny nie jestem. Na Atmelach nie robiłem nic od bardzo dawna.
    Ale przed zadaniem takiego pytania w taki sposób należałoby spojrzeć do dokumentacji producenta.
    http://www.atmel.com/Images/Atmel-8154-8-bit-AVR-ATmega16A_Datasheet.pdf
    Strona 287, parametr Vref


    Albert

    To fakt jest taki parametr w nocie, lecz ja zanim użyłem źródła o napięciu 1.2V sprawdziłem na płytce stykowej jak zachowuje się przetwornik. Moje obserwacje które wykonałem udowodniły że, przetwornik zaczyna się krzaczyć i przestaje mierzyć przy napięciu 1V i minimalne dla niego to 1.1-1.2V. Dodatkowo należy wziąć pod uwagę złą współprace TL431 ze wszystkimi dzielnikami napięcia--> objawia się to spadkiem napięcia Vref owego źródła zarówno na moim starym PCB jak i płytce stykowej, w związku z czym użyłem innego źródełka napięcia(oraz nowe PCB), MAX6120 które poprawnie współpracuje z ADC (spadki napięcia w granicach najmniejszej cyfry na multimetrze 4,5cyfry na zakresie do 2V przy dynamicznym obciążaniu prądowym uC). Na dowód mogę udostępni jakieś zdjęcia itp.

    0
  • #14 18 Wrz 2015 14:36
    94075
    Użytkownik usunął konto  
  • #15 18 Wrz 2015 21:14
    pawel_konin
    Poziom 20  

    albertb napisał:
    pawel_konin napisał:
    To fakt jest taki parametr w nocie, lecz ja zanim użyłem źródła o napięciu 1.2V sprawdziłem na płytce stykowej jak zachowuje się przetwornik

    Zanim wyruszyłem w trasę radu przez Saharę sprawdziłem że można jeździć samochodem, w którym koła przykręcone są jedną śrubą do felg. Sprawdziłem to jeżdżąc po drodze osiedlowej.

    pawel_konin napisał:
    i działa i co kolega na to??
    [...]
    Na dowód mogę udostępni jakieś zdjęcia itp.


    Proponuję Twoje obserwacje wysłać do Atmela, aby poprawili datasheet.

    Albert

    Spoko napisze im w mailu ze urządzenie działa już prawie rok i jeszcze się nie rozwalił uP.. i nadal mierzy ADC co jest absolutnym zaprzeczeniem tej tabelki. No i wyniki są prawdziwe i zgodne z prawda a na deser im dorzucę że, przetwornik działa w trybie ciągłej konwersji no i Atmega w TQFP i mierzy na 3 kanałach w zasadzie na 4 bo jeszcze klawiatura jest. Pewnie zaraz zainterweniuje moderator...

    Moderowany przez tmf:

    Proszę nie kontynuować dyskusji o przekraczaniu parametrów deklarowanych przez producenta. Dalsza dyskusja na ten temat wyleci do kosza + ostrzeżenie w nagrodę.
    Producenci układów wiedzą co piszą, a jednostkowe doświadczenia użytkowników o niczym nie świadczą. Jeśli kolega przetestuje losową serię kilku tys. układów w pełnym zakresie warunków pracy deklarowanych przez producenta i wszystko będzie działać poprawnie to proszę napisać - taki wynik będzie o czymś świadczył. W przeciwnym przypadku proszę przyjąć za prawdę to co deklaruje producent.

    0
  • #16 18 Wrz 2015 22:13
    tronics
    Poziom 36  

    @albertb

    Cytat:
    Proponuję Twoje obserwacje wysłać do Atmela, aby poprawili datasheet.

    atmel podaje również, że atmega88 działa z max prędkością 20MHz, czy nikomu nie udało się pociągnąć więcej? Udało i trudno będzie zaprzeczyć skoro nawet na tym forum się ludzie chwalą wielomiesięczną stabilną pracą w warunkach OC. Wystarczyło wspomnieć, że praca z takim vref jest niezgodna z dokumentacją atmela innymi słowy nie ma żadnej gwarancji że w każdych warunkach przy każdym egzemplarzu mikrokontrolera uda się takie napięcie wykorzystać. Nie ma co drążyć tematu dalej - kolega pawel_konin i tak zrobi jak zechce - po co ciągnąć offtop?
    @pawel_konin - albertb dobrze napisał - zwiększenie vref wraz z przetwornikiem I/U na wzmacniaczu operacyjnym z wzmocnieniem >1 powinno załatwić sprawę. Wzmocniony będzie też szum co prawda, natomiast częściowo można go "skasować" uśredniając n próbek. Nie jest to duży problem przy pomiarach wielkości wolnozmiennych.
    Można też wykorzystać tryb różnicowy ADC i wykorzystać wbudowany wzmacniacz z tym, że on wprowadza więcej niepewności niż dobrze przygotowany tor pomiarowy poza MCU więc nawet dla małych wzmocnień użyteczna rozdzielczość spada do 8bitów. Niemniej do wyboru, do koloru.

    1
  • #17 20 Wrz 2015 10:22
    jnk0le
    Poziom 18  

    tronics napisał:
    @albertb
    Cytat:
    Proponuję Twoje obserwacje wysłać do Atmela, aby poprawili datasheet.

    atmel podaje również, że atmega88 działa z max prędkością 20MHz, czy nikomu nie udało się pociągnąć więcej? Udało i trudno będzie zaprzeczyć skoro nawet na tym forum się ludzie chwalą wielomiesięczną stabilną pracą w warunkach OC. Wystarczyło wspomnieć, że praca z takim vref jest niezgodna z dokumentacją atmela innymi słowy nie ma żadnej gwarancji że w każdych warunkach przy każdym egzemplarzu mikrokontrolera uda się takie napięcie wykorzystać. Nie ma co drążyć tematu dalej - kolega pawel_konin i tak zrobi jak zechce - po co ciągnąć offtop?

    Dla świętego spokoju można użyć ATmegi która oficjalnie pracuje przy vref 1.1V (np. 88).

    0
  • #18 21 Wrz 2015 07:11
    94075
    Użytkownik usunął konto