- zakres pomiaru napięcia: 0...32 V,
- zakres pomiaru prądu: 0...5 A (patrz tekst),
- zasilanie: 3...5 V,
- pobór prądu: 900 μA (pomiar), 450 μA (odczyt),
- interfejs: I²C.
Moduł zbudowano w oparciu o specjalizowany układ monitora mocy PAC1921 firmy Microchip. Strukturę wewnętrzną układu pokazano na rysunku 1.
Pomiar odbywa się po stronie zasilania (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, ×32). Prąd mierzony jest metodą pośrednią poprzez pomiar spadku napięcia na rezystorze bocznikowym, 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. Oba tory wzmocnienia sygnalizują przekroczenie zakresu poprzez ustawienie odpowiednich flag w rejestrach, co ułatwia programową obsługę zmiany wzmocnienia.
Napięcia uzyskane w części analogowej przetwarzane są we wbudowanym konwerterze A/C o rozdzielczości definiowanej programowo na 11 lub 14 bitów, zaś pomiar mocy realizowany jest programowo. Możliwa jest filtracja sygnału i wybór czasu integracji. Konfiguracja układu PAC1921 odbywa się poprzez magistralę I²C. Obsługiwane jest do 16 adresów ustalanych poprzez dobór wartości rezystora bocznikowego podłączonego do wyprowadzenia ADDR_SEL. Układ jest wyposażony w wyprowadzenie READ/INT, umożliwiające sprzętowe sterowanie pomiarem i synchronizację kilku układów. Na wyjście OUT przetwornika D/A można wyprowadzić zmierzoną wartość napięcia, prądu lub mocy. Ta funkcja może okazać się przydatna w aplikacjach, w których niedopuszczalna jest zwłoka związana z odczytem danych przez magistralę I²C. Przykładowo po podłączeniu do wyjścia komparatora można zrealizować szybkie zabezpieczenia po przekroczeniu progu ustalonego dla jednej z mierzonych wielkości, w dalszym ciągu mając dostęp do ich dokładnych wartości zapisywanych w rejestrach PAC1921.
Schemat układu zaprezentowano na rysunku 2. Źródło napięcia doprowadzone jest do złącza IN. Wartość napięcia mierzona jest bezpośrednio na wyprowadzeniu SENSE+, zaś pomiar prądu odbywa się pośrednio, poprzez monitorowanie spadku napięcia na rezystorach RS1 i RS2 podłączonych do wyprowadzeń SENSE+/–. Obciążenie należy podłączyć do wyjścia OUT. Rezystory pomiarowe RS1/2 (o wartości 40 mΩ/1 W) połączone są równolegle i umożliwiają pomiar prądu w maksymalnym zakresie 0...5 A. Magistrala I²C i zasilanie doprowadzone są do złącza I²C, rezystory R3,4 podciągają linie SDA i SCL do dodatniej szyny zasilania. Do złącza IO doprowadzono sygnały sterowania trybem pracy INT oraz – po dodatkowej filtracji R2/C2 – napięcie SOUT z wbudowanego przetwornika D/A. Sygnały powielone są na złączu SIP GPIO. Układ pracuje poprawnie z zasilaniem 3...5 V, pobór prądu nie przekracza 1 mA.
Układ zmontowano na dwustronnej płytce drukowanej zgodnej mechanicznie i elektrycznie z formatem Grove. Rozmieszczenie elementów na PCB pokazano na rysunku 3.
Montaż układu nie wymaga rozbudowanego opisu. Prawidłowo zmontowany moduł można zobaczyć na fotografii tytułowej. Urządzenie nie wymaga uruchamiania, należy jednak dobrać wartość rezystorów pomiarowych odpowiednio do zakresu mierzonego prądu, pamiętając o nieprzekraczaniu maksymalnego spadku napięcia na boczniku równego 100 mV. Zmieniając wartość rezystora RA zgodnie z kartą katalogową, możemy ustalić inny adres I²C. Przy RA=0 domyślnie adres ustawiony jest na wartość 0x4C.
W celu szybkiego sprawdzenia działania modułu można użyć narzędzi i2ctools. Po podłączeniu zasilania do złącza IN i obciążenia do złącza OUT sprawdzamy detekcję układu na magistrali poleceniem i2cdetect –y 1. Moduł powinien być widoczny pod ustalonym przez RA adresem.
Układ PAC1921 pracuje w trzech trybach: integracji (Int), odczytu (Read) oraz uśpienia (Sleep).
W stanie integracji układ jest w pełni aktywny i całkuje (mierzy i przelicza), pozostając sterowanym w jednym z dwóch sposobów. Pierwszy to sterowanie sprzętowe stanem wysokim wyprowadzenia READ/INT, zaś drugi to sterowanie programowe poprzez rejestr konfiguracyjny, znajdujący się pod adresem 0x01 (Integration Configuration Register). Obsługa odbywa się poprzez zmianę stanu bitu 0 (INTEN=1) oraz bitu 1 (RIOV=1). Ustawienie RIOV=1 wyłącza sterowanie sprzętowe za pomocą wyprowadzenia READ/INT. Pobór prądu podczas integracji jest mniejszy niż 900 μA.
Tryb odczytu jest stanem o niższym poborze mocy. Gdy pin READ/INT jest utrzymywany w stanie niskim przez czas tREAD równy co najmniej 9,8 μs, urządzenie pozostaje w stanie odczytu. W przypadku sterowania programowego, układ można wprowadzić w omawiany tryb pracy zerując bit INTEN w rejestrze 0x01. 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 układ w stan niskiego poboru mocy, w którym pobór prądu nie przekracza 450 μA.
Tryb uśpienia jest stanem o najniższym poborze mocy. Domyślnie układ przechodzi w stan uśpienia automatycznie, gdy pin READ/INT (lub bit INTEN w trybie sterowania programowego) jest utrzymywany w stanie niskim dłużej niż czas tSLEEP ≈1,088...1,203 s. Tryb uśpienia może być też wyzwolony ustawieniem w rejestrze Control Register (adres 0x02) bitu SLEEP=1. Pobór prądu w stanie uśpienia jest mniejszy niż 15 μA.
Przed pomiarem należy oczywiście skonfigurować układ – pełna lista rejestrów PAC1921 znajduje się w materiałach dodatkowych. Przykładowo w celu pomiaru napięcia w zakresie 0...16 V i prądu w przedziale 0...5 A z 14-bitową rozdzielczością, konfigurujemy rejestr Gain Configuration 0x00:
// I_RES/V_RES=14bit, DI_GAIN=1x, DV_GAIN=2x
oraz ustalamy liczbę próbek, załączamy filtry i sterowanie programowe oraz ustawiamy tryb pomiaru INT w rejestrze konfiguracji 0x01:
// SMPL=16 próbek, VSFEn/VBFEN=1 filtry załączone, RIOV=1 sterowanie programowe
Następnie ustawiamy tryb integracji:
i tryb odczytu:
a na koniec odczytujemy rejestry PAC1921:
Pomiar odbywa się cyklicznie poprzez zmianę trybów pracy PAC1921. Zmiana konfiguracji układu, np. wzmocnień, powinna odbywać się w trybie odczytu. Każdorazowo po odczycie rejestrów z wynikami pomiarów (min. Vbus, Vsense), wymagane jest przeliczenie wyniku w zależności od wybranego wzmocnienia (DI_GAIN, DV_GAIN). Sposób przeliczania podano w nocie aplikacyjnej. Przykładowy odczyt rejestrów pokazano na rysunku 4.
W rejestrach VBusResultHigh (0x10) i VBusResultLow (0x11) znajdują się 10-bitowe odczyty wartości napięcia. W przykładzie dla ustalonych wzmocnień otrzymujemy po przeliczeniu:
Vbus [V], zakres 0-16V = Vbus[dec]*16/65408
wartość napięcia równą 3,13 V.
10-bitowe wartości prądu przechowywane są w rejestrach VsensResultHigh (0x12) oraz VsensResultLow (0x13). Po przeliczeniu dla ustalonego wzmocnienia i rezystora pomiarowego:
Vsens [V], zakres 0-100mV = Vsens[dec]*16/65408
Isens[A] = Vsens(0-100mV)[dec]/Rsens
otrzymujemy wynik 0,41 A.
W przypadku pomiaru mocy 10-bitowe wyniki przechowywane są w rejestrach VpowerResultHigh (0x1D) i VpowerResult Low (0x1E) – po skalowaniu:
Power(0-80W: 16V*5A)=Vpower[dec]*80/65408
otrzymujemy wartość 1,25 W.
Pokazane 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ż podane wielkości mieszczą się w niższych spośród dostępnych zakresów pomiarowych. Korygując odpowiednio wzmocnienia DI_GAIN, DV_GAIN oraz odczytując flagi przekroczenia zakresu w rejestrze OVERFLOW Status (0x1C) możemy zautomatyzować adaptacyjne przełączanie zakresów, zapewniając przez to maksymalną dokładność pomiaru.
Adam Tatuś, EP
- R1, R2: 100 Ω (SMD 0603, 1%)
- R3, R4: 10 kΩ (SMD 0603, 1%)
- R5: 100 kΩ (SMD 0603, 1%)
- RA: 0 Ω (SMD 0603, 1% – opis w tekście)
- RS1, RS2: 0,04 Ω (SMD 1206, pomiarowy 1%)
- C1: 1 μF (SMD 0603, X7R, 10%, 50 V)
- C2: 1 nF (SMD 0603, C0G, 10%, 50 V)
- U1: PAC1921-1 (VDFN10)
- GPIO: złącze SIP6 (2,54 mm)
- IN,OUT: złącze DG381-3.5-2