Woltomierz/ amperomierz/ termometr na ATMega8

2012-11-29-018

Multimetr powstał w celu mierzenia napięcie, natężenia zasilacza oraz temperatury tranzystora mocy. Układ z założenia miał być prosty, przejrzysty i zbudowany z części dostępnych od zaraz. Także po paru godzinach udało się uzyskać dość dobry efekt. Zakres pomiarowy tego multimetru to 25,5V i max 5A.

 

 

 

 


Sercem układu jest mikrokontroler AVR ATMega8 taktowana zewnętrznym kwarcem 8MHz(Q1) wraz z dołączonymi kondensatorami 27pF (C2, C3). Aby mierzyć napięcie wykonałem dzielnik napięcia na potencjometrze liniowym (R10) oraz dwóch rezystorach R5 i R4. Pomiar natężenia jest właściwie obliczany a nie mierzony. Dokonywany jest pomiar spadku napięcia na rezystorze R7, aby otrzymać wartość prądu, to wynik spadku napięcia na tym oporniku jest dzielony przez jego rezystancję. Zabezpieczenie pomiaru prądu jest zrealizowane za pomocą diody zenera (D1) oraz rezystora (R3). Ten cały układ jest zasilany napięciem 5V podawanym ze stabilizatora napięcia (schemat niżej):

Oraz schemat montażowy: (R10 to E$1, żółte połączenia to zworki)

montaz

Po złożeniu układu musimy skalibrować odczyta napięcia. W tym celu musimy podłączyć znane nam napięcie 5V tzn. wiemy w 100%, że takie jest podane na złącze X2 i kręcąc potencjometr R10 ustawiamy 5V. Multimetr jest przeznaczony do zasilacza także włączamy go w taki sposób: na X2 podajemy napięcie wyjściowe z zasilacza, a na X1 podłączamy zaciski, które wychodzą z zasilacza na przedni panel.

2012-11-17-939

2012-11-17-940

2012-11-17-942

2012-11-29-018

Kosz takiego układu oceniam na 35zł

w załączniku schemat, mozaika płytki i wsad do procesora :)
PS. odbicie lustrzane płytki już zrobione

Wersja 2. programu z możliwością pomiaru 35V

Wersja programu dla Arduino 25,5V 5A


