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

Miernik U/I PIC16F628A+MCP3422

adam cs 24 Maj 2013 19:37 15789 16
  • Witam.
    Przedstawiam układ pomiarowy prądu i napięcia DC.
    Mój układ różni się nieco od popularnych rozwiązań jednoukładowych tym że wykorzystuję zewnętrzny ADC.
    Miernik U/I PIC16F628A+MCP3422

    Schemat powstał jak układ był już zmontowany. Więc mogą być w nim pewne niedociągnięcia.
    Pomiar prądu odbywa się w ujemnej gałęzi napięcia wyjściowego.

    - zakres pomiarowy 0-20V z rozdzielczością 0,01 V
    - bocznik do pomiaru prądu 0,05 Ω rozdzielczość pomiaru 0,01 A
    - wbudowane precyzyjne źródło napięcia odniesienia


    Aby uzyskać takie parametry, kostkę MCP3422 konfiguruję (programowo) m.in. na:
    - najmniejsza możliwa rozdzielczość: 12 bit
    - wzmocnienie: PGA=1:1 (dla napięcia, dla prądu jest x2)

    Czyli wykorzystuję 10-20% możliwości kostki i już mam lepsze parametry, niż rozwiązanie na gołym procku.
    Czyli rzeczywista rozdzielczość (nie interpolowana) i względnie małe straty mocy na boczniku.

    Budowa:

    Mikrokontroler
    Pic16f628A - 2k słów pamięci programu, z powodzeniem mógłby być tańszy PIC16f627A z 1k. Brak sprzętowego I2C ale to nic
    bo ten interfejs jest tak prosty że konfiguracja rejestrów (jeśli się to robi pierwszy raz) nieraz zajmuje więcej czasu
    niż zrobienie obsługi programowo w asm. Dodatkową zaletą programowego i2c jest przypisanie którychkolwiek pinów uC.

    Przetwornik:
    MCP3422 - 18-bitowy, 2-kanałowy przetwornik A/D delta-sigma z programowaną rozdzielczością i wzmocnieniem. Akurat miałem kilka sztuk co w połączeniu z potrzebą napisania sobie programowego I2C powstał cały układ.
    Posiada na pokładzie Uref o wartości 2,048V. Dla 12-bitowej rozdzielczości wynik konwersji podawany jest w mV.
    Komunikuje się z masterem przez i2c.

    LCD
    2x8 znaków zgodny z hd44780, z regulacją kontrastu

    Reszta:
    Dzielnik rezystorowy do pomiaru napięcia 1:10 o wartości sumarycznej 15k.
    Pomiar prądu przez połączenie równoległe rezystorów 0,1 Ohm, co daje wypadkowe R=0,05.
    Przy pomiarze prądu ustawiam PGA na 2 więc wynik konwersji mam bezpośrednio w setnych częściach ampera.


    Program:

    pisany w asmemblerze
    Główny algorytm wygląda mniej więcej tak:
    - wyślij konfigurację na kanał U
    - poczekaj czas konwersji
    - odbierz dane zsumuj w buforze

    - wyślij konfigurację na kanał I
    - poczekaj czas konwersji
    - odbierz dane zsumuj w buforze

    - podziel sumę wartości przez ilość próbek i wyświetl na LCD
    i tak w kółko







    To sumowanie próbek (16 lub 32) zrobiłem na wszelki wypadek, jakby pojawiały się tętnienia, choć i tak by wiele nie dało przy próbkowaniu 240S/s.

    Odpowiednia pojemność i zapas napięcia przed stabilizatorem to podstawa. Wtedy można kombinować ze zwiększeniem rozdzielczości zarówno odczytu prądu i napięcia.
    Płytka robiona metodą fotochemiczną, jako zabezpieczenie ścieżek użyłem kalafonii rozpuszczonej w acetonie.

    Testy:


    Niżej z napięciem nie mogłem zjechać bo akurat mierzy swoje własne.
    Miernik U/I PIC16F628A+MCP3422

    Podpięte obciążenie:
    Miernik U/I PIC16F628A+MCP3422

    Wyświetlacz jak widać wyjmowany:
    Miernik U/I PIC16F628A+MCP3422

    Tutaj widok od strony ścieżek, trochę dużo dałem rozpuszczonej kalafonii, ale co tam:)
    Miernik U/I PIC16F628A+MCP3422


    Fajne!
  • Arrow Multisolution Day
  • #2 24 Maj 2013 22:12
    domints
    Poziom 12  

    Całkiem fajny projekt, prosty a zarazem dokładny :D A gdyby ustawić zakres na 0-2V (przez zmianę dzielnika) uzyskałby bez problemu dokładność 0,001V? (Wiem, że nikomu to nie potrzebne, ale fajne, bo alternatywa dla chińczyka za 20zł jest)
    I jaki można tym max prąd zmierzyć i czy trudna jest zmiana zakresów pomiarowych?
    Jak prezentuje się kosztorys części? W Polsce mało kto używa MicroChipa. Ja sam niedawno dopiero zacząłem się tym bawić.
    Acz fajnie, że nie na Atmelu, tak po Amerykańsku :D

  • Arrow Multisolution Day
  • #3 25 Maj 2013 00:33
    Mariano5
    Poziom 11  

    Witam..
    Zewnętrzne przetwarzanie ADC jest już od wielu lat wykorzystywane w przeróżnym sprzęcie..
    Na chwilę obecną są już miniaturowe karty ADC z możliwością konfiguracji mierzonej wartości...
    Dane z takiej karty są przesyłane do jednostki centralnej typu złożony kontroler systemowy.

    stanlej81 napisał:
    swietna robota czy mierzy on natężenie tez z tego co widze? i o jakim zakresie?

    On mierzy tylko napięcie i nic więcej... (jednostka oraz zakres pomiarowy zależy od członu wejściowego przetwornika ADC)

    Dodano po 3 [minuty]:

    adam cs napisał:
    Czyli wykorzystuję 10-20% możliwości kostki i już mam lepsze parametry, niż rozwiązanie na gołym procku.

    Na gołym procku można zrobić naprawdę dużo, nawet jeśli on posiada 10-cio bitowe przetwarzanie

  • #4 25 Maj 2013 07:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    Witaj,

    adam cs napisał:
    Czyli wykorzystuję 10-20% możliwości kostki i już mam lepsze parametry, niż rozwiązanie na gołym procku.

    Ale też i koszty 2,5 raza większe :)

    Ciekawi mnie jakie (przy takim schemacie) masz szumy na najmniej znaczących bitach przy pomiarach 12-bit i 18-bit.
    Możesz pokazać (przy stabilnym sygnale mierzonym), kolejne odczyty bez uśredniania?

  • #5 25 Maj 2013 10:22
    Dar.El
    Poziom 40  

    Na zwykłym ICL7106/7 robię pomiar prądu do 19,99A na boczniku 0,005Ω i też mam rozdzielczość 0,01A i dużo mniejsze straty mocy i większy zakres. Dodatkowo pomiar +/- i auto zerowanie. Na uK opłaca się robić, gdy robią jeszcze coś dodatkowo a tak uzyskujemy taki sobie miernik. Dobrym rozwiązaniem jest zastosować ICL7135 lub podobny do pomiaru a obróbkę i wyświetlanie na uK, można bardzo dużo bajerów dodać.

  • #6 25 Maj 2013 11:26
    djoy
    Poziom 15  

    Witaj, na schemacie zauważyłem zwarty kondensator C6, czyli masz zwarcie między masą a zasilaniem "VDD".

  • #7 25 Maj 2013 12:25
    Mariano5
    Poziom 11  

    Dar.El napisał:
    Na zwykłym ICL7106/7 robię pomiar prądu do 19,99A na boczniku 0,005Ω i też mam rozdzielczość 0,01A i dużo mniejsze straty mocy i większy zakres.

    To ja poszedłem o krok dalej stosując przekładniki prądowe, bądź transduktory.
    Osobiście wystarcza mi wbudowane przetwarzanie ADC mikrokontrolera bowiem stosuję odpowiedni algorytm do zmiany zakresu pomiarowego.
    W moim przypadku jeden prosty i tani mikrokontroler obsługuje kilka procesów technologicznych.

  • #8 25 Maj 2013 19:25
    adam cs
    Poziom 14  

    dondu napisał:


    Ciekawi mnie jakie (przy takim schemacie) masz szumy na najmniej znaczących bitach przy pomiarach 12-bit i 18-bit.
    Możesz pokazać (przy stabilnym sygnale mierzonym), kolejne odczyty bez uśredniania?


    18-bit nawet nie sprawdzałem. To nie mostek tensometryczny:)
    Przy 12 bitach nawet bez żadnego kondensatora 100nF w torze pomiarowym, LSB jest stały.
    Schemat nie jest 100% odwzorowaniem, powstał na szybcika do ogólnego poglądu.

    W układzie mam 100nF przy każdym kanale, ale nie uznaje tych szczegółów za elementy krytyczne. Raczej jako książkowy obowiązek.


    Co znaczy "przy takim schemacie" czy mogłbyć rozwinąć?
    Bo ja pisząc o zwiększeniu rozdzielczości nie mam na myśli maksymalnej.
    To nie jest schemat dla 18-bitów:)
    ani 16, co najwyżej 14.

    Dar.El napisał:

    Na zwykłym ICL7106/7 robię pomiar prądu do 19,99A na boczniku 0,005Ω i też mam rozdzielczość 0,01A i dużo mniejsze straty mocy i większy zakres.
    Dodatkowo pomiar +/- i auto zerowanie.

    +/- i auto zerowanie to też posiada, w czasach ICL to faktycznie był wielki plus.
    Teraz to nic nowego.

    Dar.El napisał:

    Na uK opłaca się robić, gdy robią jeszcze coś dodatkowo a tak uzyskujemy taki sobie miernik. Dobrym rozwiązaniem jest zastosować ICL7135 lub podobny do pomiaru a obróbkę i wyświetlanie na uK, można bardzo dużo bajerów dodać.



    ICL7135? Wolałbym TC514, też z podwójnym całkowaniem, 4 wejścia, pojedyncze zasilanie i inne ulepszenia.
    Jednak w czasach "obciązenia cyfrowego" najlepszym rozwiązaniem było by True RMS w torze pomiarowym. Dalej to już bajka:)

  • #9 26 Maj 2013 09:33
    dondu
    Moderator Mikrokontrolery Projektowanie

    adam cs napisał:
    Co znaczy "przy takim schemacie" czy mogłbyć rozwinąć?

    Właśnie to:

    adam cs napisał:
    To nie jest schemat dla 18-bitów:)
    ani 16, co najwyżej 14.

    i chciałem wiedzieć, jak stabilne przy takim schemacie są pomiary, co opisałeś.
    Z ciekawości przy najbliższym zamówieniu kupię ten układ, bo opisane rezultaty są godne uwagi :)

  • #10 26 Maj 2013 11:33
    nukedman
    Poziom 12  

    dondu napisał:
    Z ciekawości przy najbliższym zamówieniu kupię ten układ, bo opisane rezultaty są godne uwagi :)


    12 bitów dla delta-sigma, z dodatkowymi filtrami RC na wejściu to jest naprawdę zero szału, nawet dla layoutu bez wylanej masy.

    Poza tym ta "automatyczna rekalibracja" co każdy pomiar trochę mi tu śmierdzi - takiej kalibracji nie da się wykonać na tym samym, rozkalibrowanym źródle referencyjnym, którego używa się też do konwersji. Co z tego że wzmocnienie i offset zostaną skorygowane, jak samo źródło pływa?

    domints napisał:

    Schemat powstał jak układ był już zmontowany.

    A tego to już kompletnie nie pojmuję, jak można najpierw zbudować a potem zaprojektować.

  • #11 26 Maj 2013 13:08
    Urgon
    Poziom 36  

    AVE...

    Spodziewałbym się przy tym przetworniku ADC przynajmniej 14 bitów rozdzielczości. Dać najprecyzyjniejsze źródło napięcia odniesienia, jakie można kupić, i autozerujący op-amp dla zakresu µA-nA i byłby z tego świetny sprzęt pomiarowy. Jak możesz, to dodaj interfejs szeregowy do łączności z komputerem i logowania pomiarów...

    nukedman napisał:

    domints napisał:

    Schemat powstał jak układ był już zmontowany.

    A tego to już kompletnie nie pojmuję, jak można najpierw zbudować a potem zaprojektować.

    Prototyp układu do terapii polem, który składam powstał w formie rysunku PCB. Schematu nie mam, wartości większości elementów nie wynotowałem nigdzie. A układ jakoś funkcjonuje, choć soft jeszcze nie napisany...

  • #12 26 Maj 2013 13:59
    nukedman
    Poziom 12  

    Urgon napisał:
    AVE...

    Spodziewałbym się przy tym przetworniku ADC przynajmniej 14 bitów rozdzielczości. Dać najprecyzyjniejsze źródło napięcia odniesienia, jakie można kupić, i autozerujący op-amp dla zakresu µA-nA i byłby z tego świetny sprzęt pomiarowy.


    Ten przetwornik ma możliwość pracy w trybie nawet 18-bitowym. Tylko co z tego? Wtedy ma 13 sampli na sekundę i tak długi czas reakcji, że nie wiem do czego można taki miernik wykorzystać - chyba jako interfejs do analogowego termometru. Poza tym ma jedynie wbudowane źródło odniesienia - tego wszystkiego dowiedziałbyś się, gdyby chciało Ci się zajrzeć do datasheeta. I NIE - nie byłby z tego "świetny sprzęt pomiarowy", chociażby dlatego że nie pozwolą na to tolerancje i współczynniki termiczne rezystorów. No i ta "rekalibracja" co pomiar przekreśla użycie tego ADC do wszelkich rejestratorów, bo wprowadza dodatkowe cykliczne błędy pomiarowe.

    Urgon napisał:

    Prototyp układu do terapii polem, który składam powstał w formie rysunku PCB. Schematu nie mam, wartości większości elementów nie wynotowałem nigdzie. A układ jakoś funkcjonuje, choć soft jeszcze nie napisany...


    Jeśli uważasz, że to właściwa droga, to życzę powodzenia w serwisowaniu. Szczególnie jeśli masz tam kondensatory SMD, które nie mają żadnych oznaczeń. Z resztą żeby kogokolwiek trzeba było przekonywać, że dokumentacja projektowa jest istotna, no to to już chyba świat się wali.

  • #13 26 Maj 2013 15:06
    adam cs
    Poziom 14  

    Nie uparłem się na akurat ten typ przetwornika tylko jak wcześniej wspomniałem była to dobra okazja do przetestowania programowego I2C.


    nukedman napisał:


    12 bitów dla delta-sigma, z dodatkowymi filtrami RC na wejściu to jest naprawdę zero szału, nawet dla layoutu bez wylanej masy.

    Nawet bez filtra RC róznicy nie widać.

    nukedman napisał:

    A tego to już kompletnie nie pojmuję, jak można najpierw zbudować a potem zaprojektować.

    Normalnie.
    Układy cyfrowe na uC, nie są skomplikowane lecz złożone (bardziej lub mniej), a to jest podstawowa róznica.
    ten układ ani nie jest ani skomplikowany ani złozony.

    Jesli się zna na pamięć pinologię danego procesora to tym bardziej nie trzeba zaglądać do schematu żeby zrobić aplikację 7805.
    Datascheet, kartka papieru i można lecieć ze ścieżkami.

    Aha i przy 18 bitach nie ma 13 sampli lecz 3:)

    Poza tym wcale ie twierdzę że to jest alternatywa dla wszystkiego wkoło.
    Ma swoje wady i zalety.
    Zalety które pozwolę sobie wymienić to:

    1) rozdzielczość 0,01 V dla zakresu 20V jest nie do osiągnięcia przez popularne atmegi czy pic-e z 10-bitowymi ADC. Co z tego że interpolacja? Co z tego że uśrednianie? Dla stabilnego sygnału mierzonego nic się nie uśredni choćby było i 1000 próbek.

    2) Zródło odniesienia - w procesorach (o ile pamiętam) np w atmedze ciężko zejść poniżej 3V, nie mówiąc o 2,048.

    3) Dobry wzmacniacz pomiarowy kosztuje (i zajmuje miejsce na PCB) ok tyle co ten przetwornik. A mało było pomysłów na elektrodzie żeby takowy dołozyć, bo ADC w atmedze nie chodzi przy względnie małym zewnetrznym napięciu Uref, albo że bocznik 1Ω jest nie do przyjęcia?

    4) Liniowość lepsza niż ICL7107

    Więc mając do wyboru robić miernik na wewnętrznym ADC procka tworząc jakieś dziwne algorytmy uśredniania, zwiększania rozdzielczości które w rezultacie nic nie dają
    albo
    brac 2x ICL7107 każdy po 40 nóżek, chociaż leżą w szufladzie nie chciało mi się projektować PCB,
    ... wybrałem swoje rozwiązanie, po zamontowaniu do zasilacza spełnia swoje zadanie.

  • #14 26 Maj 2013 15:23
    nukedman
    Poziom 12  

    Wszystko co piszesz (no może oprócz tego że słowo skomplikowany to co innego niż złożony - to są synonimy w języku polskim) to prawda. Oczywiście, że jest to rozwiązanie dużo lepsze od większości wbudowanych ADC - tego nie neguję. Widzę też, że jesteś w pełni świadomy ograniczeń tego układu. Brakowało mi jednak w opisie właśnie tych informacji - że jest to rozwiązanie z konkretnymi, dość istotnymi wadami. Bez tego mniej doświadczeni konstruktorzy myślą, że za 20zł zbudują coś, co pozwoli mierzyć napięcie z dokładnością (nie mylić z rozdzielczością) 100uV i mniej.

  • #15 26 Maj 2013 15:40
    Urgon
    Poziom 36  

    AVE...

    nukedman napisał:

    Urgon napisał:

    Spodziewałbym się przy tym przetworniku ADC przynajmniej 14 bitów rozdzielczości. Dać najprecyzyjniejsze źródło napięcia odniesienia, jakie można kupić, i autozerujący op-amp dla zakresu µA-nA i byłby z tego świetny sprzęt pomiarowy.

    Ten przetwornik ma możliwość pracy w trybie nawet 18-bitowym. Tylko co z tego? Wtedy ma 13 sampli na sekundę i tak długi czas reakcji, że nie wiem do czego można taki miernik wykorzystać - chyba jako interfejs do analogowego termometru. Poza tym ma jedynie wbudowane źródło odniesienia - tego wszystkiego dowiedziałbyś się, gdyby chciało Ci się zajrzeć do datasheeta. I NIE - nie byłby z tego "świetny sprzęt pomiarowy", chociażby dlatego że nie pozwolą na to tolerancje i współczynniki termiczne rezystorów. No i ta "rekalibracja" co pomiar przekreśla użycie tego ADC do wszelkich rejestratorów, bo wprowadza dodatkowe cykliczne błędy pomiarowe.

    Faktycznie, źródło napięcia wbudowane, ale z dryftem 15ppm, co nie jest najgorszym możliwym wynikiem. Przy 14 bitach masz 60SPS, przy 16 bitach już tylko 15SPS. Mój obecny multimetr ma prędkość pomiaru widoczną dla użytkownika na poziomie 2SPS. Masz układ dość dokładnego ADC w miarę przystępnej cenie. któremu za pomocą softu możesz zmieniać zarówno dokładność pomiaru, jak i wzmocnienie na wejściu. Zaprojektować PCB lepiej, zmienić elementy na lepsze, i można kombinować...
    nukedman napisał:

    Urgon napisał:

    Prototyp układu do terapii polem, który składam powstał w formie rysunku PCB. Schematu nie mam, wartości większości elementów nie wynotowałem nigdzie. A układ jakoś funkcjonuje, choć soft jeszcze nie napisany...


    Jeśli uważasz, że to właściwa droga, to życzę powodzenia w serwisowaniu. Szczególnie jeśli masz tam kondensatory SMD, które nie mają żadnych oznaczeń. Z resztą żeby kogokolwiek trzeba było przekonywać, że dokumentacja projektowa jest istotna, no to to już chyba świat się wali.

    Zrobiłem tak, bo program, z którego korzystam ma ubogą bibliotekę elementów dla schematów. Układ jest dość prosty pod względem elektronicznym, albowiem cała "magia" dzieje się w firmware, a hardware to zasadniczo podwójne źródło prądowe sterowane dwukanałowym DACiem, dla którego napięcie odniesienia, a tym samym prąd maksymalny układu generuje drugi podwójny DAC. I jedynym elementem SMD jest układ RTC, który prawdopodobnie usunę, więc nie ma sensu aż tak demonizować. Schemat mogę zawsze odrysować ręcznie, jak będzie potrzeba...

  • #16 27 Maj 2013 17:57
    Karol966
    Poziom 30  

    Witam

    Budowanie z sampli jest przyjemne :) Dokłada się parę groszy i jest sobie jakiś projekcik. Z drugiej strony sample bardzo często mają poważny problem - są ciężko dostępne w naszym kraju. Sam kiedyś zamówiłem sample z AS a dokładniej as1505 (i podobne), bardzo proste w obsłudze przetworniki DAC (użyłem ich zamiast docelowego, drogiego max518 do zasilacza sterowanego UP). Oczywiście żaden ze sklepów, z których korzystam ich nie posiada.

  • #17 28 Maj 2013 08:33
    kofi84
    Poziom 11  

    Rysujesz nieczytelne schematy:
    - opisy nachodzą na linie i elementy,
    - opis zacisków pomiarowych '8-O'.
    Nie znam Eagle, ale zakładam, że da się w tym programie podpisywać netki - troszkę to rozjaśnia schemat.
    Proponuje zamiast diody na wejściu zasilania dać tranzystor PMOS - mniejsze straty i lepsze zabezpieczenie przed odwrotną polaryzacją. Taka opcja tylko w przypadku wyższych napięć zasilających (tak, żeby się tranzystor nasycił).