Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wielozakresowy automatyczny miernik pojemności na ATtiny2313

wegi1 18 Mar 2016 21:40 6180 10
  • Wielozakresowy automatyczny miernik pojemności na ATtiny2313

    Układ jest dedykowany na ATtiny2313, ja przy okazji zagospodarowałem ostatni AT90S2313, jaki miałem i popełniłem miernik pojemności na nim.

    Krótki opis jak to działa:

    Miernik mierzy pojemność dołączonego kondensatora ładując go stałym prądem z lustra prądowego Q1, Q2 (2x BC557), które dodatkowo dla ich stabilności termicznej połączyłem folią termokurczliwą.
    Ładowanie odbywa się stałym prądem, więc nie po krzywej, tylko liniowo wg wzoru:


    Uc = I*t/C

    gdzie
    Uc - napięcie na kondensatorze
    I - prąd ładowania
    t - czas
    C - pojemność

    Przy okazji ta zależność pozwoliła mi zrozumieć, że kondensator przykładowo 100 nano na 100 volt posiada 10 razy więcej ładunku niż kondensator 100 nano na 10 volt (gdy naładowane są do swoich znamionowych napięć).

    Zaczynając od początku - miernik po uruchomieniu podciąga wyjścia do masy dla stabilizacji układu, ustawia badane wejście na rozładowywanie i czeka, potem zaczyna pomiar kalibrujący po kolei dla wszystkich trzech kanałów w celu kompensacji pojemności własnej oraz opóźnień przełączenia tranzystorów.
    Jeżeli kalibracja się udała, offsety są zapisywane dla każdego kanału i wyświetlane jeden raz na wyświetlaczu, jako tripplet (24bit), chociaż tak naprawdę są to 3-8-bitowe wartości. Jeżeli przy włączeniu był podłączony kondensator większy od około 30 pF, wówczas jako wartości offsetów zapisywane są dane ustalone empirycznie.
    Każdorazowo po dokonaniu pomiaru offset jest sprawdzany i w razie konieczności korygowany, gdy wynik jest ujemny - to kompensuje na bieżąco rozbieżności wynikające ze zmian temperatury na tranzystorach.

    W trakcie dokonywania pomiaru sprawdzane jest, czy zakres nie jest zbyt mały i czy pomiar nie trwa zbyt długo, w przypadku zbyt długiego pomiaru (około 0.5 sec), jeżeli nie jest to najwyższy zakres, zostaje automatycznie wznowiony pomiar na kolejnym kanale.
    Po wykonaniu pomiaru sprawdzane jest, czy wartość nie jest zbyt niska dla danego zakresu i jeżeli jest zbyt niska, korygowany jest zakres pomiarowy.
    Jeżeli wartość nie została uznana za zbyt niską, zostaje przetransformowana ilość "kliknięć" zegara na wynik zrozumiały dla nas i wyświetlony zostaje on na wyświetlaczu LCD w dwóch wersjach - jako pomierzoną założoną pojemność dla danego kanału (a są to pikofarady dla kanału pierwszego i odpowiednio nanofarady oraz mikrofarady) oraz w drugiej linii wynik jest przekształcany trzy dekady powyżej, co może być pomocne w przypadku dużych wartości. Z pikofaradami wyświetlane poniżej są nanofarady itd.




    Po prezentacji wyniku zakres jest przełączany na wyższy cykl pomiarowy, po 3 sekundach rozpoczyna się od nowa. 3 sekundy są wystarczające dla naszej percepcji odczytanych wyników, ponadto rozładowuje się w tym czasie kondensator oraz stabilizuje się układ pomiarowy.

    Co jest plusem urządzenia, to fakt, że wszystko odbywa się automatycznie bez ręcznego przełączania zakresów.
    Miernik został zbudowany bez dodatkowych elementów często wykorzystywanych w takich konstrukcjach w postaci 555 - jej funkcję przejął sam mikrokontroler.
    Napięcie referencyjne zostało ustalone na poziomie 4/5 napięcia zasilającego, co daje dość dużą rozdzielczość przy niskich pojemnościach (4 „ticki” na pikofarad przy kwarcu 8MHz).

    Zakres mierzonych pojemności można uznać, od 1pF do 4294967295 „ticków” zegara (32bit unsigned value), co po transformacji daje 452101 uF (taki pomiar trwałby 536 sekund). Oczywiście nie posiadam tak dużych kondensatorów (mało tego - po pomiarze nie zdążyłby się on rozładować!).

    Dokonanie pomiaru odbywa się po włożeniu do zacisków nóżek kondensatora. Nie muszę dodawać, że należy wkładać kondensator uprzednio rozładowany, bo może się to skończyć źle dla mikrokontrolera. :-)

    Tranzystor Q3 rozładowuje mierzony kondensator, tranzystory Q4, Q5 i Q6 pracują jako zwykłe przełączniki dla wyboru zakresu (kanału) pomiarowego.

    Aby zmieścić się w dostępnych 2KB flash z obsługą wyświetlacza LCD, przerwania, przechwytywania TC1, konwersji 32bit unsigned do ASCII fixed point value, posiłkowałem się Assemblerem z pakietu producenta Atmel Studio 4 - było wystarczające. Program zajął 1094 bajtów (około 55%) z dostępnych 2048.

    Kalibracja:
    Ustalenie napięcia odniesienia na poziomie 4/5 napięcia zasilającego (4V) za pomocą PR1.

    PR2, PR3, PR4 – kalibracja dla każdego kanału. Posiłkować się można wzorcowymi kondensatorami, lub kondensatorami o znanej nam pojemności.

    Układ można programować na płytce przez ISP – złącza są wyprowadzone na goldpinach dla wyświetlacza LCD i dodatkowy goldpin reset jest również wyprowadzony na płytce (przez rezystor 100-omowy).

    W załączeniu schemat, plik źródłowy asm, wynikowy hex i zdjęcia. Mój miernik wykonałem na zwykłej płytce prototypowej, nie tworzyłem więc plików PCB. Jeżeli ktoś pokusi się o przeniesienie schematu i zamówi płytki, chętnie odkupię jedną dla siebie. :)


    Fajne!
  • #3 19 Mar 2016 16:22
    wegi1
    Poziom 11  

    leonow32 napisał:
    Dobry układ edukacyjny :) zamiast łączyć dwa tranzystory termokurczakiem lepiej wziąć od razu dwa tranzystory w jednej obudowie - jest to o tyle lepsze, że oba są na tej samej płytce krzemowej. Kosztuje grosze a działa zdecydowanie lepiej.



    Z całą pewnością taki element jest bardziej pro i user friendly. Ja po prostu złożyłem ten miernik z elementów, jakie posiadam w szufladzie. Dziękuję za pomocną opinię.

    Poniżej jeszcze nie rozmontowany układ z wstępnej fazy testów.

    Wielozakresowy automatyczny miernik pojemności na ATtiny2313

    Obecnie zastanawiam się nad przeróbką softu pod Arduino i zrobienie przystawki dla Arduino do pomiaru pojemności.

    Może dość chaotycznie opisałem ten miernik i chciałbym dodać kilka zdań.

    Na zdjęciu płytki widać więcej goldpinów - z nich korzystałem w trakcie testów, gdy procesor był na osobnej płytce. To są piny do pomiaru napięcia na kondensatorze, masy, zasilania i ręcznego podpinania do +5V bazy tranzystora odpowiedzialnego za dany kanał. Drugie złącze ARK jest dla podłączenia zasilania bez wtyku, poprzez przewody.

    Dla uproszczenia układu elementy R5, R6, R4, goldpin pod ISP reset i microswitch nie są niezbędne do jego działania. Jeżeli nie korzysta się z wyświetlacza negatywowego z podświetleniem PR6 także nie jest niezbędny. Można jeszcze zrezygnować z mostka M1, ale wtedy należy zwrócić szczególną uwagę na biegunowość podłączanego zasilania i musi to już być napięcie stałe.
    Nie zaznaczyłem także, że wejściowe kondensatory powinny być na co najmniej 16V - uciekło mi to :)

    Wartość rezystora R8 nie jest dogmatyczna, może być to równie dobrze 5k, 5k6, czy 6k... ewentualnie w przypadku niemożności ręcznej kalibracji należy zmienić mnożnik w programie dla nanofaradów, lub dodać jedno dzielenie po mnożeniu...

    Rezystor R4 w trakcie montażu wlutowałem omyłkowo, jednakże pozostawiłem go, jako zabezpieczenie przy kalibracji, aby nie doprowadzać do zwarcia.
    Ważna jest wielkość potencjometru R1 i aby był wieloobrotowy. Podczas testów doprowadzałem Vref przez 500k i 10k, jednakże najbardziej stabilnie układ zachowywał właśnie przy 1k.
    Z trywialnych rzeczy zapomniałem dodać, aby mierzony kondensator podłączać zgodnie z jego polaryzacją, jeżeli ją ma.

    Bardzo niestabilnie układ pracował gdy 3cia nóżka PR2, PR3, PR4 była podłączona do masy. Po pozostawieniu ich w powietrzu stabilność jest zadowalająca nawet dla pikofaradów (pomiar nie "pływa"). Dla jasności - w powietrzu pozostają także wyprowadzenia procesora PD0, PD1, PD6.

    Nie da się również poprzez zwiększenie rezystancji na pierwszym kanale zwiększyć rozdzielczości mierzonych pikofaradów, ponieważ przy tak małym prądzie źródło prądowe przestaje pracować.

    Podczas pisania oprogramowania napotkałem na dziwny problem, który nadawałby się do założenia wątku. Było to dziwne zachowanie mikrokontrolera polegające na samoistnym wywoływaniu przerwania CAPTURE_TC1 krótko po wystąpieniu przerwania TOV1. Otóż najpierw próbowałem obsługiwać dwa przerwania – jedno od przechwycenia wartości TC1 przez komparator (tak właściwie zapomniałem też dodać, że układ wykorzystuje komparator i TC1), oraz drugie do zliczania przepełnienia TC1. Niestety, jeżeli pojemność mierzonego kondensatora była bliska około 10-20 cykli przepełnień TC1, wówczas kilkanaście cykli po wystąpieniu przerwania TOV1 generowane było kolejne przerwanie CAPTURE_TC1 i układ jakby zamierał w tym punkcie, czyli mierzona pojemność już się nie zmieniała do momentu wyjęcia i ponownego podłączenia kondensatora. Wobec tego zrezygnowałem z obsługi dwóch przerwań, co rozwiązało problem. Jest jeszcze jedna przypadłość - po wygenerowaniu przerwania TOV1 jednocześnie w rejestrze TIFR zapala się flaga OCF1A i ustaliłem, że również należy ją kasować razem z flagą TOV1, ponieważ daje to niekiedy także niepożądane wywołanie IRQ.

    I to chyba tyle - podsumowując krótko: Układ mierzy czas ładowania kondensatora stałym prądem za pomocą TIMER1 taktowanego kwarcem 8MHZ oraz za pomocą własnego komparatora, do którego doprowadzono napięcie referencyjne 4/5 VCC. Z uprzednio podanego wzoru wynika, że znając czas ładowania kondensatora, wartość prądu ładowania oraz panujące na nim napięcie można określić jego pojemność.

    Edit:

    Testowane na ATtiny2313 i AT90S2313 (ATtiny jest bardziej stabilne).

  • #4 19 Mar 2016 16:49
    mkpl
    Poziom 37  

    Fajny układ ale nikt nie wspomniał o jednej wadzie.

    Taki miernik musi potem rozładować kondensator. Policz sobie jaki prąd/ilosć energii dostanie przy zwieraniu od tak tego kondensatora? Myślę, że konieczny jest jeszcze rezystor w szereg z tranzystorem w celu rozładowywania.

    Jest szansa na dorobienie pomiaru ESR?

  • #5 19 Mar 2016 17:03
    wegi1
    Poziom 11  

    mkpl napisał:
    Fajny układ ale nikt nie wspomniał o jednej wadzie.

    Taki miernik musi potem rozładować kondensator. Policz sobie jaki prąd/ilosć energii dostanie przy zwieraniu od tak tego kondensatora? Myślę, że konieczny jest jeszcze rezystor w szereg z tranzystorem w celu rozładowywania.

    Jest szansa na dorobienie pomiaru ESR?


    Hmm... A rezystorem nie jest 3k na bazie w miejsce 1k na pozostałych ? To nie ogranicza wystarczająco prądu rozładowywania ?

    Nie mam kondensatorów tak wielkich co rozładowywały by się dłużej jak 3 sekundy (ponad tyle rozładowuje się każdorazowo kondensator). Co do ESR - może na wyższym procku gdzie więcej pamięci na takie popisy, natomiast tak szczerze... Takie pomiary odbiegają od rzeczywistości. Można się bawić i wychwalać o ESR itd, ale faktem jest że ładowanie kondensatora na kilkadziesiąt miliwoltów nie oddaje jego charakterystyki i jest tylko gdybanie i pokazanie wycinka charakterystyki - nikt o tym nie mówi w takich projektach, a tak jest w rzeczywistości. Prawdę powie tylko oscyloskop i będzie ona zależna od częstotliwości także.

    Edit:

    Mówiąc inaczej - doświadczalnie stwierdziłem, że pomimo otwarcia tranzystora rozładowującego Q3 przy jednoczesnym otwarciu trzeciego kanału Q6 kondensator zostanie docelowo naładowany (wolniej ale się naładuje) Co oznacza, że przez kanał 3 płynie większy prąd gdy jest włączony, niż przez kondensator (Edit2 - tranzystor oczywiście a nie kondensator) rozładowujący.

    Jakieś mutanty po jednorazowym pomiarze trzebaby rozładowywać ręcznie to fakt.

  • #6 20 Mar 2016 00:52
    mkpl
    Poziom 37  

    Głupi przykład. Mierzyłem prądy zwarcia kondensatorów Jamicon z serii TK. 470uF potrafił się rozładowywać prądem zwarciowym około 300A a większe pojemności czyli 2mF i więcej to 500A bez problemu stąd też moje pytanie.

  • #7 20 Mar 2016 10:45
    wegi1
    Poziom 11  

    @mkpl według mnie nie występuje tu zjawisko zwarcia o którym piszesz. Prąd rozładowywania jest ograniczony prądem bazy tranzystora, jest on z kolei ograniczony rezystorem na bazie, który celowo został dobrany większy, aby nie dokładać rezystora o którym piszesz.

    Jeżeli ktoś chce, może dołożyć rezystor 100 omów do tranzystora Q3 nie będzie to nic złego.

    Problem na który zwróciłeś uwagę, to fakt że duże kondensatory nie zdążą się w 3 sekundy rozładować - muszę zaimplementować funkcję, która uzależni czas rozładowywania od czasu ładowania (tylko dla 3ciego kanału).

    Przebieg pomiaru kondensatora 330nF na drugim i trzecim kanale i 100uF na kanale trzecim.

    Wielozakresowy automatyczny miernik pojemności na ATtiny2313

  • #9 22 Mar 2016 11:10
    Vira
    Poziom 11  

    Firmę i adres www masz na wyświetlaczu, a tam kilka modeli DSO

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