Module ina219

Module ina219 

Source
Expand description

The INA219 is a current shunt and power monitor with an I2C- or SMBUS-compatible interface. The device monitors both shunt voltage drop and bus supply voltage, with programmable conversion times and filtering. A programmable calibration value, combined with an internal multiplier, enables direct readouts of current in amperes. An additional multiplying register calculates power in watts. The I2C- or SMBUS-compatible interface features 16 programmable addresses.

The INA219 is available in two grades: A and B. The B grade version has higher accuracy and higher precision specifications.

The INA219 senses across shunts on buses that can vary from 0 to 26 V. The device uses a single 3- to 5.5-V supply, drawing a maximum of 1 mA of supply current. The INA219 operates from –40°C to 125°C.

§Usage (sync)

use embedded_devices::devices::texas_instruments::ina219::{INA219Sync, address::Address, address::Pin};
use embedded_devices::sensor::OneshotSensorSync;
use uom::si::electric_current::{ampere, milliampere};
use uom::si::electric_potential::millivolt;
use uom::si::electrical_resistance::ohm;
use uom::si::power::milliwatt;
use uom::si::f64::{ElectricCurrent, ElectricalResistance};

// Create and initialize the device
let mut ina219 = INA219Sync::new_i2c(delay, i2c, Address::A0A1(Pin::Gnd, Pin::Gnd));
ina219.init(
  // Most units use a 100mΩ shunt resistor
  ElectricalResistance::new::<ohm>(0.1),
  // Maximum expected current 3A
  ElectricCurrent::new::<ampere>(3.0),
).unwrap();

// One-shot read all values
let measurement = ina219.measure().unwrap();
let bus_voltage = measurement.bus_voltage.get::<millivolt>();
let current = measurement.current.get::<milliampere>();
let power = measurement.power.get::<milliwatt>();
println!("Current measurement: {:?}mV, {:?}mA, {:?}mW", bus_voltage, current, power);

§Usage (async)

use embedded_devices::devices::texas_instruments::ina219::{INA219Async, address::Address, address::Pin};
use embedded_devices::sensor::OneshotSensorAsync;
use uom::si::electric_current::{ampere, milliampere};
use uom::si::electric_potential::millivolt;
use uom::si::electrical_resistance::ohm;
use uom::si::power::milliwatt;
use uom::si::f64::{ElectricCurrent, ElectricalResistance};

// Create and initialize the device
let mut ina219 = INA219Async::new_i2c(delay, i2c, Address::A0A1(Pin::Gnd, Pin::Gnd));
ina219.init(
  // Most units use a 100mΩ shunt resistor
  ElectricalResistance::new::<ohm>(0.1),
  // Maximum expected current 3A
  ElectricCurrent::new::<ampere>(3.0),
).await.unwrap();

// One-shot read all values
let measurement = ina219.measure().await.unwrap();
let bus_voltage = measurement.bus_voltage.get::<millivolt>();
let current = measurement.current.get::<milliampere>();
let power = measurement.power.get::<milliwatt>();
println!("Current measurement: {:?}mV, {:?}mA, {:?}mW", bus_voltage, current, power);

Modules§

address
registers

Structs§

INA219Async
The INA219 is a 12-bit current shunt and power monitor that can sense on buses with 0-26V. It has a programmable gain amplifier to measure full-scale shunt voltage ranges from 40mV to 320mV.
INA219Sync
The INA219 is a 12-bit current shunt and power monitor that can sense on buses with 0-26V. It has a programmable gain amplifier to measure full-scale shunt voltage ranges from 40mV to 320mV.
Measurement
Measurement data

Enums§

ContinuousMeasurementError
MeasurementError

Traits§

INA219Register