Miernik panelowy ATmega8

icon01

Budując zasilacz, układ kontroli pewnej wielkości elektrycznej lub fizycznej bardzo wygodne jest zastosowanie jakiegoś sposobu wizualizacji parametrów pracy. W przypadku zasilacza jest to zazwyczaj napięcie wyjściowe i pobierany prąd. Można co prawda zastosować odpowiednią liczbę mierników uniwersalnych, jednak po pewnym czasie może ich braknąć, a komfort pracy na pewno na tym ucierpi. Zazwyczaj rozwiązaniem dość popularne układy scalonych woltomierzy ICL7107. Niestety, pomimo dość wiekowej konstrukcji i dostępności elementów ostateczna cena i funkcjonalność takiego miernika może skłonić do poszukiwań alternatywnego rozwiązania.

W dobie powszechnej dostępności tanich układów 8-bitowych mikroprocesorów z wieloma wbudowanymi układami peryferyjnymi (w tym przetwornikami ADC) warto zastanowić się nad ich zastosowaniem. Dodatkowym atutem takiego rozwiązania jest możliwość zastosowania stosunkowo tanich wyświetlaczy LCD posiadających możliwość prezentacji znacznie większej liczby informacji niż wyświetlacze 7-segmentowe.

Opisywana wersja miernika panelowego powstała w wyniku ograniczonej możliwości dostępnych projektów. Jego budowa jest stosunkowo prosta i ma na celu minimalizację kosztów wykonania tak, aby rozwiązanie to było konkurencyjne na tle pozostałych.

Na początku zostały ustalone założenia opisujące przyszłą funkcjonalność miernika:
- zakres pomiarowy napięcia do 50V,
- zakres pomiarowy prądu do 20A,
- rozdzielczość pomiarowa 10mV(A),
- możliwość wyświetlania innych parametrów pracy, ustalanych na podstawie dokonanych pomiarów,
- możliwość wyświetlania temperatury ,
- możliwość ingerencji miernika w stan pracy monitorowanych układów,
- możliwość implementacji dodatkowych funkcji w zależności od konkretnego zastosowania miernika,
- prosty interfejs.

sch01

Schemat ideowy układu przedstawiono na rysunku. Złącze CON2 umożliwia podłączenie scalonego czujnika temperatury DS18B20, złącze CON5 pozwala na sterowanie zewnętrznym urządzeniem (docelowo wentylator chłodzący), natomiast CON1 (poza funkcją programowania mikroprocesora) umożliwia implementację dodatkowych funkcji sterujących zewnętrznym układem. Użytkownik może ingerować w prace miernika wykorzystując dwa przyciski S1 oraz S2. Spełnia to część z wcześniej ustalonych założeń. Dodatkowo przewidziano możliwość zastosowania zewnętrznego źródła odniesienia dla przetwornika. Elementy C1 oraz U1, R2 montowane są zamiennie.

Główną częścią układu jest mikroprocesor ATmega8, który odpowiada za większość funkcji układu. Do wyświetlania informacji wykorzystano wyświetlacz LCD 16*2, a pomiar napięć realizowany jest przez wbudowany 10-bitowy przetwornik ADC. Napięcia ze złącza CON3 podawane są przez dzielniki napięciowe na kolejne wejścia pomiarowe. Przetwornik korzysta z wbudowanego źródła napięcia odniesienia 2,56V. W tym przypadku rozdzielność pomiarowa wynosi 2,5mV. Niestety taki zakres jest niewystarczający do pomiarów napięć do 50V, więc należy go zwiększyć stosując dzielnik napięcia 1/20. Pociąga to za sobą zmianę rozdzielczości, która wynosi teraz 50mV i nie pozwala osiągnąć zakładanej dokładności pomiaru miernika. Zastosowanie zewnętrznego przetwornika o większej precyzji pomiarowej wiąże się ze wzrostem kosztów wykonania niepotrzebną komplikacją układu.

