Trójkanałowy moduł pomiaru napięcia, prądu i mocy do Raspberry Pi

Trójkanałowy moduł pomiaru napięcia, prądu i mocy do Raspberry Pi

Opisana nakładka do Raspberry Pi umożliwia pomiar napięcia, prądu i mocy trzech niezależnych odbiorników prądu stałego. Maksymalny zakres pomiarowy napięcia to 0...32 V, zakres pomiaru prądu zależy natomiast od doboru rezystora pomiarowego i w modelu prototypowym wynosi 0...5 A.

Podstawowe parametry:
  • funkcje: pomiar napięcia, prądu i mocy DC,
  • liczba kanałów: 3,
  • zakres pomiaru napięcia: 0...32 V,
  • zakres pomiaru prądu: 0...5 A (konfigurowalny – patrz tekst),
  • rozdzielczość przetwornika ADC: 11 lub 14 bitów,
  • zasilanie układu: 3,3 V (z Raspberry Pi),
  • pobór prądu: 450 μA (odczyt)/15 μA (uśpienie).

Moduł zbudowany jest w oparciu o specjalizowany układ monitora mocy PAC1921 firmy Microchip. Strukturę wewnętrzną układu zaprezentowano na rysunku 1.


Rysunek 1. Budowa układu PAC1921 (za notą Microchip)

Pomiar odbywa się po stronie dodatniej szyny zasilania (tzw. tryb high–side). Napięcie jest mierzone bezpośrednio na wyprowadzeniu SENSE+, w zakresie 0...32 V z możliwością programowego ustalenia dodatkowego wzmocnienia (×1, ×2, ×4, ×8 lub ×32). Prąd mierzony jest metodą pośrednią poprzez pomiar spadku napięcia na rezystorze pomiarowym, podłączonym pomiędzy wyprowadzenia SENSE+/– wbudowanego wzmacniacza różnicowego. Maksymalny zakres mierzonego spadku napięcia VSENSE to 100 mV. Wbudowany wzmacniacz o programowanym w ośmiu stopniach wzmocnieniu (×1, ×2, ×4, ×8, ×16, ×32, ×64, ×128) umożliwia realizację zmiany zakresów, bez konieczności stosowania dodatkowych elementów zewnętrznych. Istnieje także możliwość użycia rezystora pomiarowego o możliwie najmniejszej wartości, w celu minimalizacji strat mocy i spadku napięcia na układzie pomiarowym. Jest to szczególnie istotne w aplikacjach, w których mierzony jest prąd pobierany z baterii lub akumulatora.

Oba tory wzmocnienia sygnalizują przekroczenie dopuszczalnego zakresu ustawieniem odpowiednich flag w rejestrach, co ułatwia programową obsługę zmiany wzmocnienia. Napięcia uzyskane w części analogowej przetwarza wbudowany konwerter ADC o rozdzielczości ustawianej przez użytkownika na 11 lub 14 bitów, zaś pomiar mocy realizowany jest programowo. Możliwa jest filtracja sygnału i wybór czasu integracji. Układ PAC1921 konfigurowany jest poprzez magistralę I²C i obsługuje do 16 adresów ustalanych poprzez dobór wartości rezystora podłączonego do wyprowadzenia ADDR_SEL. Układ ma wyprowadzenie !READ/INT umożliwiające sprzętowe sterowanie pomiarami i synchronizację kilku układów w ramach większego systemu. W aplikacjach realizujących np. zabezpieczenia przeciążeniowe, w których niedopuszczalna jest zwłoka związana z odczytem danych przez magistralę I²C, możliwe jest zastosowanie konfigurowalnego wyjścia analogowego, na które może zostać wyprowadzona zmierzona wartość napięcia, prądu lub mocy.

Schemat modułu pokazano na rysunku 2. Zastosowano trzy identyczne bloki pomiarowe oparte na układach PAC1921. Mierzone napięcia doprowadzone są do złącz MTRA...C, pomiędzy wyprowadzenia 1 (INx) i 2 (GND). Obciążenia podłączono do wyprowadzeń 3 (OUTx), 2 (GND). Rezystory pomiarowe RSx o wartości 20 mΩ/3 W umożliwiają pomiar prądu w zakresie 0...5 A. Magistralę I²C doprowadzono do wszystkich układów, zaś adresacja odbywa się poprzez zmianę wartości rezystora Rx2, podłączonego do wyprowadzenia ADR każdego układu, zgodnie z kartą katalogową. W modelu układy dostępne są kolejno pod adresami 0x4C, 0x4D, 0x4E. Równolegle podłączone wejścia !RD/INT umożliwiają sprzętową synchronizację układów sygnałem INT. Układy zasilane są napięciem 3,3 V, pobieranym ze złącza GPIO Raspberry Pi.

