
ใ้ปๆตใป้ปๅงใปใณใตใผ๏ผINA219ใขใธใฅใผใซ๏ผใจArduinoใงไฝฟใฃใฆ้ปๆตใป้ปๅงใฎๆธฌๅฎใ่กใฃใฆใฟใพใใใ
ใไปๅใฏINA219ใขใธใฅใผใซใฎไฝฟใๆนใจใใฎ็ฒพๅบฆใ็ขบ่ชใงใใ
ๆฆ่ฆ
ใINA219๏ผใขใธใฅใผใซ๏ผใฏ้ปๆตใป้ปๅงใฎๆธฌๅฎ๏ผใขใใฟใผ๏ผใๅฏ่ฝใชใใใคในใงใI2C้ไฟกใงๆ ๅ ฑใฎใใๅใใ่กใใใArduinoใRaspberryPiใชใฉใใ็ฐกๅใซไฝฟใใฆใ้ปๆต่จใ้ปๅง่จใชใฉใๅฒใจ็ฐกๅใซไฝๆใงใใใใจๆใใพใใ
โผINA219ใขใธใฅใผใซโผ

ใใฉใคใใฉใชใๅ ฌ้ใใใฆใใใใใใใใใใฎใพใพๅฉ็จใใใฐ็ฐกๅใงใใใใใคใใฎใใใซใฉใคใใฉใชใฏไฝฟใใใซ้ปๅงใป้ปๆตใๆธฌๅฎใใใใจๆใใพใใ
ๅ่ทฏ
โผArduinoใจINA219โผ

ใINA219ใจArduinoใฎ็ต็ทใงใใ้ปๆตใป้ปๅงๆธฌๅฎใฏVin+ใVin-ใใณใไฝฟใฃใฆใๆธฌๅฎใใๅ่ทฏใซ็ดๅใง็นใใพใใ
ใใใใงใฏArduino๏ผ3.3v๏ผใใๆตๆใ็ต็ฑใใๅ่ทฏใฎ้ปๅงใป้ปๆตใๆธฌๅฎใยฑใงๆธฌๅฎใงใใใฎใงใVin๏ผใVin๏ผใฎๆฅตๆงใฏๆ่ญใใชใใงใๅ้กใชใใฏใใงใใ่ฒ ่ทใซใฏ้ฉๅฝใชๆตๆใไฝฟ็จใ
โผใใฌใใใใผใใง็ต็ทโผ

