Arduino Control INA219 DC Current and Voltage Sensor Module

สำหรับการทดลองนี้เป็นการใช้โมดูล INA219 สำหรับวัดค่าแรงดัน (Voltage) และกระแส (Current) แบบสำเร็จและนำมาต่อร่วมกับบอร์ดควบคุม Arduino เพื่ออ่านค่าที่ได้ โดยเราสามารถนำไปประยุกต์ใช้ในการควบคุมกระแสและแรงดันให้กับแหล่งจ่ายไฟเลี้ยงกระแสตรงต่างๆ ได้ง่ายด้วยการเขียนโปรแกรม นอกจากนี้รูปแบบของการสื่อสารระหว่างโมดูล INA219 และบอร์ดควบคุม Arduino จะเป็นแบบ I2C Protocol ช่วยให้ใช้ขาควบคุมระหว่างกันใช้เพียง 2 ขา (SDA, SCL) รวมทั้งสามารถสื่อสารได้รวดเร็วอีกด้วย

รูปที่ 1 ค่าพารามิเตอร์ที่สำคัญของไอซี INA219
รูปที่ 2 แสดงตัวอย่างการต่อใช้งานไอซี INA219

รูปที่ 1 และรูปที่ 2 แสดงค่าพารามิเตอร์ที่สำคัญของไอซี INA219 เช่นช่วงแรงดันอินพุตในการใช้งาน, ค่าแรงดันในการตรวจจับกระแสที่ตำแหน่ง Rshunt และตัวอย่างของการต่อใช้งานไอซี INA219 ให้เข้าใจได้ง่ายขึ้น

Datasheet for INA219 I2C interface DC Current and Voltage Sensor

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 3 โมดูล INA219 ที่มีจำหน่ายออนไลน์ทั่วไป
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 4 ลักษณะการประกอบอุปกรณ์ของโมดูลเข้าด้วยกัน

รูปที่ 3 และรูปที่ 4 แสดงลักษณะของโมดูล INA219 ที่สามารถสั่งซื้อในร้านค้าออนไลน์ทั่วไป และโดยปกติจะเป็นแบบอุปกรณ์แยกชิ้นกัน ซึ่งเรานำอุปกรณ์เหล่านั้นมาประกอบเข้าได้ง่ายตามขนาดรูเจาะในแผ่น PCB และลักษณะที่ประกอบเสร็จแสดงในรูปที่ 4

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 5 การใช้แคล้มมิเตอร์สำหรับวัดค่ากระแสและตัวต้านทานโหลด 40 โอห์ม 20 วัตต์ในการทดลอง
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 6 การต่อตัวต้านทานเพิ่มเติมเพื่อให้วัดค่าที่ใกล้เคียงมัลติมิเตอร์

รูปที่ 6 จะเห็นว่ามีการต่อตัวต้านทานคงที่ขนาด 2.2 โอห์มเข้าที่คอนเน็กเตอร์ (สีฟ้า) ทั้งนี้เนื่องจากในการทดลองเบื้องต้น การวัดค่ากระแสที่ได้ของโมดูลจะมีความคลาดเคลื่อนเล็กน้อยจึงปรับแต่งให้การวัดค่ากระแสระหว่างการวัดค่าจริงและค่าที่แสดงผลบนคอมพิวเตอร์ (Serial monitor) ใกล้เคียงกันมากที่สุด

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 7 ลักษณะของการทดลองโมดูล INA219

รูปที่ 7 แสดงลักษณะของการทดลองโมดูล INA219 และการเชื่อมต่อสายสัญญาณระหว่างบอร์ดควบคุม Arduino UNO และโมดูล INA219

Arduino Library INA219 I2C interface DC Current and Voltage Sensor

//
//    FILE: INA219_demo.ino
//  AUTHOR: Rob Tillaart
// PURPOSE: demo
//    DATE: 2021-05-18
//     URL: https://github.com/RobTillaart/INA219

#include "INA219.h"
#include "Wire.h"

INA219 INA(0x40);

void setup()
{
  Serial.begin(9600);
  Serial.println(__FILE__);
  Serial.print("INA219_LIB_VERSION: ");
  Serial.println(INA219_LIB_VERSION);

  Wire.begin();
  if (!INA.begin() )
  {
    Serial.println("could not connect. Fix and Reboot");
  }

  INA.setMaxCurrentShunt(5, 0.002);
  delay(1000);
}

void loop()
{
  Serial.println("\nVin(V)\tSHUNT(mV)  CURRENT(mA)  POWER(mW)");
  for (int i = 0; i < 10; i++)
  {
    Serial.print(INA.getBusVoltage(), 2);
    Serial.print("\t");
    Serial.print(INA.getShuntVoltage_mV(), 2);
    Serial.print("\t    ");
    Serial.print(INA.getCurrent_mA(), 2);
    Serial.print("\t ");
    Serial.print(INA.getPower_mW(), 2);
    Serial.println();
    delay(500);
  }
  delay(100);
}
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 8 การต่อวงจรสำหรับทดลองโมดูล INA219

