Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

16 Sep 2015 12:47 1320 17
  • Level 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.

    Code: c
    Log in, to see the code


    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.
  • Level 33  
    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.
  • Level 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.
  • Level 33  
    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.
  • User removed account  
  • Level 17  
    albertb wrote:
    MacFis wrote:
    "]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?
  • Helpful post
    Level 33  
    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.
  • Helpful post
    Level 38  
    Quote:
    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).
  • Level 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?
  • User removed account  
  • Level 20  
    albertb wrote:
    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??
  • User removed account  
  • Level 20  
    albertb wrote:
    pawel_konin wrote:
    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.
  • User removed account  
  • Level 20  
    albertb wrote:
    pawel_konin wrote:
    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 wrote:
    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...

    Moderated By 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.

  • Level 38  
    @albertb
    Quote:
    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.
  • Level 18  
    tronics wrote:
    @albertb
    Quote:
    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).
  • User removed account