sensor INA 219 adalah sensor untuk mengukur arus dan tegangan dan media komunikasinya via i2c. dari 2 parameter itu bisa juga memonitor daya dengan rumus:
daya = tegangan x arus
adapun kemampuan nya itu mengukur tegangan sampai 26VDC dan untuk arus max 3,2A.
berikut ini adalah bagian-bagian dari sensor INA219:
Adafruit_INA219 ina219_A; // tanpa jumper
Adafruit_INA219 ina219_B(0x41);//JUMPER A0
Adafruit_INA219 ina219_C(0x44);//JUMPER A1
Adafruit_INA219 ina219_D(0x45);//JUMPER A0 DAN A1
cara wiring:
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
void setup(void)
{
Serial.begin(115200);
while (!Serial) {
// will pause Zero, Leonardo, etc until serial console opens
delay(1);
}
uint32_t currentFrequency;
ina219.begin();
Serial.println("SIMOR 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);
}
setelah data sudah muncul, langkah selanjutnya lempar data ke modbus:
#include <ModbusRtu.h>
#define ID 1
Modbus slave(ID, 0, 0); // this is slave ID and RS-232 or USB-FTDI
uint16_t au16data[90];
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219_A;
void setup() {
uint32_t currentFrequency;
ina219_A.begin(); // Initialize first board (default address 0x40)
ina219_B.begin(); // Initialize second board with the address 0x41
slave.begin( 19200 );
}
void loop() {
slave.poll( au16data, 90 );
io_poll();
}
void io_poll() {
int Ashuntvoltage = 0;
float Abusvoltage = 0;
int Acurrent_mA = 0;
float Aloadvoltage = 0;
int Bshuntvoltage = 0;
float Bbusvoltage = 0;
int Bcurrent_mA = 0;
float Bloadvoltage = 0;
Ashuntvoltage = ina219_A.getShuntVoltage_mV();
Abusvoltage = ina219_A.getBusVoltage_V();
Acurrent_mA = ina219_A.getCurrent_mA();
Aloadvoltage = Abusvoltage + (Ashuntvoltage / 1000);
// read INA219
au16data[2] = Ashuntvoltage ;
au16data[3] = Abusvoltage * 10;
au16data[4] = Acurrent_mA ;
au16data[5] = Aloadvoltage * 10;
au16data[6] = ((Acurrent_mA *0.001) * Abusvoltage) * 10; //daya
}
Terima kasih sudah meluangkan waktunya untuk membaca artikel ini.
silahkan tinggalkan komen jika ada masukan untuk artikel selanjutnya
Tidak ada komentar:
Posting Komentar