Pomiar napięcia akumulatora za pomocą Arduino.

Pomiar napięcia akumulatora za pomocą Arduino.

Elektronika dla początkujących 9 komentarzy do Pomiar napięcia akumulatora za pomocą Arduino.

Witajcie, dziś dowiemy się jak dokonać pomiaru napięcia akumulatora aby nasze urządzenie za nadto go nie rozładowało. Na przykład gdy mówimy o ogniwie li-ion  w postaci 18650 (zyskują coraz większą popularność) nie możemy dopuścić do rozładowania ogniwa poniżej 3V i ewentualnego przeładowania ponad 4,2V – dlaczego? Ponieważ poniżej tej wartości i powyżej następuje szybka degeneracja ogniwa co najprościej mówiąc, oznacza spadek pojemności ogniwa. Dlatego też powinniśmy monitorować napięcie akumulatora w naszym urządzeniu / układzie.

Rozważmy 3 przypadki w których chcemy dokonać pomiaru napięcia gdzie jego najwyższa wartość wyniesie:

  1. Mniej lub równe 5V.
  2. Od 0V do 10V.
  3. Powyżej 10V.

Przypadek 1:

Tutaj wystarczy wykorzystać Arduino bez żadnych dodatkowych elementów. Baterie / akumulator podłączamy bezpośrednio [-] do GND i [+] do pinu analogowego, od A0 do A5 (pamiętajcie żeby w taki sposób nie podłączać baterie / akumulator których napięcie przekracza 5V – może to trwale uszkodzić płytkę Arduino). Poniżej schemat połączenia.

Arduino i analog in

Jak widzisz podłączyłem 2 baterie 1,5V szeregowo co powinno sutkowa zwiększeniem napięcia przy takim połączeniu – czyli około 3V. Do pinu GND przyłączyłem [-] a do pinu analogowego A0 przyłączyłem [+]. Poniżej kod służący do odczytu wartości napięcia i wyświetlaniu jej w monitorze portu szeregowego.

Jak widać w szkicu wprowadziłem proceduję uruchomienia portu szeregowego aby móc obserwować co 0,5s wartość napięcia jakie zostanie odczytane z pinu analogowego A0.

W wierszu 14 dziele otrzymaną wartość przez 204.8 dlaczego tak robię ? ponieważ wartość odczytana z pinu A0 jest liczbą od 0 przy napięciu 0V do 1023 przy napięciu 5V. Aby przekształcić odczytaną liczbę na rzeczywistą wartość napięcia muszę najpierw obliczyć skalę czyli 1024(możliwości)/5(maksymalne napięcie)=204.8 a następnie przez tą liczbę dzielę orzynaną wartość na pinie A0. W monitorze portu szeregowego zobaczysz aktualną wartość napięcia.

Przypadek 2:

Jak już wiemy maksymalne napięcie jakie możemy mierzyć za pomocą pinów analogowych to 5V ale co zrobić gdy mamy odczynienia z napięciem wyższym (na razie nie przekraczamy 10V)? Rozwiązanie jest dość proste, będziemy potrzebować pary rezystorów o tych samych wartościach i zbudujemy „dzielnik napięcia”.

Na poniższym rysunku zbudowałem połączanie szeregowe z 6 baterii AA 1,5V co pozwoli uzyskać napięcie na poziomie 9V (6*1,5V). Dodatkowo wykonałem dzielnik napięcia z dwóch rezystorów 100Ω.

Arduino - pomiar napięcia 9v

Żeby lepiej zobaczyć jak to jest połączone, poniżej zamieszczam jeszcze schemat elektroniczny.

Arduino - pomiar napięcia 9v - schemat

Mam nadzieję że teraz już wszystko jest jaśniej :-). A zatem zobaczmy jak będzie wyglądał kod:

Kod jest praktycznie identyczny – czym się rożni? W wierszu 14 zamiast liczby 204.8 mamy liczbę 102.4 dlaczego? Ponieważ uzyskany wynik muszę pomnożyć dwukrotnie, wtedy otrzymam prawidłową wartość dla napięcia do 10V.

Wiersz 14 można zapisać też w taki sposób:

Lepiej jednak zapisać że dzielimy przez 102.4 ponieważ mikrokontroler  wykonuje mniej operacji i może działać „szybciej” – pamiętajcie o tym na przyszłość.

Przypadek 3:

Aby zmierzyć napięcie wyższe niż 10V za pomocą Arduino musimy wykonać „dzielnik napięcia” – niestety ten nie będzie już taki prost jak z przypadku 2, ale nie martwicie się to nie jest też zabójczo trudne i jest to do wykonania :-).