Rysunek 2. Schemat ideowy układu

Układ zmontowano na dwustronnej płytce drukowanej zgodnej z formatem Raspberry Pi Zero, co oczywiście nie wyklucza stosowania modułu z innymi modelami Raspberry Pi. Rozmieszczenie elementów pokazano na rysunku 3.

Rysunek 3. Rozmieszczenie elementów modułu

Montaż układu nie wymaga opisu. Prawidłowo zmontowany moduł pokazano na fotografii tytułowej. Moduł nie wymaga uruchamiania, należy jednak dobrać wartości rezystorów pomiarowych odpowiednio do zakresu mierzonego prądu, pamiętając o nieprzekraczaniu maksymalnego spadku napięcia na bocznikach równego 100 mV. Od spodu płytki są przewidziane pola lutownicze pod opcjonalny rezystor 2512, połączony równolegle z rezystorem pomiarowym.

W celu szybkiego sprawdzenia działania modułu można użyć narzędzi i2ctools. Po podłączeniu zasilania i obciążenia do złączy MTRx, sprawdzamy detekcję układów na magistrali poleceniem i2cdetect –y 1. Wynik detekcji można zobaczyć na rysunku 4.


Rysunek 4. Detekcja układów PAC1921

Układ PAC1921 pracuje w trzech trybach: integracji (int), odczytu (read), uśpienia (sleep).

W pierwszym z nich układ jest w pełni aktywny i integruje (mierzy i przelicza) sygnał sterowany w jednym z dwóch trybów. Pierwszy to sterowanie sprzętowe stanem wysokim wyprowadzenia !READ/INT, a drugi to sterowanie programowe poprzez rejestr konfiguracyjny pod adresem 0x01 (Integration Configuration Register), za pomocą zmian stanu bitów 0 (INT_EN=1) oraz 1 (RIOV=1). RIOV=1 wyłącza sterowanie sprzętowe wyprowadzeniem !READ/INT. Pobór prądu podczas integracji jest mniejszy niż 900 μA.

Stan odczytu wiąże się z niższym poborem mocy. Gdy pin !READ/INT jest utrzymywany w stanie niskim przez czas tREAD co najmniej 9,8 μs, to urządzenie pozostaje w stanie odczytu. W przypadku sterowania programowego, układ można wprowadzić w ów stan ustawiając stan bitu 0 (INT_EN=0). Stan odczytu kończy integrację, uruchamia wewnętrzny licznik czasu uśpienia, aktualizuje rejestry oraz przesyła wybrany wynik pomiaru do wyjściowego przetwornika cyfrowo-analogowego (wyprowadzenie OUT) i wprowadza urządzenie w stan niskiego poboru mocy. Pobór prądu w stanie odczytu jest mniejszy niż 450 μA.

W stanie uśpienia pobór mocy jest najniższy. Domyślnie urządzenie przechodzi w ten tryb automatycznie, gdy pin !READ/INT (lub bit 0, czyli INT_EN w trybie sterowania programowego) jest utrzymywany w stanie niskim dłużej niż czas tSLEEP równy około 1,088...1,203 s. Tryb uśpienia może być też wyzwolony ustawieniem w rejestrze Control Register (pod adresem 0x02) bitu 2 SLEEP w stan logicznej jedynki. Pobór prądu w stanie uśpienia jest mniejszy niż 15 μA.

Przed pomiarem należy oczywiście skonfigurować układy – pełna lista rejestrów PAC1921 znajduje się w dokumentacji producenta. Przykładowo w celu pomiaru napięcia w zakresie 0...16 V i prądu 0...5 A z 14-bitową rozdzielczością konfigurujemy rejestr Gain Configuration (0x00):

i2cset -y 1 0x4c 0x00 0x01
// I_RES/V_RES=14bit, DI_GAIN=1x, DV_GAIN=2x

oraz ustalamy liczbę próbek, załączamy filtry i sterowanie programowe, tryb pomiaru INT w rejestrze konfiguracji:

i2cset -y 1 0x4c 0x01 0x3F
// SMPL=16 próbek, VSFEn/VBFEN=1 filtry załączone, RIOV=1 sterowanie programowe

Ustawiamy także tryb integracji:

i2cset -y 1 0x4c 0x01 0x3F

a następnie tryb odczytu:

i2cset -y 1 0x4c 0x01 0x3e

i odczytujemy rejestry PAC1921:

i2cdump -r 0x00-0x2f -y 1 0x4c

Pomiar odbywa się cyklicznie poprzez zmianę trybów pracy układów PAC1921. Zmiana konfiguracji układu (np. wzmocnień) powinna odbywać się w trybie odczytu. Każdorazowo po odczycie rejestrów zawierających wyniki pomiarów (Vbus, Vsense) wymagane jest przeliczenie wyniku w zależności od wybranego wzmocnienia (DI_GAIN, DV_GAIN). Sposób przeliczania podany jest w nocie aplikacyjnej. Po wykonaniu opisanej sekwencji kolejno dla wszystkich trzech układów, przykładowy odczyt rejestrów może wyglądać tak jak na rysunku 5.

Rysunek 5. Odczyt pomiarów modułu

W rejestrach VBusResultHigh (0x10), VBusResultLow (0x11) znajdują się 10-bitowe odczyty wartości napięcia. Po uwzględnieniu ustalonych wzmocnień i przeliczeniu wyników pomiaru z użyciem wzorów:

Vbus [dec]= VbusH*256+VbusL/64
Vbus [V], zakres 0-16V = Vbus[dec]*16/65408

otrzymujemy napięcia odpowiednio 3,19 V, 3,26 V, 3,26 V.

W przypadku prądów 10-bitowe wartości przechowywane są w rejestrach VsensResultHigh (0x12), VsensResultLow (0x13). Po przeliczeniu dla ustalonego wzmocnienia i rezystora pomiarowego:

Vsens [dec]= VsensH*256+VsensL/64
Vsens [V], zakres 0-100mV = Vsens[dec]*16/65408
Isens[A] = Vsens(0-100mV)[dec]/Rsens

otrzymujemy odpowiednio: 0,31 A, 0,02 A, 0,02 A.

10-bitowe wyniki pomiaru mocy przechowywane są w rejestrach VpowerResultHigh (0x1D), VpowerResultLow (0x1E), po przeliczeniu dla ustalonego wzmocnienia i rezystora pomiarowego:

Vpower [dec] = VpowerH*256+VpowerL/64
Power(0-80W: 16V*5A)=Vpower[dec]*80/65408

otrzymujemy odpowiednio 0,94 W, 0,00 W, 0,00 W.

Otrzymane pomiary przykładowe oczywiście można, a wręcz należy, skorygować odpowiednio zmieniając zakres pomiaru napięcia i prądu w rejestrze Gain Configuration (0x00), gdyż mieszczą się one w dostępnych niższych zakresach pomiarowych. Korygując odpowiednio wzmocnienia DI_GAIN, DV_GAIN oraz odczytując flagi przekroczenia zakresu w rejestrze OVERFLOW Status (0x1C), możemy zautomatyzować przełączanie zakresów oraz zapewnić maksymalną dokładność pomiaru.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2: 10 kΩ (SMD 0603, 1%)
  • R3: 100 kΩ (SMD 0603, 1%)
  • RA1, RB1, RC1: 100 Ω (SMD 0603, 1%)
  • RA2: 0 Ω (SMD 0603, 1%)
  • RB2: 120 Ω (SMD 0603, 1%)
  • RC2: 220 Ω (SMD 0603, 1%)
  • RSA, RSB, RSC: LRP12FTDRR020 (SMD 2512, 1%)
Kondensatory:
  • CA1, CB1, CC1: 1 μF (SMD 0603, X7R, 50 V, 10%)
  • CE1: 47 μF/10 V (tantalowy, SMD 3528)
Półprzewodniki:
  • UA, UB, UC: PAC1921-1 (VDFN10)
Pozostałe:
  • GPIO: złącze żeńskie IDC40
  • MTRA, MTRB, MTRC: złącze DG 3 pin 5 mm (DG126-5.0-3)
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik styczeń 2026

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio styczeń - luty 2026

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2026

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów