Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

root4root/Root4root_INA219

Repository files navigation

Root4root_INA219

Library for Texas Instruments INA219 IC - Bidirectional Current/Power Monitor

Quick Example:

#include <Arduino.h>
#include "Root4root_INA219.h"

Root4root_INA219 ina219; //0x40 address

void setup() {
Serial.begin(9600);
ina219.begin();
}

void loop() {
float busvoltage = 0;
float current_mA = 0;

busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();

Serial.println(busvoltage);
Serial.println(current_mA);

delay(1000);
}

Advanced Usage:

#include <Arduino.h>
#include "Root4root_INA219.h"

Root4root_INA219 ina219(0x40);

void setup() {

//Max expected current 20A with 10 milliOhms shunt,
//calculates calibration register value. 2000, 100 by default.
ina219.begin(20000, 10);

//Change configuration register to fit your requirements.
//Check Readme for more options, or read .h file
ina219.changeConfig(INA219_CONFIG_SHUNT_ADC_RESOLUTION_12BIT_8S_4260US |
INA219_CONFIG_BUS_VOLTAGE_RANGE_16V,
INA219_CONFIG_SHUNT_ADC_RESOLUTION_MASK |
INA219_CONFIG_BUS_VOLTAGE_RANGE_MASK);
//Same as above:
//ina219.changeConfig(0x0058, 0x2078);


Serial.begin(9600);
}

void loop() {
Serial.println(ina219.getBusVoltage_V());
Serial.println(ina219.getCurrent_mA());
Serial.println("--------------------");

//ina219.getBusVoltage_mV();
//ina219.getPower_mW();
//ina219.getShuntVoltage_mV();

delay(1000);
}

Available Methods:

//Constructor
Root4root_INA219(uint8_t addr = INA219_ADDRESS, TwoWire *theWire = &Wire);

//DEFAULT_MAX_EXPECTED_CURRENT 2000 mA
//DEFAULT_SHUNT_RESISTOR 100 mOhm
void begin(uint16_t expected = DEFAULT_MAX_EXPECTED_CURRENT, uint8_t rshunt = DEFAULT_SHUNT_RESISTOR);

void setCalibration(uint16_t expected, uint8_t rshunt);

void changeConfig(uint16_t value, uint16_t mask); //See header file to findout config and masks constants.

uint16_t getBusVoltage_mV();
float getBusVoltage_V();

float getShuntVoltage_mV();
int16_t getShuntVoltage_raw(); //raw, shunt voltage register value

float getCurrent_mA();
int16_t getCurrent_raw(); //raw, current register value (not in Amps)

float getPower_mW();
int16_t getPower_raw(); //raw, power register value (not in Watts)

void powerSave(bool on);

void reset();

void trigger(); //For trigged measure mode

//!! Following methods are mainly used for testing purpouses:
void readRegister(uint8_t reg, uint16_t *value);
void writeRegister(uint8_t reg, uint16_t value);

License:

MIT

Author:

Paul aka root4root
Any comments/suggestions are welcomed.

About

Arduino Library for Texas Instruments INA219 IC

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Packages

Contributors

Languages