ในใฑใใ๏ผใฝใผใน๏ผ
ใใฝใผในใๆ็ฒใใฆ่ชฌๆใใพใใไปๅไฝฟ็จใใใฝใผในๅ จไฝใฏ่จไบๆๅพใซๆฒ่ผใใฆใพใใ๏ผArduinoใงI2C้ไฟกใไฝฟใๆนๆณใฏใใกใ๏ผ
โผใณใณใใฃใฐใฎ่จญๅฎโผ
int16_t config_value = 0x399F; //ใใใฉใซใ Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x00); //configใขใใฌใน Wire.write((config_value >> 8) & 0xFF); Wire.write(config_value & 0xFF); Wire.endTransmission();
ใไปๅใฏใใใฉใซใใฎใพใพใงใใBUS้ปๅงใฌใณใธยฑ32V๏ผLSB4mV๏ผใใทใฃใณใๆตๆ้้ปๅงใฌใณใธ320mV๏ผใฒใคใณ/8๏ผใยฑ2Aใ12bitใ
โผBUS้ปๅงใฎๆธฌๅฎโผ
Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x02); //BusVoltageใฌใธในใฟ Wire.endTransmission(); Wire.requestFrom(0x40, 16); while (Wire.available() < 16); BusVoltage = Wire.read() << 8 | Wire.read(); BusVoltage = (BusVoltage >> 3) * 4;
ใ้ปๅงๆธฌๅฎๅคใฏใ0x02ใใขใใฌในใใ2byteๅใงๆ ผ็ดใใใฆใพใใไธไฝ12bitใ้ปๅงใงใLSBใฏ4mVใจใชใใพใใใฎใงๆๅพใซๅณ3ใทใใใใฆ4ๆใใฆใพใใ
โผ้ปๆต๏ผใทใฃใณใๆตๆ้ใฎ้ปๅง๏ผใฎๆธฌๅฎโผ
Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x01); //ShuntVoltageใฌใธในใฟ Wire.endTransmission(); Wire.requestFrom(0x40, 16); while (Wire.available() < 16); ShuntVoltage = Wire.read() << 8 | Wire.read();
ใใทใฃใณใๆตๆ้ใฎ้ปๅงๆธฌๅฎใงใใใ0x01ใใขใใฌในใใ2byteๅใงLSBใฏ0.01mVใจใชใใพใใไปๅใฏใทใฃใณใๆตๆ้ใฎ้ปๅงใใ้ปๆตใ่จ็ฎใใๆนๆณใง้ปๆตๅคใๆธฌๅฎใใฆใพใใ
ใ้ปๅงใๆธฌๅฎใใใ ใใชใ้ๅธธใซ็ฐกๅใงใใ
ใใใฎใปใใใขใใฌในใ0x04ใใใ้ปๆตใใขใใฌในใ0x03ใใใ้ปๅใ็ดๆฅ่จๆธฌใงใใใฎใงใใใใขใใฌในใ0x05ใใฎใญใฃใชใใฌใผใทใงใณ่จญๅฎใจLSBใฎ่ใๆนใ่ฅๅนฒใใใใใใฎใงไปๅใฏไฝฟ็จใใฆใพใใใ้ปๆตใ้ปๅใ่จ็ฎใงๆฑใใใใใฎใงๅ้กใชใใใจใปใปใปใใใใ่พบใฎใใ่ฉณใใๅ ๅฎนใฏใใผใฟใทใผใๅ็ งใใ ใใใ
็ฒพๅบฆ็ขบ่ช
ใ้ปๅงใจๆตๆๅคใๅฐใใใคๅคใใฆใ้ปๅงใ้ปๆตใฎๆธฌๅฎใ่กใฃใฆใฟใพใใใ
ใโผใทใชใขใซใขใใฟใงใฎ่จๆธฌ็ตๆ่กจ็คบโผ

โผ็ฒพๅบฆ็ขบ่ช็ตๆโผ

