Cara Menggunakan Sensor Arus INA219 dengan arduino
INA219 merupakan sensor arus yang cukup peka. Oleh karena itu sensor ini sangat cocok untuk diimplementasikan pada pembacaan arus DC yang kecil. Sensor ini bisa membaca arus sampai satuan mili ampere. Iya kaya nama akun yang nulis ini. hehe
Selain arus, sensor ini juga punya kemampuan untuk membaca tegangan pada pin masukan sensor tersebut. Jadi bisa dibilang sensor ini punya kemampuan membaca arus dan tegangan sekaligus. Sensor INA219 bisa mengukur arus sampai 3,2 A dan tegangan sampai 26VDC.
Pengkabelan/Wiring
Penggunaan sensor arus adalah dipasang secara seri antara sumber daya dengan beban yang ingin dibaca arusnya. Pada contoh kali ini, kami menggunakan sebuah LED yang akan dibaca arusnya.
Pada gambar di atas LED disambungkan dengan sebuah sumber daya, bisa baterai ataupun bisa dari arduino yang 3,3V. Ingat ya, LED biasanya tidak kuat dipasang pada tegangan 5V.
Program
//Contoh sketch diambil dari https://breakrow.com/mili-ampere #include <Wire.h> #include <Adafruit_INA219.h> Adafruit_INA219 ina219; #if defined(ARDUINO_ARCH_SAMD) // for Zero, output on USB Serial console, remove line below if using programming port to program the Zero! #define Serial SerialUSB #endif void setup(void) { #ifndef ESP8266 while (!Serial); // will pause Zero, Leonardo, etc until serial console opens #endif uint32_t currentFrequency; Serial.begin(9600); Serial.println("Memulai pembacaan arus!"); // Menginisialisasi the INA219. // Secara default sensor di setting pada pembacaan maksimal (32V, 2A) // Memilih kalibrasi ina219.begin(); // Untuk menggunakan tegangan maks 32Volt dan arus 1A (lebih teliti) //ina219.setCalibration_32V_1A(); // Untuk menggunakan tegangan maks 16 dan arus 400mA (lebih teliti lagi) //ina219.setCalibration_16V_400mA(); Serial.println("Measuring voltage and current with INA219 ..."); } void loop(void) { float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); loadvoltage = busvoltage + (shuntvoltage / 1000); Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V"); Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV"); Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V"); Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA"); Serial.println(""); delay(2000); }
Pada contoh koding di atas digunakan pembacaan maksimal, yaitu tegangan 36V dan arus 3,2A. Pembacaan bisa dinaikkan ketelitiannya dengan memilih kalibrasi di bawahnya (baca program). Namun ketelitian yang tinggi berarti menurunkan range pembacaan maksimalnya.
Selamat mencoba! jika ada pertanyaan boleh komentar di bawah 🙂