logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy

kiclaw 03 Paź 2012 21:42 5394 10
REKLAMA
  • #1 11374716
    kiclaw
    Poziom 16  
    Witam

    Mam taki problem, próbuje zrobić sobie amperomierz oparty na uC Atmega32, korzystając z pomiaru różnicowego napięcia na boczniku. Czyli mierze spadek napięcia na boczniku, następnie dziele go przez jego rezystancje i wychodzi mi prąd.

    Jednak napotkałem się na taki problem, mianowicie: Żeby zwiększyć rozdzielczość amperomierza, napięcie z bocznika poddałem podziałowi przez 2. I tutaj jest właśnie problem bo gdy to zrobię to na wyświetlaczu mam maksymalną wartość 512.
    Jest to zapewne spowodowane tym, że: wzór na ADC to:
    Cytat:
    ((VposVneg)*GAIN*512)/Vref
    czyli w tym wypadku napięcie Vpos jest niższe (bo jest dzielone) niż Vneg i się przez to psuje pomiar. Stwierdziłem że trzeba by wynik pomiaru ADC przemnożyć przez jakiś współczynnik zależny od dzielnika, ale nie mam pomysłu na jego wartość.

    Mógłbym oczywiście mierzyć bez dzielnika ale wtedy amperomierz miałby rozdzielczość tylko do 1,7A (niby wystarczy, ale przydało by się więcej).

    Wrzucam schemat układu pomiarowego w którym przeprowadzam pomiar prądu,teoretycznie prąd powinien wynieść 36,7mA, natomiast zewn. miernik pokazuje 33mA. Rezystory 68R mają symulować to, że amperomierz został wpięty w jakiś układ elektryczny.

    [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy
    Gdy usunę ze schematu dzielnik, to układ pokazuje mi ADC=13 (czyli prąd 43mA - czyli o 10mA więcej niż pokazuje zewn. miernik, tak więc dokładność pomiaru tutaj trochę kuleje )

    Wrzucam również kod programu, nie dodawałem kodu liczącego prąd - liczę go na razie samodzielnie, bo najpierw chciałbym uporać się z tym niepoprawnym wynikiem ADC.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Oczywiście do policzenia prądu muszę jeszcze pomnożyć ADC przez 2 (współczynnik dzielnika), ale w tej chwili mnożenie i tak nic nie da bo ADC mam zwracane jako jedna liczba.
  • REKLAMA
  • #2 11375825
    korrus666
    Poziom 40  
    Dzielnik masz źle podłączony. Dzielnik ma być na rezystorze a nie między ADC1 i masą. Przecież masz dzielić napięcie na rezystorze. ADC1 podłączasz między rezystory dzielnika. R2 dzielnika ma być podłączony do drugiej nogi rezystora bocznikowego a nie do masy.

    [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy
  • #3 11377176
    kiclaw
    Poziom 16  
    korrus666 W dzielniku podłączonym tak jak na Twoim schemacie, na ADC0 i ADC1 będą takie same napięcia jakby tego dzielnika w ogóle nie było (no, będą się różnić kilkoma mV), więc w ogóle nie rozumiem idei podłączania dzielnika po Twojemu bo taki sam efekt uzyskamy jakby go w ogóle nie było.

    Mi właśnie chodzi o to, żeby tak podzielić napięcie z nóżki bocznika żeby na ADC doszła ½ tego napięcia (w celu poszerzenia rozdzielczości pomiaru).

    Mam problem z tym że w takim układzie Vpos jest mniejszy niż Vneg i pomiar jest nieprawidłowy. Tak dzisiaj nad tym myślałem i wpadłem na prosty pomysł, żeby napięcie z drugiej nóżki bocznika też podzielić przez 2. Wtedy będę miał na ADC1--ADC0 poprawną różnicę napięć (podzieloną przez 2, czyli ADC będzie 2 razy mniejszy, a więc zwiększy się rozdzielczość)

    Dla pewności zasymulowałem układ w PSpice, no i wszystkie napięcia się zgadzały.

    [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy

    Liczę już to chyba drugą godzinę we wszystkie możliwe strony, i stwierdzam że teoretycznie układ powinien działać. No ale cóż,chyba teoria się w tym przypadku rozmyła z praktyką, bo gdy złożyłem to na płytce to odczyty zaczęły wariować i pokazywać ADC od 0 do 1023.
  • REKLAMA
  • #4 11377718
    excray
    Poziom 41  
    Nie rozumiem. Dlaczego nie ustalisz sobie masy układu w punkcie ADC0 a wtedy nie będziesz w ogóle musiał wykonywać pomiaru różnicy tylko zmierzysz sobie napięcie na ADC1, bezpośrednio czy też bądź z dzielnikiem - jak wolisz.
  • #5 11377945
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #6 11378695
    kiclaw
    Poziom 16  
    Cytat:

    Nie rozumiem. Dlaczego nie ustalisz sobie masy układu w punkcie ADC0 a wtedy nie będziesz w ogóle musiał wykonywać pomiaru różnicy tylko zmierzysz sobie napięcie na ADC1, bezpośrednio czy też bądź z dzielnikiem - jak wolisz.

    excray Oczywiście że tak można, tylko spójrz, to jest wzór na ADC: [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy
    Gdybym ADC0 podłączył do masy to Vneg było by 0. Czyli amperomierz by działał poprawnie tylko wtedy gdy podłączył bym go jakby "na samym końcu" układu. Bo chociażby w moim układzie ze schematu powyżej takie rozwiązanie już by nie zadziałało ponieważ na R4 też odkłada się jakieś napięcie (i co za tym idzie "za bocznikiem nie jest 0V tylko jakieś napięcie R4").

    Cytat:
    Mylisz się.

    atom1477
    Wrzucam import do symulatora Falstada (zmieniłem wartości rezystorów na WEJ i WYJ żeby było to bardziej widoczne, że jest tak jak pisałem), w Spice wyszły mi takie same wyniki ale przecież nie będę tu wrzucał całego *cir.

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Cytat:
    Niestety mimo to układ może nie działać. Skoro rezystor pomiarowy daje tak duże napięcie że trzeba je dzielić żeby zmierzyć je za pomocą ADC (czyli zakładam że dopiero po podzieleniu będzie 5V), to z pewnością napięcia na końcówkach tego rezystora wykraczają poza zakres napięć zasilania mikrokontrolera co go uszkodzi.


    Pisałem o tym wcześniej, nie dziele napięcia bo mi nie wydala zakres uC, tylko dzielę go bo chce mieć możliwość pomiarów większych prądów. Multimetr pokazuje mi spadek napięcia na rezystorze: 5mV (teoretycznie powinno wyjść: 5,5mV)

    Cytat:
    Twój układ zasymulowany w SPICE wygląda na działający tylko dlatego że mylnie założyłeś że napięcie na prawej końcówce rezystora BOCZNIK jest równe 0, a ta przecież nie będzie.


    Ależ właśnie tak nie założyłem, przecież właśnie po to mierze napięcie na ADC1 bo wiem że tam jest jakieś napięcie (czyli tak de facto, napięcie WEJ minus Vbocznika)

    Cytat:
    Jak już to musisz dzielić oba napięcia. Wtedy na oba ADC pójdzie 2,5V czyli różnica wyniesie 0V tak jak powinno być.
    Tak właśnie zrobiłem, ale różnica Vpos-Vneg przy dzielniku 2, powinna chyba wyjść Vbocznika*2 ?


    No chyba że źle odczytuje parametry rezystora pomiarowego, na obudowie bocznika mam nadrukowane: 5W0Ω15J czyli rozumiem że jest to jest to: Moc:5W, rezystancja: 0,15Ω i tolerancja 5%?

    Na chwilę obecną jak pisałem, teoretycznie wszystko gra, a praktycznie wartość ADC która powinna wynieść 5 a skacze 20-60.


    Pozdrawiam
  • #7 11378774
    korrus666
    Poziom 40  
    Zrób tak.
    Masy układu pomiarowego i mierzonego powinny być odseparowane galwanicznie, wtedy nie musiałbyś mierzyć napięcie za pomocą dwóch wejść ADC bo wystarczyłoby jedno.
    Jedna noga bocznika do masy układu pomiarowego druga przez dzielnik lub bez do wejścia ADC.
    Nie obchodzą cie wtedy napięcia przed i za bocznikiem bo nie mają żadnego wpływu na pomiar.
    W sumie dzielnik też nie jest potrzebny bo przy rezystorze 0.15 oma masz 1,5 V dla 10 amper. chyba większych prądów nie będziesz mierzył. Zresztą rezystor by nie zniósł takiego prądu bo wydzielałoby się na nim 15 watów.



    Strasznie komplikujesz sobie życie.
  • #8 11379319
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #9 11380678
    kiclaw
    Poziom 16  
    korrus666 napisał:
    Masy układu pomiarowego i mierzonego powinny być odseparowane galwanicznie, wtedy nie musiałbyś mierzyć napięcie za pomocą dwóch wejść ADC bo wystarczyłoby jedno. Jedna noga bocznika do masy układu pomiarowego druga przez dzielnik lub bez do wejścia ADC. Nie obchodzą cie wtedy napięcia przed i za bocznikiem bo nie mają żadnego wpływu na pomiar.


    Nie wiem czy dobrze Cie zrozumiałem, ale proponujesz takie rozwiązanie?
    [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy

    Jeśli tak, to przecież na czas pomiaru zrobię przerwę w obwodzie.

    korrus666 napisał:
    W sumie dzielnik też nie jest potrzebny bo przy rezystorze 0.15 oma masz 1,5 V dla 10 amper. chyba większych prądów nie będziesz mierzył.


    Tutaj problem jest inny spójrz, to jest wzór na ADC: [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy
    Czyli spadek napięcia na rezystorze to jest: [ATmega32] [C] - Pomiar prądu poprzez pomiar różnicowy

    ADC maksymalnie wynosi 512, czyli po podstawieniu tego 512 do wzoru powyżej, to obliczony spadek napięcia wyniesie 0,256 (czyli to maksymalne spadek, bo wyżej już ADC się przepełni), dzieląc to na 0,15Ω wychodzi mi maksymalny prąd 1,70A. Trochę mało więc wsadziłem dzielnik:2, czyli ADC=512 będę miał przy Vbocznika=0,512V,czyli maksymalny prąd wyniesie 3,41A (przy tym prądzie przepełnienie ADC). I o to właśnie mi chodzi.

    atom1477
    Cytat:

    Ale co tu rozszerzać skoro z dzielnika otrzymujesz 5,5mV?
    Przecież zakres ADC to 5V więc i bez rozszerzania zakresu możesz zmierzyć 1000 krotnie większe prądy niż masz teraz.

    j.w

    Cytat:
    Coś źle interpretujesz. Dzielnik dzieli a nie mnoży Very Happy
    Przy dzielniku 2 napięcie Vpos-Vneg będzie wynosiło Vbocznika/2.


    Przepraszam, oczywiście masz rację :) Ale wczoraj siedziałem przy tym z 6 godzin i już mi się zaczęło pieprzyć.


    Albo ja gdzieś popełniam błąd totalnie psujący pomiar, albo cos z płytką. Jutro zrobię układ z osobnym zasilaniem uC i osobnym układu pomiarowego.
  • #10 11380925
    Konto nie istnieje
    Poziom 1  
  • #11 11387447
    kiclaw
    Poziom 16  
    Cytat:
    Problem popełniasz we wzorze na napięcie na boczniku.
    Bo powinno wyjść 0,5V. Co da 3,33A.


    Wychodzi dobrze, sprawdź moje adnotacje w kodzie co do Vref i GAIN

    Generalnie przedmuchałem płytkę, i co się okazało. Dość duży offset (rzędu nawet 500mV), ale jakoś sobię z tym poradziłem i uzyskałem dokładność amperomierza około 15mV.

    Cytat:
    Dlaczego zamiast jakiegoś cudowanego dzielnika nie dasz np. bocznika z rezystora 0,05Ω (3 równolegle połączone 0,15Ω)? Wtedy bez żadnego dzielnika i przy pracy z Gain równym 10 miał byś zakres 9,99A.


    O tym nie pomyślałem, ale wg. mnie to świetny pomysł, bo wtedy znacznie zwiększa się rozdzielczość.

    Tematu na razie nie zamykam bo jeszcze może będę się tym bawił żeby uzyskać lepszą dokładność.
REKLAMA