Arduino - pomiar napięcia powyżej 10V - schemat

Wzór pozwalający na obliczenie napięcia Uwyj gdy znamy Uwe R1 i R2, jest następujący:  CodeCogsEqn

Można też skorzystać kalkulatora który ułatwi nam pracę, na przykład dość przydatny program zawierający wiele opcji w tym do obliczania dzielnika napięć można zobaczyć tutaj Asystent elektronika 2.2.5 lub wersja online do dzielnika napięć po angielsku Voltage Divider

Gdy już wiemy jakie napięcie wyjściowe chcemy uzyskać oraz jakie napięcie mamy an wejściu czyli w akumulatorze to możemy obliczyć przekładnię dzielnika która pomoże nam w prawidłowym przekształceniu wartości z pinu A0 na rzeczywiste napięcie.

Wzór na obliczenie przekładni: CodeCogsEqn(1)

Author

9 komentarzy

  1. Paweł 16 marca 2016 at 22:58

    Witam, przeszukałem kupę internetu żeby coś takiego znaleźć.
    Super artykuł.

    Mam tylko pytanie, czy gdybym używał akumulatorków to trudno by było zrobić do powyższego schematu ładowanie?

    Gdy podłączę arduino pod usb, akumulatorki ładowały by się a gdy wartość była by powyżej określonych Volt, to odłączał by ładowanie.

    Proszę o odpowiedź.

    • admin 21 marca 2016 at 08:07

      Witaj, generalnie zalecam do czegoś takiego użycie ładowarki, a za pomocą Arduino możesz kontrolować stopień naładowania/rozładownia akumulatora, ładowarki posiadają odpowiednie układy które kończą proces ładowania po osiągnięciu odpowiednich wartości przez ogniwo. Są małe moduły ładowarek które można zasilać przez USB np takie: Ładowarka ogniw LI-ION

  2. Qulick 22 maja 2016 at 11:14

    Witam, nie mogę zrozumieć jednej rzeczy: pomiar napięcia 0-10v, dlaczego zastosował Pan rezystory tylko po 100om? Jak na moje oko zbyt duże straty energii, a poza tym najsłabsze rezystory(1/8 lub 1/4 W) spalą się w mgnieniu oka. I = 45mA -> P=0,405W

  3. Piotr 27 sierpnia 2016 at 13:33

    Co jak mam zmienne napięcie między 3v a 16v?

    • at 19 marca 2017 at 21:54

      To samo, co dla powyżej 10V

    • matrix5145 28 maja 2018 at 17:51

      Takie rozwiązanie jest nie opłacalne na dłuższą metę.
      Jak już stosować dzielnik napięcie to, żeby był załączany przez tranzystor na czas pomiaru. Tak to sam dzielnik generuje duże ilości ciepła i co za tym idzie straty. A na zasilaniu z bateryjnym zależy nam na jak najmniejszym zużyciu energii.

  4. Mikołaj 5 sierpnia 2017 at 10:58

    „Lepiej jednak zapisać że dzielimy przez 102.4 ponieważ mikrokontroler wykonuje mniej operacji i może działać „szybciej” – pamiętajcie o tym na przyszłość.”

    A czy kolega się co robi mikrokontroler jeśli dzielimy przez liczbę z przecinkiem? 😛

  5. Arek 8 sierpnia 2018 at 22:10

    Witam. Chciałbym wykonać układ ładowania akumulatorków przez panel fotowoltaiczny gdzie arduino będzie kontrolować napięcie i prąd. Wiem, że również będę musiał użyć regulatora napięcia. Dodatkowo chciałbym aby układ pilnował by akumulatorki nie zostały zbytnio rozładowane i przeładowane. Proszę o podpowiedź jak wykonać taki uklad.

  6. Pomysłowy dobromir 26 sierpnia 2018 at 01:45

    Dobra rada dla domorosłych majsterkowiczów:
    Użyjcie zewnętrznej łądowarki do zasilania takiego ukłądu w czasie testu i odepnijcie od komputera.
    Załatwiłem tak komputer, okazało sie potem ze w moim zasilaczu było jakieś przebicie w układzie sztucznego uziemienia i faza waliła w minus po stronie wtórnej. A że zasilacz był odizolowany galwanicznie przetwornica działała dopóki nie znalazła ujścia przez mase portu USB do uziemienia

    Straty:
    Zasilacz ATX, Płyta główna, Arduino leonardo, Przetwornik ADC, HUB USB

Leave a comment

Search

Back to Top