รูปที่ 8 แสดงการต่อวงจรสำหรับทดลองโมดูล INA219 กับแหล่งจ่ายไฟเลี้ยง (PSU : 20V/2A) และทำงานร่วมกับบอร์ดควบคุม Arduino UNO นอกจากนี้โปรแกรมการทดลองโมดูล สามารถดาวน์โหลดได้ตามลิ้งก์เว็บไซต์อ้างอิงข้างล่าง [Ref.6] โดยในการทดลองครั้งนี้จะปรับแต่งโปรแกรมเดิมเล็กน้อยเพื่อให้เข้าใจง่ายขึ้น [Arduino Program Ref : URL: https://github.com/RobTillaart/INA219]

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 9 การทดลองที่ 1 ใช้ไฟเลี้ยงที่ 10V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 10 การทดลองที่ 1 กระแสที่วัดได้เมื่อใช้ไฟเลี้ยงที่ 10V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 11 การทดลองที่ 1 การแสดงผล Serial monitor เมื่อใช้ไฟเลี้ยงที่ 10V

ในรูปที่ 9 ถึงรูปที่ 11 เป็นการทดลองที่ 1 ด้วยการจ่ายไฟเลี้ยงจากเพาเวอร์ซัพพลายที่ 10V จากนั้นสังเกตการอ่านค่าที่ได้จากโมดูล INA219 ซึ่งผลที่ได้จะใกล้เคียงกับการวัดค่ามัลติมิเตอร์จริงดังในรูปที่ 11

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 12 การทดลองที่ 2 ใช้ไฟเลี้ยงที่ 15V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 13 การทดลองที่ 2 กระแสที่วัดได้เมื่อใช้ไฟเลี้ยงที่ 15V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 14 การทดลองที่ 2 การแสดงผล Serial monitor เมื่อใช้ไฟเลี้ยงที่ 15V

สำหรับในรูปที่ 12 ถึงรูปที่ 14 เป็นการทดลองที่ 2 ด้วยการปรับค่าไฟเลี้ยงจากเพาเวอร์ซัพพลายเพิ่มขึ้นที่ 15V และสังเกตการอ่านค่าที่ได้จากโมดูล INA219 ซึ่งผลที่ได้ดังในรูปที่ 14

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 15 การทดลองที่ 3 ใช้ไฟเลี้ยงที่ 20V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 16 การทดลองที่ 3 กระแสที่วัดได้เมื่อใช้ไฟเลี้ยงที่ 20V
Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 17 การทดลองที่ 3 การแสดงผล Serial monitor เมื่อใช้ไฟเลี้ยงที่ 20V

รูปที่ 15 ถึงรูปที่ 17 เป็นการทดลองที่ 3 ลักษณะเดียวกันด้วยการปรับค่าไฟเลี้ยงเพิ่มขึ้นที่ 20V และสังเกตการอ่านค่าที่ได้จากโมดูล INA219 ซึ่งผลที่ได้ดังในรูปที่ 17 ซึ่งจากการทดลองทั้ง 3 ครั้งตัวโมดูล INA219 ให้ผลการวัดค่าที่ได้เป็นที่น่าพอใจ

Arduino Control INA219 I2C interface DC Current and Voltage Sensor Module
รูปที่ 18 แสดงลักษณะของการทดลองโมดูล INA219

สำหรับการทดลองใช้งานโมดูล INA219 ครั้งนี้ พอจะสรุปการใช้งานได้ว่าเป็นโมดูลที่สามารถนำมาใช้งานต่างๆ ได้ง่ายและสะดวก สามารถควบคุมการจ่ายพลังงานไฟฟ้าให้กับโหลดได้ดี แต่จะเหมาะสำหรับการพลังงานไฟฟ้าที่ไม่สูงมากนัก (ไม่เกิน 10 วัตต์) ทั้งนี้ข้อจำกัดจะเป็นที่ตัวโมดูลรองรับกระแสไม่สูงมากนัก ในกรณีที่เราต้องการใช้กับการจ่ายพลังงานไฟฟ้าที่สูงขึ้น แนะนำให้ออกแบบส่วนของตัวต้านทานตรวจจับกระแสให้เหมาะสม (Rshunt) แล้วให้ชิฟไอซี INA219 รับสัญญาณเข้ามาประมวลผลแยกจากกันจะช่วยให้เราสามารถประยุกต์ใช้งานได้หลายรูปแบบเพิ่มขึ้น

Reference

  1. https://www.ti.com/lit/ds/symlink/ina219.pdf
  2. https://www.ti.com/product/INA219
  3. https://diyprojectslab.com/arduino-energy-meter-using-ina219/
  4. https://microcontrollerslab.com/ina219-current-sensor-module-pinout-interfacing-with-arduino-oled/
  5. https://how2electronics.com/how-to-use-ina219-dc-current-sensor-module-with-arduino/
  6. https://www.arduinolibraries.info/libraries/ina219
  7. https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/arduino-code