Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

INA219 ile Akım, Gerilim ve Güç Ölçümü (I2C)

INA219 ile Akım, Gerilim ve Güç Ölçümü (I2C)
Kısa cevap

INA219, yüke seri bağlanan küçük bir şönt direnç üzerindeki gerilim düşümünü ölçerek akımı, ayrıca hat gerilimini ve gücü I2C üzerinden veren bir ölçüm entegresidir. 26V'a kadar DC hatlarda yükün artı tarafına (high-side) bağlanır. 0,1 Ω şöntlü modüllerde ölçüm aralığı yaklaşık ±3,2A'dir; daha büyük akım ve AC için ACS712 uygundur.

Bir projenin pilden ne kadar akım çektiğini, güneş panelinin anlık ne kadar güç verdiğini ya da bir motorun yük altında nasıl davrandığını görmek için hassas bir ölçüm gerekir. INA219 bu iş için en çok kullanılan modüllerden biridir. Bu yazıda INA219'un nasıl çalıştığını, neden yükün artı tarafına bağlandığını, ACS712'den farkını, Arduino bağlantısını ve örnek kodu anlatıyoruz.

INA219 nedir?

INA219, Texas Instruments'ın ürettiği, bir şönt direnç üzerinden akımı, aynı anda hat gerilimini ölçen ve ikisinden gücü hesaplayan I2C arayüzlü bir akım ve güç izleme entegresidir. Ölçümü kendi içindeki 12 bit ADC ile yapar ve sonucu dijital olarak verir; Arduino'nun analog girişine ihtiyaç duymaz.

Veri sayfasına göre entegre 3V ile 5,5V arasında beslenir ve 0V ile 26V arasındaki hat gerilimlerini ölçer. Şönt girişinde en fazla ±320 mV ölçebilir. INA219 I2C çift yönlü akım sensörü modülü gibi hazır kartlarda şönt direnç, klemens ve I2C adres seçimi kart üzerinde gelir. Akımı iki yönde de ölçtüğü için şarj ve deşarjı aynı modülle izleyebilirsiniz.

INA219 akımı nasıl ölçer?

INA219 akımı, yükle seri bağlı şönt direnç üzerindeki küçük gerilim düşümünü ölçüp Ohm kanunuyla (I = V / R) hesaplar. Örneğin 0,1 Ω şönt üzerinde 50 mV ölçülüyorsa akım 50 mV / 0,1 Ω = 500 mA'dir.

Hazır modüllerin çoğunda üzerinde "R100" yazan 0,1 Ω şönt bulunur. Şönt girişinin ±320 mV sınırı bu direnç için ±3,2A'lik bir ölçüm aralığı demektir. Şönt geriliminin en küçük adımı 10 µV olduğundan 0,1 Ω ile teorik çözünürlük 0,1 mA'dir. Kartınızdaki direncin üzerindeki yazıyı mutlaka kontrol edin; farklı değerli şönt, kodda farklı kalibrasyon gerektirir.

High-side bağlantı neden kullanılır?

INA219 yükün artı hattına (high-side) bağlanır, çünkü bu sayede yükün GND'si bozulmaz ve entegre hem akımı hem de yükün gerilimini aynı anda ölçebilir. Şönt, kaynağın artısı ile yükün artısı arasına seri girer.

INA219 hat gerilimini VIN− pini ile kendi GND'si arasında ölçer. Bu yüzden ölçülen devrenin eksisi ile modülün GND'si ortak olmalıdır. Şönt eksi hatta (low-side) kullanılırsa akım yine ölçülür, ancak gerilim okuması anlamını yitirir.

INA219 ile ACS712 arasındaki fark nedir?

INA219 şönt direnç ve dijital I2C çıkışıyla küçük ve orta DC akımları hassas ölçer; ACS712 ise Hall etkisiyle çalışır, analog çıkış verir ve daha büyük akımlarla AC akımı ölçebilir. Aşağıdaki tablo farkları özetler:

ÖzellikINA219ACS712
Ölçüm ilkesiŞönt dirençHall etkisi
ÇıkışDijital, I2CAnalog gerilim
ÖlçtüğüAkım, hat gerilimi, güçYalnızca akım
Tipik aralık±3,2A (0,1 Ω şönt)±5A, ±20A ya da ±30A
AC akımHayırEvet
Ölçülen devre ile bağlantıOrtak GND, yalıtım yokAkım yolu çıkıştan yalıtılmış
Küçük akımlarda hassasiyetYüksekDüşük (5A sürüm: 185 mV/A)