Nie chcąc rezygnować z zakładanej rozdzielczości pomiarowej równej 10mV(A) zdecydowano się na zastosowanie nadpróbkowania przetwornika wbudowanego w układ ATmega8. Gotowe rozwiązanie podsuwa sam producent, firma Atmel. W nocie aplikacyjnej AVR121 „Enhancing ADC resolution by oversampling” (http://www.atmel.com/images/doc8003.pdf) przedstawiono ciekawy na sposób.

Zgodnie z twierdzeniem Nyquista, aby poprawnie zrekonstruować przebieg, częstotliwość jego próbkowania powinna być co najmniej 2-krotnie większa niż maksymalna częstotliwość składowa sygnału. Oczywiście rzeczywistość okazuje się nieco bardziej skomplikowana. Próbkowanie większych częstotliwości niż składowych (fmax) nazywane jest nadpróbkowaniem (oversampling).

equ01

Szybkość działania przetwornika  ADC w ATmega8 wynosi 15kSPS (dla rozdzielczości 10bit), z czego wynika, że maksymalna częstotliwość próbkowanego sygnału nie może przekraczać 7,5kHz. Algorytm „Oversampling and decimation” wykorzystywany do zwiększenia rozdzielczości próbkowania wymaga zgromadzenia większej ilości próbek. Może być to zrealizowane poprzez nadpróbkowanie sygnału, a każdy dodatkowy 1 bit (n) wymaga 4-krotnego przeprowadzenia tej czynności.

equ02

Widać tutaj, że zwiększanie rozdzielczości wiąże się ze zmniejszaniem maksymalnej częstotliwości próbkowanego sygnału. W układzie miernika panelowego mierzone są w zasadzie przebiegi stałe więc częstotliwość ich zmian jest niewielka.

Zwiększenie rozdzielczości z 10 do 12 bitów wymaga więc 16 krotnego nadpróbkowania przebiegu. Suma 16 liczb 10-bitowych daje wynik 14-bitowy. Aby ostatecznie otrzymać wynik 12-bitowy należy pozbyć się dwóch najmniej znaczących bitów sumy. Realizuje się to poprzez bitowe przesunięcie 14-bitowej sumy o dwa miejsca w prawo (przesunięcie w prawo o 1 bit odpowiada podzieleniu przez 2). Wartość o jaką należy podzielić otrzymaną sumę wynosi (liczba bitów).

equ03

Należy pamiętać, że wyliczenie średniej z określonej liczby próbek nie zwiększa rozdzielczości przetwornika! Działanie takie odpowiada jedynie zastosowaniu filtra dolno-przepustowego i może być (choć nie musi) stosowane wraz z opisanym algorytmem. Opisywany w AVR121 zagadnienie szumu sygnału nadpróbkowanego zostało pominięte podczas implementacji algorytmu.

Aby otrzymać zakładaną wcześniej 10mV(A) dokładność pomiarową dla całego zakresu 0-50V konieczne staje się zwiększenie rozdzielczości do 13-bitów. Wymaga to więc zgromadzenia 64 próbek i podzieleniu ich sumy przez 8 – ot cała tajemnica. Tak otrzymaną liczbę podstawić należy do wzoru pozwalającego obliczyć wartość zmierzonego napięcia po konwersji (patrz dokumentacja techniczna do ATmega8) pamiętając, że dzielnik równy jest teraz 8192 (wynik 13-bitowy).

W mierniku zastosowano dwa zakresy pomiarowe napięcia: 0-9,99V oraz 10-50V. W dolnym nie jest wykorzystywane nadpróbkowanie, w górnym rozdzielczość została zwiększona do 13-bitów. Dla pomiaru prądu zakres pomiarowy 2,56V jest wystarczający, gdyż przepływ zakładanego prądu 20A przez rezystor o wartości 0,1Ω wywoła na nim spadek napięcia 2V, który można zmierzyć bez stosowania dzielników. Tak duży prąd spowoduje wydzielenie na rezystorze 40W co pozwala wnioskować, że praktyczna wartość napięcia będzie zdecydowanie mniejsza (zastosowanie rezystora o mniejszej wartości).

pcb01

Płytka drukowana może nie jest wzorem miniaturyzacji ale nie o to chodziło. Jej wymiar jest podyktowany głównie wielkością wyświetlacza LCD oraz usytuowaniem przycisków sterujących. Część elementów jest w wersji SMD jednak z ich przylutowaniem nie powinno być większych problemów. Układ po poprawnym montażu działa od razu. Wymaga jedynie drobnej regulacji potencjometrów PR1 oraz PR2. Służą one do kalibracji wskazań wyników pomiarów, gdyż nie przewidziano takiej możliwości programowej. Jednak w pierwszej kolejności należy ustawić pewne wartości w menu ustawień miernika. Podaje się tam między innymi dokładną wartość napięcia odniesienia przetwornika ADC oraz wartości rezystora pomiaru prądu.

Aby wejść do menu ustawień parametrów pracy należy włączyć zasilanie miernika przyciskając jednocześnie oba przyciski. Ustawienie aktualnego parametru odbywa się z wykorzystaniem przycisków PLUS MINUS. Przejście do kolejnego ustawienia poprzez jednoczesne naciśnięcie obu przycisków. Po ustawieniu wszystkich pozycji menu ustawień miernik przechodzi do normalnej pracy.

menu01

W pierwszej kolejności ustawiamy zmierzoną wartość napięcia odniesienia przetwornika ADC. Okazuje się, ze jej wartość w różnych egzemplarzach układów może się nieco różnić. Dopuszczalny zakres ustawień to 2,00 – 3,00V. Kolejnym etapem ustawień jest wpisanie dokładnej wartości rezystancji stosowanej do pomiaru prądu. Dopuszczalny zakres ustawień to 1mΩ – 1Ω. Jako, że jest ona zazwyczaj niedużej wartości warto zastosować do jej wyznaczenia metodę techniczną. Miernik ma możliwość sterowaniem przełączaniem uzwojeń transformatora (do 3 zakresów), w menu ustawień możemy podać progi po przekroczeniu których ma nastąpić załączenie kolejnego uzwojenia. Gdy zachodzi również potrzeba monitorowania wartości temperatury pracy elementów mocy można wybrać jeden z dwóch obsługiwanych czujników temperatury: LM35 lub DS18B20. Kolejną funkcją (uzależnioną od ustawień sposobu pomiaru temperatury) jest wybranie temperatury po przekroczeniu której zostanie włączone chłodzenie aktywne (w postaci wentylatora).

Po poprawnym zmontowaniu układu oraz ustawieniu wymaganych wartości w menu ustawień należy dokonać finalnej kalibracji miernika. W tym celu należy podłączyć na wejście pewnego napięcia o znanej wartości, a następnie dokonać kalibracji wskazań miernika panelowego za pomocą potencjometrów PR1 oraz PR2. Czynność tą należy przeprowadzić dla dwóch wykorzystywanych zakresów pomiarowych: 0-9,99V (PR1) oraz 10-50V (PR2). Po tym zabiegu układ jest gotowy do pracy.

Jako, że układ miernika panelowego z założenia miał współpracować z opisywanym na stronie aktywnym obciążeniem i zasilaczem laboratoryjnym powstały dwie, nieco różniące się od siebie wersje oprogramowania (menu ustawień jest identyczne).

Wersja 3f – miernik do współpracy z zasilaczem laboratoryjnym.

menu03

W pierwszej linijce wyświetlana jest aktualna wartość napięcia oraz prąd monitorowanego układu z dokładnością do drugiego miejsca po przecinku. W drugiej linii znajduje się licznik pojemności przekazanej do układu zasilanego wyrażony w mAh oraz jedna z trzech wielkości pomocniczych. Jest to rezystancja obciążenia, moc przekazywana do układu oraz wartość temperatury (tutaj wyświetlony błąd pomiaru temperatury – nie podłączono wybranego czujnika). Zmianę pomiędzy wyświetlaniem tych wartości dokonuje się poprzez naciśnięcie prawego przycisku, lewy natomiast zeruje wartość wyświetlanej pojemności w dowolnej chwili.

Wersja 4e – miernik do współpracy z  układem aktywnego obciążenia.

menu02

Ta wersja programu oferuje dodatkową funkcję programowania pracy układu aktywnego obciążenia. Jest ona bardzo przydatna w przypadku formowania pakietów modelarskich i umożliwia ustawienie napięcie końca rozładowania licząc przy tym wartość pojemności pakietu. Lewym przyciskiem można rozpocząć proces rozładowania, natomiast prawym – przełączać pomiędzy trybami wyświetlania informacji dodatkowych. Na rysunku widać dodaną w tej wersji programu wartość ustawionego wcześniej napięcia końca rozładowania (EndVoltage). Wejście do menu ustawiania tego napięcia wymaga jednoczesnego naciśnięcia obu przycisków podczas pracy miernika.

Do sterowania funkcjami monitorowanego układu wykorzystano złącze programowania. Opis funkcji wyprowadzeń zamieszczono w tabeli. Sygnał aktywny oznacza podanie na wyjście stanu wysokiego bezpośrednio z wyjścia mikroprocesora. Wykorzystując je w układzie należy pamiętać o obciążalności takiego wyjścia i w razie konieczności zastosować dodatkowe elementy wzmacniające.

 

Wersja 3f Wersja 4e
MOSI Sterowanie załączaniem wentylatora Sterowanie sygnalizatorem dzwiękowym
MISO Sterowanie przekaźnikiem przełączania uzwojeń dla Vtr1 Sterowanie przekaźnikiem załączania/odłączania układu zewnętrznego
SCK Sterowanie przekaźnikiem przełączania uzwojeń dla Vtr2 Sterowanie załączaniem wentylatora

Na koniec tego przydługiego opisu warto zamieścić jeszcze ustawienia fusebitów jakie są wymagane do poprawnej pracy układu.

fusebit

Na koniec zdjęcie gotowego miernika do montażu na panel.

photo01
  

Aktualizacja 15-03-13

Użytkownika krzycho ucieszy zapewne fakt, że dokonałem kilku zmian w programie obsługującym układ do współpracy z aktywnym obciążeniem. Obecna wersja programu to 0.4e i poza usunięciem kilku błędów dodano sygnalizację dźwiękową osiągnięcia ustawionej wartości napięcia odcięcia (czyli moment rozładowania akumulatora) oraz timer zliczający czas rozładowania (dostępny jako jeden z wybieralnych wielkości pomocniczych). Według przeprowadzonych przeze mnie testów jego dokładność jest zadowalająca i w zupełności wystarczy do tego typu zastosowania.
  

Kategoria: Elektronika
14 Komentarzy
  1. krzycho says:

    Bardzo fajna konstrukcja.
    Rewelacja!
    Właśnie zaprogramowałem procka, bez błędów wszystko gra.
    Jestem na etapie budowy części analogowej obciążenia.
    Jeszcze nie wiem jak piszczy buzzer,ale dobrze by było gdyby zapiskał może 5 lub 8 razy a potem cisza.
    Może tak jest zobaczymy.
    Zostawiam czasem baterie na noc przy rozładowaniu.
    Ciągłe piszczenie zmusza do wstawania a tego mało kto lubi zwłaszcza jak jest 3,4 w nocy.
    Tak przyszło mi do głowy, że dobrze by było znać oprócz wyładowanych mAh także czas od załączenia do wyłączenia.(koniec procesu rozładowania).
    Może konstruktor coś wymyśli w tym temacie.
    Używając prostego programatora STK200 i darmowego Ponyproga2000 mając jeszcze LPT w komputerze dostajemy bardzo fajną rozładowarkę za którą jeszcze raz dziękuje w imieniu modelarzy.
    Na rynku nie ma takiego urządzenia,wszystkie ładowarko-rozładowarki są ograniczone mocowo do 5W jak autor napisał na wstępie.
    Jeżeli będzie możliwość po ukończeniu budowy zamieszczę fotki.
    Pozdrawiam.

  2. katek says:

    Sposób piszczenia buzzera zależy od niego samego, ale z reguły jest to ciągły ton. Jego funkcją w układzie obciążenia jest jedynie sygnalizowanie przekroczenie górnego limitu temperaturowego jednak faktycznie nic nie stoi na przeszkodzie, aby wykorzystać go do innych (dodatkowych celów). Jednak tylko w wersji przystosowanej do współpracy z miernikiem panelowym.
    Dodanie funkcji wyświetlania czasu rozładowania jest dobrym pomysłem, choć bez zmian układu będzie on tylko czasem przybliżonym (ze względu na jakość wewnętrznego generatora kwarcowego).

  3. krzycho says:

    Co do buzzera myślę że powinien piszczeć ale po zakończeniu rozładowania.
    Wentylator natomiast powinien zadziałać po osiągnięciu zadanej temperatury i tyle.
    Zastosowałem jeszcze na wejściu układ kontroli polaryzacji baterii.(różnie to bywa)
    A czy zegar da rady na tym procku czy trzeba rozbudowć lub dać inny ?
    A jak jest z histerezą temperaturową przy sterowaniu wentylatora ?

  4. katek says:

    Rola buzera jest całkiem inna. Co będzie jeśli obciążysz tak bardzo układ, że po załączeniu wentylatora temperatura będzie rosła dalej? Wtedy układ rozłączy obciążenie i uruchomi własnie sygnał dźwiękowy.
    Zegar da radę na tym procku. Można nieco go rozbudować o oscylator zegarkowy dla asynchronicznego trybu pracy timera. To da całkiem dokładny pomiar czasu.
    Histereza jest, kilkustopniowa.

  5. krzycho says:

    Jeszcze pytanie ?
    Na schemacie miernika panelowego jest CON3 czyli wejścia.
    Tzn.
    5-pomiar prądu(spadek nap. na R01/5W)
    4-pomiar napięcia (gdzie po przekroczeniu 10V zmiana automatyczna zakresu i pom. do 50V)
    pomiędzy plusem a minusem.
    3- to ?
    2- to ?

  6. katek says:

    Dwa ostatnie wejścia w obecnej wersji softu są nieużywane. Przewidziane są one w celu dodania 2 dodatkowych funkcji do współpracy z zasilaczem stabilizowanym 30V5A.

  7. krzycho says:

    Zauważyłem jedną dziwną sprawę.
    Wszystko chodzi pięknie do napięcia 9.35V na mierniku panelowym.
    Później pomimo zwiększenia napięcia pokazuje dalej 9,35V ,jakby nie przełanczał się zakres na procku.
    Czy to wina niprawidłowego zaprogramowania Atmegi czy przyczyna w samym sofcie ?
    Wersja 0,4b.

  8. katek says:

    Problem ten nie jest wynikiem błędu w oprogramowaniu – sprawdzałem. Co więcej zachowanie jest o tyle dziwne, że przełączenie zakresu pomiarowego działa od 9,99V, a nie 9,35V. Proszę sprawdzić jeszcze raz poprawność montażu, ustawienie fusebitów i o ile to możliwe użyć innego egzemplarza Atmegi.
    Przy okazji możesz wykorzystać nowy wsad wzbogacony o funkcje, które wspominałeś.

  9. krzycho says:

    Problem rozwiązany.
    Źle ustawiłem napięcie odniesienia i dlatego pozostawał na pierwszym zakresie teraz śmiga aż miło.
    Ale się nakombinowałem (inny procek, inny programator,inny program) a tu takie przeoczenie z mojej strony.
    Dzięki za softa jutro przeprogramuję i sprawdzę.

  10. krzycho says:

    Sprawdziłem wszystkie opcje i PEŁEN SZACUNEK dla twórcy pomysłodawcy tego urządzenia.
    Wszystkie parametry jak należy,sygnalizacja dźwiękowa po zakończeniu procesu rozładowania.
    Bardzo fajny pomysł z załączaniem wentylatorów na 1sek. po podaniu zasilania na procek.
    Wiadomo że sprawne i zadziałają kiedy trzeba.
    Pozostaje tylko podziękować.
    Może w przyszłości warto uruchomić interfejs do komputera wykres monitorować to była by bajka.

  11. Jarosław Tkaczyk says:

    Projekt naprawdę mi się podoba,
    Tylko mam problem np. by dostać IRFa.
    Czy dałbyś radę udostępnić plik eagla, by można było sobie zmienić IRFa na inny typ.
    Bardzo byłbym wdzięczny, a nie chcę na nowo sam robić płytki w eaglu.

  12. katek says:

    Niestety, nie ma takiej możliwości.

  13. zonxx says:

    Czy jesteś w stanie i czy masz chęci\możliwości wprowadzenia zmian w programie?
    Chodzi mi o to aby zamiast przekazanych mAh do obciążenia, było widoczne ustawienie ograniczenia prądowego tj ma to miejsce np w mierniku z elfly. Twój „twór” jest o tyle fajny że ma opcje przełączania uzwojeń trafa – mam nadzieje że w praktyce będzie to dobrze działa z zasilaczem 0-30v :)

  14. katek says:

    W chwili obecnej nie planuje wprowadzania zmian w oprogramowaniu miernika.

Dodaj komentarz