Dzięki za uwagę, jak chcesz być na bieżąco z postami to kliknij ‚Lubię to !‚.
Pozdrawiam ;) 

  • Witam! Masz błąd w schemacie ideowym. Błąd polega na tym, że nie zgadzają się numery pinów z faktycznymi wyprowadzeniami Atmegi8. Reszty jeszcze nie zdążyłem przetestować ale na pewno napiszę o moich testach :)

    • Przepraszam, zaraz zaktualizuje pliki bo w ogóle nie wrzuciłem mozaiki płytki. Co do schematu to jest on zrobiony pod wersję SMD procesora także w porównaniu z wersją THT mogą być rozbieżności w ustawieniu wyprowadzeń (przykład Reset w obudowie THT jest na pinie nr 1 a w SMD na pinie 4). Dziękuję za uwagi ;)

  • Układ już złożyłem i pomiar napięcia działa bardzo dobrze z tym że nie działa mi pomiar natężenia ale może to być spowodowane tym, że nie mam diody zenera, jak dokupię to się okaże.
    Mam nadzieję, że się nie obrazisz ale musiałem zmodyfikować Twój program ponieważ potrzebuję miernika do zasilacza symetrycznego. Usunąłem pomiar temperatury i dodałem drugi raz to samo z tym, że na napięcie ujemne oraz skróciłem czas wyświetlania napisu "Zasilacz Laboratoryjny". Ogólnie zachwyca mnie prostota działania tego miernika, gratuluję!

  • Nie. nie obrażę się ;)na wyświetlaczu się pokazuje się jakieś duże natężenie czy w ogóle nie ma(0,00A) ? Również gratuluje wykonania miernika jak i zasilacza ;)

    • 0,00A Masz jakiś pomysł?

    • tego miernika nie włączałem bez diody także nie mogę stwierdzić czy jest dobrze, ale dioda powinna tam być, jak na razie proponuje sprawdzić czy dobrze wszystko jest połączone (potencjometr na ADC0, R3 na ADC1)

  • Espablo

    Witam
    Możesz zamieścić jeszcze raz załącznik ze schematem, mozaiką płytki oraz wsad do procesora. Podany link wygasł, a zainteresowałem się tym miernikiem i chciałbym sobie taki wykonać.

    • Cześć,
      link działa, spróbuj jeszcze raz przez Firefox'a. Jak się załaduje to kliknij File> Download i powinna się pobrać ;)
      Pozdrawiam

    • Espablo

      Ja używam Opery i dlatego nie działało. Na Firefox'e poszło bez problemu – Dzięki!!!

  • Anonimowy

    Rozumiem, że kolega do zmierzenia wartości prądu nie robi pomiaru różnicowego tylko pomiar napięcia na rezystorze R7 a następnie programowo oblicza I?

    • Tak, mierzony jest spadek napięcia na R7 a potem jest on dzielony przez wartość rezystora R7 (prawo Ohma)

  • Anonimowy

    No to ja też mam kilka pytań ;) Na jakiej zasadzie działa zabezpieczenie z diodą Zenera i dlaczego go nie ma na wejściu PC0 (gdyby na dzielnik podać zbyt wysokie napięcie)? Czy pomiar prądu nie powinien być robiony za rezystorem R7 a nie przed? Czy rezystor R3 nie fałszuje wyników? No i właściwie dlaczego nie jest robiony pomiar różnicowy tylko pomiar napięcia dla znalezienia wartości prądu? To tyle;) Pytam, bo zaciekawiło mnie to i chciałby coś takeigo samemu sobie wykonać:) Pozdrawiam.

    • Że tak powiem co do metody pomiaru bo takie moje widzimisię :) Po prostu lubię zrobić coś innego, coś co się "wybija ze schematu". Prąd nie jest mierzony tylko obliczany, na R7 jest mierzony spadek napięcia i dzielony przez jego opór, więc R3 nie ma jak fałszować wyniku. Na zabezpieczenie składa Dioda Zenera i R3. R3 obniża prąd wpływający do procesora, a dioda w tym układzie obniża napięcie do bezpiecznego poziomu. Ciesze się, że ktoś czyta tego bloga. Pozdrawiam :)

  • Pomiar temperatury na czym jest oparty?

    • Pomiar temperatury jest oparty na czujniku DS18B20 (1wire), jest on podłączany do złącza JP1

    • Po podłączeniu DS18B20, procesor nie odczytuje lub pokazuje jakąś temperaturę nie adekwatną do otoczenia i po chwili się resetuje.
      Zmieniłem DS18B20 i podobny objaw.
      Co do pomiarów napięcia i prądu, działa poprawnie.

    • Termometr się grzeje ? Cały układ jest zmontowany na mojej płytce ? Co się pokazuje na wyświetlaczu ? 85*C ?

  • Termometr nie grzeje się, sprawdzałem go na innych układach wykorzystujące DS18B20 dział poprawnie (dwa egzemplarze DS18B20 używałem).
    A co do płytki to zmontowana jest na twojej wzorze płytki.
    Na wyświetlaczu jest tylko 0.0*C przy R8 2,2K.
    Po zmianie R8 na 3,3 pojawiało się 85*C na przemian z temperaturą 141*C.
    Woltomierz już skalibrowałem, pomiar OK.

    • sprawdź czy nie ma żadnego zwarcia pomiędzy ścieżkami, zmieniłeś fusebity na zew. rezonator ? spróbuj zmienić na wewnętrzny RC 8MHz

  • Problem leżał po stronie fusebit, odczyt temperatury działa poprawnie.
    Dzięki za pomoc.

    • Gratuluję rozwiązania problemu ;) Pozdrawiam i życzę kolejnych udanych projektów

  • Anonimowy

    Czy da się zwiększyć zakres pomiaru do 30v ??

  • Można zwiększyć przy obecnej konfiguracji sprzętowej tylko trzeba by program zmodyfikować

  • Anonimowy

    A co dokładnie trzeba by zmienić z góry dziękuję za odp…

  • Anonimowy

    Bardzo bym prosił bardziej doświadczone osoby o pomoc potrzebuje miernik do zasilacza warsztatowego z zakresu od 0 – 30 V

  • Anonimowy

    zrobiłem multimetr wg twojego schematu, wgrałem twój program, niestety amperomierz nie działa, zauważyłem, że na boczniku jest ujemny spadek napięcia a tego adc nie może zmierzyć, czy amperomierz działa w twoim mierniku?

    • Witam,
      zmieniłeś fusebity na zew rezonator ? amperomierz działa na takiej zasadzie że wyświetla prąd pod obciążeniem tzn. jak nic nie podłączysz do miernika to prądu nie wskaże, sprawdź połączenia na płytce i elementy.

  • Anonimowy

    u mnie chodzi na wewnętrznym, bo chwilowo nie mam odpowiednich kondensatorów. Na wejście podłączyłem zasilacz z ograniczeniem prądowym, wyjście zwarłem, na adc1, zależnie od ustawionego ograniczenia, jest napięcie z zakresu od 0 do -0,35V czyli poprawnie (U= 3,5A*0,1Ohm)

    • Co do kondensatorów to on mogą być w zakresie 22-27pF, ale musi chodzić miernik na zewnętrznym rezonatrze

  • Anonimowy

    Ponawiam prośbę co zrobić , zmienić by działało do 30V ???

  • Anonimowy

    problem nie leżał w kwarcu, tylko podłączaniu, jak już pisałem na adc szło ujemne napięcie z bocznika, po zamienieniu wejścia i wyjścia miejscami wszystko działa XD

    • Miło słyszeć że problem był prozaiczny. Pozdrawiam i gratuluję ;)

  • czy amperomierz pokazuje w miliamperach ? np 100mA 175mA

  • pokazuje dwie cyfry po przecinku. 100mA = 0.1A

  • szukam takiego multimetru żeby pokazywał w mA, bo chce zrobić zasilacz do testowania telefonów komórkowych

    • on ma pokazywać jak duży prąd płynie przez układ czy chcesz wiedzieć ile prądu pobiera układ ? bo ten multimetr pokazuje ile prądu pobiera układ

  • chciałbym wiedzieć ile układ pobiera prądu

    • no to ten miernik się nada ;) Przepraszam że piszę z takim opóźnieniem

  • Czy mógłbym prosić o projekt do Eagle ponieważ chciałbym przerobić troszke płytkę wyłącznie na swoje potrzeby jeśli wyrazisz na to zgodę.Pozdrawiam i z góry dziękuję.

  • Anonimowy

    Czy istnieje możliwość pomiary większych obciążeń? Powiedzmy do 20A, oczywiście przy wymianie rezystora lub zastosowaniu bocznika, powiedzmy 75mV / 50A. Chciałbym skonstruować taki multimetr, jednak potrzebne mi natężenia to około 10-15A. Czy wsad do procesora uwzględnia takie natężenia ? Za odpowiedź z góry dziekuję.

    • Cześć,
      myślę, że jakby dla bezpieczeństwa wymienić bocznik R3 na bocznik o większej mocy np. 10 – 20W to powinno mierzyć i większe prądy, lecz "na sucho" ciężko mi cokolwiek więcej powiedzieć. Bo w tym projekcie to prąd jest liczony ze spadku napięcia na R3.

  • Anonimowy

    Hej. Mam bocznik 75mv/50A więc to nie problem. dostosowanie układu też. Najważniejsze dla mnie pytanie czy jak wszystko złoże czy nie skończy mi się zakres na 10A bo tak przewiduje program, czy tez bedzie pokazywał wartości i ograniczeniem tutaj jest zastosowanie opornika/bocznika. Dzięki z góry z odpowiedź.

    • Sądzę, że wymiana samego bocznika na taki sam (0.1R) tylko, że o większej mocy (50W powinno wystarczyć z zapasem dla 20A) powinna załatwić sprawę.

  • Przemysław Banach

    Witam. Chciałbym zapytac o środowisko w jakim programowałeś? to C++ czy coś innego? Bardzo mi zależy żby coś takiego samemu zrobic a jestem kompletnie zielony ;) Dziekuję.

    • Cześć,
      program został napisany w Bascomie. Ale z punktu czasu to była to lekka strata czasu. Lepiej już uczyć się Arduino, albo programować w C (AVR-GCC). Proszę

  • Piotr Mrozek

    Hej, Gratuluje miernika-świetny, dobrze wykonany projekt ;)
    Mam pytanie, jakie użyć rezystory i potencjometr gdy chcę robić pomiar napięcia 0-5V?

    • Konstrukcja jest ta sama ;) w programie możesz ewentualnie zmienić, żeby maksymalne napięcie wynosiło 5V ;)

  • Rafał Lewandowski

    Dobry układzik :) Szukam takiego miernika na jakimś microprocesorze, żeby wykorzystać do zasilacza warsztatowego. Początkowo chciałem zrobić na ATtiny13 (pierwszy układ jaki się trafił), ale później zacząłem szukać na ATmega8 i ten wydaje mi się najlepszym rozwiązaniem. Jednak mam kilka pytań:
    1. Czy dałoby radę w tym programie zmienić tak, żeby pomiar prądu był pokazywany do 3 miejsc po przecinku, czyli z rozdzielczością 1mA?
    2. Czy jeżeli dobrze rozumiem, to jeżeli bym skopiował część schematu odpowiedzialną za pomiar prądu i napięcia, czyli od pinu 23 i 24 oraz podłączyłbym to pod dwa kolejne piny ADC to uzyskałbym wtedy dwukanałowy miernik? Oczywiście kopiując część kodu i zmieniając tylko piny (czy coś jeszcze) w tym kodzie. I jeszcze żeby pomiary były wyświetlane w pionie, czyli kanał 1 po lewej stronie wyświetlacza, a kanał 2 po prawej. Oczywiście musiałbym wtedy zrezygnować z pomiaru temperatury, co dużą stratą dla mnie by nie było.
    Dokładnie taki układ jak potrzebuję widziałem w sklepie AVT (AVT5399), z tym, że tam zapewne trochę więcej tego kodu jest, bo istnieje możliwość zmiany wyświetlanych wyników + ekran powitalny.
    Jeżeli źle kombinuję to przepraszam, ale w sprawie mikroprocesorów jestem zielony ;) coś tam czytałem, ale pewnie to tylko bardzo mała część.

    • Cześć,
      odpowiadając na pytania:
      1. można, tylko trzeba dodać w 56. linii programu jeszcze jeden znak & i na nowo skompilować program. To co piszesz to nie zwiększenie rozdzielczości, a zwiększenie liczby cyfr po przecinku. W takim układzie trzeba by zbudować odczyt na bazie wzmacniacza operacyjnego, ale to już zupełnie inna bajka :)
      2. Tak można tak zrobić, tylko potrzeba w programie przerobić sposób wyświetlania na pionowy jak piszesz

      • Rafał Lewandowski

        Przepraszam że się zapytam Ciebie, ale na mikrokontrolerach tj. Atmega8 się nie znam. Mógłbyś podesłać jakiś schemat do takiego wzmacniacza? I jeżeli już o wzmacniaczach mowa, to chyba również dobrze by było gdybym zastosował taki układ do pomiaru napięcia, czy wystarczy do samego prądu? I jak z dokładnością takiego wyniku? W sensie ile mA może być różnicy od wartości realnej? I jeszcze który rezystor służy do ograniczenia max prądu pomiaru? Te 5A mi nie potrzebne, wystarczy 3A oraz czy zmnieszenie zakresu może wpłynąć na dokładność?
        Za odpowiedź oczywiście Ci dziękuję. W razie dalszych niejasności spytam się na elektrodzie ;)

        • To jest po prostu zwykły wzmacniacz o wzmocnieniu np. 10. Do pomiaru napięcia wzmacniacz jest zbędny, bo masz zastosowany dzielnik napięcia, który ma obniżyć napięcie, bo jakbyś np, bezpośrednio podał 10V z zasilacza to Ci uszkodzi tylko ADC (albo cały uC). Wzmacniacz przy pomiarze prądu jest stosowany, bo jest mierzony spadek napięcia na boczniku, a ten spadek napięcia jest zazwyczaj poniżej 1V. Natomiast dokładność ADC wynosi zazwyczaj 4,8mV. Zatem dokładność jest niska. Więc w tym celu stosuje się wzmacniacz operacyjny, który podbije wartość spadku napięcia na boczniku, żeby móc dokładnie mierzyć prąd. Maksymalną wartość prądu ustala się w programie, lecz przy pomiarze z samego ADC, większy zakres prądu oznacza mniejszą dokładność odczytu. Zawsze można zmienić napięcie referencyjne dla przetwornika ADC, ale znowu komplikujemy sobie układ. Mam nadzieję, że jak czasu mi wystarczy to w przeciągu miesiąca powinno udać się opublikować nowy miernik- o wiele dokładniejszy :)

          • Rafał Lewandowski

            Dziękuję Ci za wyjaśnienie jak ten układ dokonuje pomiaru :)
            No i oczywiście poczekam na drugą wersję :) I tak na razie czekam za zasilacz oraz muszę wykonać regulatory napięcia i prądu (zapewne LM317/LM350), więc na razie czekam na części i od dłuższego czasu zabieram się za wykonanie płytek i schematów, ale jakoś mi się nie chce :D
            Życzę powodzenia z kolejnym układem ;)

  • Mateusz Dziurka

    A może ktoś mi ten kod przetłumaczyć abym mógł go do arduino wgrać?!

  • jon12345

    Ja wykonałem miernik opierając się na twoim projekcie i mam kilka pytań mianowicie ja użyłem zewnętrznego napięcia odniesienia i kiedy wy kalibruje go to traci liniowość ustawiam 15v na mierniku tak jak moim multimetrze niestety napięcia zarówno w dół od niego jak i w górę nieco odbiegają od odczytów tak do ok 1 V .. Z prądem jest podobnie jedynie mniejsze prądu pokazuje dobrze większe już mają spore odchyłki . Czy u ciebie jest podobnie ja mam dodatkowo zaimplementowane ograniczenie prądowe ograniczenie pokazuje ale pod obciążeniem przysiada nie wiem czego się tak dzieję.

    • Jeżeli korzystasz z zew. nap. odniesienie to musisz mieć dostosowany układ pomiaru tak, żeby nie przekraczał napięcia odniesienia. Dodatkowo musisz program dostosować pod zewnętrzne napięcie odniesienia.

      • jon12345

        Moje zewnętrzne źródło odniesienia ma 2,46V twój dzielnik według moich obliczeń był na 5V (popraw jak się mylę) więc ja muszę go zmienić . A co z pomiarem prądu czy tu muszę wprowadzić jakieś zmiany.

        • tak, mój dzielnik był 5V, Ty musisz zmienić R5 na 11k i R10 na np. 1k albo 2k. Przy pomiarze prądu nic nie musisz zmieniać tylko w programie trzeba przerobić przelicznik

          • jon12345

            Dziękuję za pomoc dodam że mój miernik ma uśrednione pomiary ze 100 odczytów a także pomiar temperatury jak u Ciebie ale steruję również wentylatorem pwm . Dodatkowo zaimplementowałem przełącznik uzwojeń ale w moim zasilaczu go nie wykorzystam więc wykorzystam go do zabezpieczenia przed przegrzaniem ewentualnie zwarciem na wyjściu. Tak że twój projekt mnie zainspirował

          • fajne bajery, bardzo mi się podoba :D