Birkaç miliamperden birkaç ampere kadar DC tüketimi ölçecekseniz INA219 daha doğru sonuç verir. Amperlerce akım ya da AC ölçümü gerekiyorsa ACS712 5A akım sensörü veya daha yüksek aralıklı sürümleri uygundur. ACS712'nin kullanımını akım sensörü ACS712 yazımızda anlattık. 26V üzeri hatlar ve daha yüksek çözünürlük için INA226 I2C akım ve güç izleme sensörü değerlendirilebilir.

INA219 Arduino'ya nasıl bağlanır?

INA219, Arduino Uno'ya I2C üzerinden dört kabloyla bağlanır; ölçülecek hat ise VIN+ ve VIN− klemenslerinden geçer. Bağlantıyı enerjisiz yapın ve kaynağı en son açın.

  1. Modülün VCC pinini Arduino 5V'a, GND pinini Arduino GND'ye bağlayın.
  2. Modülün SDA pinini Arduino A4'e, SCL pinini A5'e bağlayın.
  3. Güç kaynağının artısını modülün VIN+ klemensine bağlayın.
  4. Modülün VIN− klemensini yükün artı ucuna bağlayın.
  5. Yükün eksi ucunu kaynağın eksisine götürün ve kaynağın eksisini Arduino GND ile birleştirin.
  6. Örnek kodu yükleyip Seri Monitör'ü 115200 baud ile açın; önce küçük bir yükle deneyin.
INA219 akım sensörü Arduino Uno bağlantı şeması: VCC 5V, GND GND, SDA A4, SCL A5; güç kaynağı artısı VIN+ klemensine, VIN− yükün artısına; kaynak eksisi, yük eksisi ve Arduino GND ortak
Şönt kaynak artısı ile yük artısı arasına girer (high-side). Kaynağın eksisi Arduino GND ile birleştirilmezse gerilim okuması hatalı çıkar.

Modül Arduino Uno R3 CH340 dışında ESP32 ile de çalışır; ESP32'de varsayılan I2C pinleri genellikle SDA için GPIO21, SCL için GPIO22'dir. I2C adresleri ve hat yapısı hakkında bilgi için I2C nedir yazımıza göz atabilirsiniz.

INA219 örnek kodu nasıl çalışır?

Örnek kod, Adafruit_INA219 kütüphanesiyle modülü başlatır ve her saniye şönt gerilimini, hat gerilimini, akımı ve gücü okur. Kütüphaneyi Arduino IDE'nin Kütüphane Yöneticisi'nden "Adafruit INA219" adıyla kurabilirsiniz.

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;   // varsayilan adres 0x40

void setup() {
  Serial.begin(115200);
  if (!ina219.begin()) {
    Serial.println("INA219 bulunamadi, kablolari kontrol edin");
    while (1) delay(10);
  }
  // ina219.setCalibration_16V_400mA(); // kucuk akimlarda daha ince olcum
}

void loop() {
  float hat = ina219.getBusVoltage_V();      // VIN- ile GND arasi
  float sont = ina219.getShuntVoltage_mV();  // sont uzerindeki dusum
  float akim = ina219.getCurrent_mA();
  float guc = ina219.getPower_mW();
  float kaynak = hat + sont / 1000.0;        // VIN+ gerilimi

  Serial.print("Kaynak: "); Serial.print(kaynak, 2); Serial.print(" V  ");
  Serial.print("Yuk: "); Serial.print(hat, 2); Serial.print(" V  ");
  Serial.print("Akim: "); Serial.print(akim, 1); Serial.print(" mA  ");
  Serial.print("Guc: "); Serial.print(guc, 0); Serial.println(" mW");
  delay(1000);
}

Kütüphane varsayılan olarak setCalibration_32V_2A() ayarıyla başlar. Yükünüz 400 mA'in altında ve 16V'tan düşükse setCalibration_16V_400mA() daha ince çözünürlük verir. Ayar adındaki 32V, entegrenin ölçüm aralığı ayarıdır; hat gerilimi yine 26V'u aşmamalıdır.

