INA226 czyli jak mierzyć moc zużytą przez układ cz 1

Często po zbudowaniu swojego układu pojawia się pytanie – a ile, mówiąc kolokwialnie, to żre prądu? Nie zawsze zmierzenie prądu i napięcia gdy układ leży na biurku wystarczy. Czasem chcesz wbudować pomiar tych parametrów w swój układ. Stanie wtedy z multimetrami nie jest rozwiązaniem.

Potrzebujesz mierzyć napięcie zasilające układ i płynący prąd. O ile napięcie wejściowe, zasilające w miarę prosto zmierzyć to z prądem jest nieco trudniej. Między źródło zasilania a twój układ trzeba wstawić niewielki rezystor i mierzyć na nim napięcie, by z prawa Ohma wyliczyć prąd płynący przez niego. Bo taki sam prąd popłynie przez bocznik jak i przez badany układ (ponieważ połączenie jest szeregowe).

Tylko, rezystor musi być niewielki bo inaczej sam „zeżre” dużą część mocy. Strata mocy to tylko jeden aspekt, bo jednocześnie spadek napięcia na rezystorze pomiarowym może spowodować że twój układ dostanie za niskie napięcie zasilające. Z kolei mały spadek napięcia oznacza że trudniej mierzyć jego zmiany (np za pomocą wejścia analogowego Arduino) bo są niewielkie.

W takiej sytuacji układy typu INA226 od Texas Instruments przychodzą z pomocą. Jest to gotowy układ, który zmierzy napięcie zasilające oraz napięcie na tym rezystorze (fachowa nazwa tego rezystora to bocznik po polsku a shunt resistor po angielsku) i udostępnia wszystko przez I2C do odczytu. Większość z nas będzie wolała skorzystać z gotowego modułu, bo do działania INA226 trzeba dobrać kilka elementów.

Od niedawana w Nettigo mamy dla was taki moduł, z INA226 i bocznikiem 0.1Ω. No i ta wartość tego bocznika jaką nam sprezentował chińczyk projektując moduł sprawia, że choć sam układ INA226 może pracować z prądami do 3A, to tutaj górnym pułapem będzie 0.8A (więcej powinien wytrzymać, ale INA nie będzie w stanie go poprawnie zmierzyć, po prostu pokaże 0.81A, jak prąd będzie np 1A jak i 2A.

Jest jeszcze kwestia mocy rezystora bocznikowego, czy jest w stanie taką rozproszyć. Jeśli dostanę takie info od naszego chińskiego dostawcy to się nią podzielę, bo przy R=0.1Ω i prądzie 3A z prawa Ohma wynika, że moc rozpraszana będzie P=0.1*3^2= 0.9W. Nie wiem czy ten rezystor SMD jest na 1W minimum…

Jak podłączyć układ do INA226?

Pierwsze pytanie jest – co dokładnie chcemy mierzyć? O ile z prądem nie mamy specjalnie nic do myślenia – po prostu zasilanie podłączamy do wejścia IN+, wejście (wyjście?) IN- podłączamy do Vcc układu, którego pobór mocy będziemy mierzyć, masy (GND) oczywiście łączymy. Pozostaje wejście VBS które służy do mierzenia napięcia zasilania. Możemy je podłączyć albo do IN+ albo do IN+. W pierwszym przypadku będziemy mierzyli napięcie zasilające zarówno nasz badany układ jak i napięcie na boczniku. Czyli całość wyliczonego zużycia energii będzie obejmowało zużycie w badanym układzie i stratę na boczniku.

Podłączenie VBS do IN- spowoduje że wyliczona moc będzie dotyczyła tylko tej zużytej przez sam badany układ. Czy różnica jest istotna? Jak zwykle odpowiedź brzmi: To zależy.

Przy prądzie pobieranym na poziomie 100 mA przy boczniku 0.1Ω strata mocy na boczniku to 1 mW. Dla prądu 500 mA – 25 mW.

Moim zdaniem, jeśli moduł INA226 ma być na stałe wbudowany w twoje urządzenie to wtedy należy mierzyć VBS na IN+ tak by poznać charakterystykę całego układu (razem ze stratami mocy na boczniku). Jeśli używasz INA226 do badania swojego układu i chcesz wiedzieć dokładnie jak wygląda pobór mocy od np ustawionych parametrów to możesz mierzyć VBS na IN- (nie przejmujesz się stratami na boczniku, bo docelowo bocznika nie będzie w układzie).

Ten drugi przypadek postaram się pokazać na ilustracji podłączenia. Oto uproszczony schemacik:

Tak jak pisałem, zasilanie jest doprowadzone do IN+, VBS podłączone do IN-, z IN- zasilanie idzie do badanego układu (tutaj – silnik), masy są wspólne. W ten sposób INA226 może mierzyć prąd płynący przez IN+/IN- a VBS mierzy napięcie na zasilaniu badanego układu (tu – silnika).

Oczywiście do działania całości potrzeba więcej – zasilanie samego modułu INA226, SCA/SCL i mikrokontroler odczytujące dane. Zanim do tego się zabierzemy, jeszcze trochę niezbędnej teorii by dobrze zrozumieć jak skonfigurować INA226.

Skąd ograniczenie do prądu 0.81A?

Wspomniałem, że ten moduł, choć INA226 może mierzyć prąd nawet do 3A to osiągnie swój pułap na 0.81A. Dlaczego? Wbudowany w INA226 moduł pomiaru napięcia na boczniku jest precyzyjny (dlaczego taki musi być pisałem na początku), ale maksymalne napięcie jakie może odczytać to ok 81 mV. Większe go nie uszkodzi, ale będzie raportowane jako 81 mV.

Na rezystorze 0.1Ω prąd jaki wygeneruje napięcie 81 mV to 0.81A. Większy prąd, np 1A wygeneruje 100 mV na boczniku ale INA226 zmierzy go jako 81 mV.

INA226 „nie wie” jaki bocznik został podłączony, musimy go skonfigurować. Ale nie wprost – korzysta się z równania podanego w karcie katalogowej by wyliczyć wartość kalibracyjną zapisywaną w rejestrze INA226. Wybiegając w przód – biblioteka którą użyjemy powinna móc wyliczyć tę wartość na podstawie maksymalnego oczekiwanego prądu i wartości rezystancji bocznika, ale z jakiegoś powodu INA226 nie zapisywała tego w rejestrze. Ręczne wyliczenie składowych rejestru rozwiązuje ten problem, ale musisz to zrobić :)

Pierwszy krok to wyliczenie Current_LSB – po prostu, maksymalny prąd jakiego się spodziewasz trzeba podzielić przez rozdzielczość przetwornika AC/DC. Jest on 16-sto bitowy czyli dzielimy prąd przez 32768 (inaczej 2^15). Jeśli wiesz, że układ nie będzie brał więcej niż 0.5 to możesz poprawić rozdzielczość pomiaru prądu. Current_LSB wtedy wyniesie 0.5/32768=0.0000152587890625… Co z tym zrobić dalej – w drugiej części.