ใ้ปๆตใฏๆบไธ่จ็ฎ๏ผ็่ซๅค๏ผใจๆฏ่ผใใฆใพใใๆๆใกใฎๆตๆใใใพใใชใใฃใใฎใงๅพฎๅฆใชNๆฐใงใใใใพใๆฆใญ่จ็ฎ้ใใฎ็ตๆใงใใ
ใ็งใไฝฟ็จใใ็จ้ใใใใงใใใฐๅๅใช็ฒพๅบฆใง้ปๅงใ้ปๆตใๆธฌๅฎใงใใพใใArduinoใใใงใใใฐใชใขใซใฟใคใ ใซๆธฌๅฎใงใใพใใใใใใใ้ในใใใงใใ
โผใฝใผในๅ จไฝโผ
ไปๅใฎใในใๆธฌๅฎใซไฝฟ็จใใใฝใผในๅ จๆใงใใ
#include <Wire.h> int16_t BusVoltage, ShuntVoltage; void setup() { Serial.begin(115200); Wire.begin(); Wire.setClock(400000); int16_t config_value = 0x399F; //ใใใฉใซใ Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x00); //configใขใใฌใน Wire.write((config_value >> 8) & 0xFF); Wire.write(config_value & 0xFF); Wire.endTransmission(); } void loop() { //Get BusVoltage Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x02); //BusVoltageใฌใธในใฟ Wire.endTransmission(); Wire.requestFrom(0x40, 16); while (Wire.available() < 16); BusVoltage = Wire.read() << 8 | Wire.read(); BusVoltage = (BusVoltage >> 3) * 4; //Get ShuntVoltage Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน Wire.write(0x01); //ShuntVoltageใฌใธในใฟ Wire.endTransmission(); Wire.requestFrom(0x40, 16); while (Wire.available() < 16); ShuntVoltage = Wire.read() << 8 | Wire.read(); Serial.print("BusVoltage"); Serial.print(BusVoltage * 0.001); Serial.print("V"); Serial.print(" "); Serial.print("ShuntVoltage"); Serial.print(ShuntVoltage * 0.01); Serial.print("mV"); Serial.println(" "); }
ใณใกใณใ
ใฏใใใพใใฆใๅ่ใซใใใฆใใใ ใใใฎใงใใๅใใชใใฃใใฎใง่ฏใใฃใใ่ณชๅใใใฆใใ ใใใ
startใฎใฟ่กจ็คบใใใฆใใณใฐใใพใใ
ๅใใใใซ้ ็ทใใฆใvin voutใฏๆช็ต็ท๏ผ็ต็ทใใฆใๅใใงใใ๏ผ
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setClock(400000);
int16_t config_value = 0x399F; //ใใใฉใซใ
Wire.beginTransmission(0x40); //ใใใคในใขใใฌใน
Wire.write(0x00); //configใขใใฌใน
Wire.write((config_value >> 8) & 0xFF);
Wire.write(config_value & 0xFF);
ใSerial.println(โAโ);
Wire.endTransmission();
ใSerial.println(โBโ);
}
ไธ่จใฎใใใซๅคๆดใใฆใฟใใจใใใAใ ใใ่กจ็คบใใใพใใ
SCLใฎ็ทใๆใใจๅใๅบใใพใใใๅฝ็ถ่จๆธฌ็ตๆใฏๅใใชใใฎใงๆๅณใใใใพใใใ
INA219ใๆฐใใใใฎใซๅคใใใใArduinoใๆฐๅใซๅคใใพใใใๅใ็ตๆใงใใ
ไฝใๆชใใฎใงใใใใ๏ผ
ใจใใ ใใใใตใคใๆ่ฆใใ ใใๆ้ฃใๅพกๅบงใใพใใ
ใ่ณชๅใฎไปถใๅๅ ใฏใใใใใใชใใฎใงใใใSerial.ใ้ใซๅ ฅใใใฎใไธๅบฆใใใฆใฟใฆ่ฉฆใใฆใฟใฆใฏใฉใใงใใใใใ
Wire.endTransmission();ใงไธๅบฆI2Cใฎ้ไฟกใๅฎไบใใใใจใใใตใณใใซในใฑใใ็ญใงๅใใ็ขบ่ชใใฆใฟใใใใใใผใใปใฝใใไธก้ขใใๅ้กใฎๅใๅใใใใฆใฟใฆใฏใใใใงใใใใใ
่ฒใ ่ฉฆ่ก้ฏ่ชคใใฆ่ชๅทฑ่งฃๆฑบใใพใใใ
ๆญขใพใใฎใฏIna219ๆ ้ใฎใใ
Voltใ่จๆธฌใงใใชใใฃใใฎใฏใ
Vin+ใฎๆๅใซๆตๆใๅ ฅใใฆใใ็บ๏ผVin-ใจGNDใฎ้ใซๅคๆด๏ผใงๅใใพใใ
ๆ็ต็ใซใใกใใฎๅ่ทฏๅณใฟใฆใฆใใณใจใใพใใใ
็ก่จๆธฌ็ถๆ ใง้ปๅงใ0Vใซใชใใชใใฎใงใใใใใใฏใพใไฝใจใใชใใใใชใฎใง็ก่ฆใใพใใ
ใใใใจใใใใใพใใใ