Ölçümde nelere dikkat edilmeli?

Doğru ölçüm için ortak GND, gerilim sınırı ve kablo kesiti en önemli üç konudur.

  • Ölçülen devrenin eksisi ile Arduino GND'si birleşmezse gerilim ve güç okumaları hatalı çıkar.
  • Hat gerilimi 26V'u aşmamalıdır; 220V şebekeye kesinlikle bağlanmaz.
  • Şönt üzerinden geçen akım için VIN+ ve VIN− kablolarını yeterince kalın seçin.
  • Aynı hatta birden fazla INA219 kullanacaksanız A0 ve A1 lehim köprüleriyle her modüle farklı adres verin.

Diğer akım ve gerilim sensörlerini Arduino sensör ve modüller kategorisinde bulabilirsiniz.

Sık sorulan sorular

INA219 kaç volta kadar ölçer?

INA219, veri sayfasına göre 0V ile 26V arasındaki DC hat gerilimlerini ölçer. Kütüphanedeki "32V" ifadesi entegrenin iç ölçüm aralığı ayarını anlatır; 26V'un üzerine çıkmak entegreye zarar verebilir. 12V ve 24V sistemler bu sınırın içinde kalır. Daha yüksek gerilimli bir hattı ölçmeniz gerekiyorsa 36V'a kadar çalışan INA226 gibi bir entegreye geçmek gerekir.

INA219 AC akım ölçebilir mi?

Hayır, INA219 şebeke AC akımını ölçmek için uygun değildir. Entegre DC hatlar için tasarlanmıştır ve en fazla 26V hat gerilimine dayanır; ölçülen devre ile Arduino arasında yalıtım da yoktur. AC akım ölçmek gerekiyorsa Hall etkili ACS712 gibi yalıtımlı bir sensör ya da şebeke için tasarlanmış hazır bir enerji ölçüm modülü kullanılmalıdır.

Birden fazla INA219 aynı I2C hattına bağlanabilir mi?

Evet, birden fazla INA219 aynı I2C hattına bağlanabilir. Entegrenin A0 ve A1 adres pinleri sayesinde 0x40 ile 0x4F arasında 16 farklı adres seçilebilir. Hazır modüllerde bu seçim genellikle kart üzerindeki lehim köprüleriyle yapılır. Kodda her modül için ayrı bir nesne tanımlayıp adresini parantez içinde vermeniz yeterlidir.

INA219 eksi hatta (low-side) bağlanabilir mi?

INA219 eksi hatta bağlanırsa akımı yine doğru ölçer, ancak hat gerilimi okuması anlamsız hâle gelir. Çünkü entegre gerilimi VIN− ile kendi GND'si arasında ölçer ve low-side bağlantıda bu fark sıfıra yakındır. Ayrıca yükün GND'si artık doğrudan toprakta olmaz. Gerilim ve gücü birlikte ölçmek istiyorsanız high-side bağlantıyı kullanın.

INA219 ile INA226 arasındaki fark nedir?

INA226, INA219'un daha yüksek çözünürlüklü bir benzeridir. INA219 12 bit ADC ile 26V'a kadar ölçerken INA226 16 bit ADC ile 36V'a kadar hat gerilimini ölçer. Bu da küçük akımları daha ince adımlarla görmenizi sağlar. İki entegre de I2C kullanır, ancak kütüphaneleri ve kalibrasyon yöntemleri farklıdır; birinin kodu doğrudan diğerinde çalışmaz.

Özet

  • INA219, şönt direnç üzerinden akımı, ayrıca hat gerilimini ve gücü I2C ile veren bir ölçüm entegresidir.
  • 0,1 Ω şöntlü modüllerde ölçüm aralığı yaklaşık ±3,2A, hat gerilimi sınırı 26V'tur.
  • High-side bağlantı: kaynak artısı VIN+'ya, VIN− yükün artısına; devrenin eksisi Arduino GND ile ortak.
  • Küçük ve orta DC akımlarda INA219, büyük akım ve AC ölçümde ACS712 uygundur.
  • Adafruit_INA219 kütüphanesiyle akım, gerilim ve güç birkaç satırda okunur.

Bu yazıdaki ürünler

Diğer yazılar