Skip to main content

Meadow.Foundation.Sensors.Power.Ina228

Ina228
StatusStatus badge: working
Source codeGitHub
Datasheet(s)GitHub
NuGet packageNuGet Gallery for Meadow.Foundation.Sensors.Power.Ina2xx

Code Example

Ina228 ina228;

public override Task Initialize()
{
Resolver.Log.Debug("Initialize...");

var bus = Device.CreateI2cBus(I2cBusSpeed.Fast);
ina228 = new Ina228(bus);
ina228.ConfigureConversion(averaging:Ina228.Averaging.Average_4);
ina228.SetCalibration(new Current(10.0, Current.UnitType.Amps), false);
Resolver.SensorService.RegisterSensor(ina228);

Resolver.Log.Info($"--- INA228 Sample App ---");
Resolver.Log.Info($"Manufacturer: {ina228.ManufacturerID}");
Resolver.Log.Info($"DeviceID: 0x{ina228.DeviceID:X3}");
Resolver.Log.Info($"Revision: 0x{ina228.DeviceRevision:X2}");
ina228.Updated += (sender, result) =>
{
if (result.New is { Current: { }, Voltage: { } })
Resolver.Log.Info($"{result.New.Voltage.Value.Millivolts:N3} mV @ {result.New.Current.Value.Milliamps:N3} mA");
};

return Task.CompletedTask;
}

public override Task Run()
{
Resolver.Log.Debug("Run...");
ina228.StartUpdating(TimeSpan.FromSeconds(2));
return Task.CompletedTask;
}

Sample project(s) available on GitHub

Class Ina228

Represents a INA228 Precision Digital Current and Power Monitor

Assembly: Ina2xx.dll
View Source
Declaration
public class Ina228 : Ina2xx, IObservable<IChangeResult<(Current? Current, Voltage? Voltage, Power? Power)>>, ISamplingSensor<(Current? Current, Voltage? Voltage, Power? Power)>, ISensor<(Current? Current, Voltage? Voltage, Power? Power)>, IDisposable, ICurrentSensor, ISamplingSensor<Current>, ISensor<Current>, IVoltageSensor, ISamplingSensor<Voltage>, ISensor<Voltage>, IPowerSensor, ISamplingSensor<Power>, ISensor<Power>, ISensor, ISamplingSensor, II2cPeripheral

Inheritance: System.Object -> Meadow.Foundation.ObservableBase<UNIT>

Implements:

Expand

System.IObservable<Meadow.IChangeResult<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>>, Meadow.Peripherals.Sensors.ISamplingSensor<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>, Meadow.Peripherals.Sensors.ISensor<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>, System.IDisposable, Meadow.Peripherals.Sensors.ICurrentSensor, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Current>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Current>, Meadow.Peripherals.Sensors.IVoltageSensor, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Voltage>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Voltage>, Meadow.Peripherals.Sensors.IPowerSensor, Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Power>, Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Power>, Meadow.Peripherals.Sensors.ISensor, Meadow.Peripherals.Sensors.ISamplingSensor, Meadow.Hardware.II2cPeripheral

Methods

Configure()

Sets the sensor Configuration to default values. Each implementation should provide overloads for specific available options.

View Source
Declaration
public override void Configure()

Configure(bool, bool, ushort)

Sets Configuration

View Source
Declaration
public void Configure(bool shuntGain4x = false, bool temperatureCompensation = false, ushort initialConversionDelayMs = 0)
Parameters
TypeName
System.BooleanshuntGain4x
System.BooleantemperatureCompensation
System.UInt16initialConversionDelayMs

ConfigureConversion(Mode, Averaging, ConversionTime, ConversionTime, ConversionTime)

Sets Configuration of ADC conversions

View Source
Declaration
public void ConfigureConversion(Ina228.Mode mode = Mode.ContinuousAll, Ina228.Averaging averaging = Averaging.Average_1, Ina228.ConversionTime voltageTime = ConversionTime.ConversionTime_1052us, Ina228.ConversionTime currentTime = ConversionTime.ConversionTime_1052us, Ina228.ConversionTime temperatureTime = ConversionTime.ConversionTime_1052us)
Parameters
TypeNameDescription
Meadow.Foundation.Sensors.Power.Ina228.Modemodeselection of values and trigger mode
Meadow.Foundation.Sensors.Power.Ina228.AveragingaveragingOn-chip value averaging
Meadow.Foundation.Sensors.Power.Ina228.ConversionTimevoltageTimeConversion time for Voltage measurements
Meadow.Foundation.Sensors.Power.Ina228.ConversionTimecurrentTimeConversion time for Current measurements
Meadow.Foundation.Sensors.Power.Ina228.ConversionTimetemperatureTimeConversion time for Die Temperature measurements

SetCalibration(Current, bool)

_currentScale and _powerScale are set along with _calibration using logic outlined in the datasheet for the INA228

View Source
Declaration
public void SetCalibration(Current maxExpectedCurrent, bool shuntGain4x = false)
Parameters
TypeNameDescription
Meadow.Units.CurrentmaxExpectedCurrentMaximum expected Current in the specific application.
System.BooleanshuntGain4xtrue applies 4x gain to shunt measurements

ReadCurrent()

Read the Current measurement from the power monitor IC.

View Source
Declaration
public override Current ReadCurrent()
Returns

Meadow.Units.Current

ReadBusVoltage()

Read the Voltage measurement from the power monitor IC.

View Source
Declaration
public override Voltage ReadBusVoltage()
Returns

Meadow.Units.Voltage

ReadShuntVoltage()

Read the Voltage across the Shunt (sense) resistor from the power monitor IC.

View Source
Declaration
public override Voltage ReadShuntVoltage()
Returns

Meadow.Units.Voltage

ReadPower()

Read the Power measurement from the power monitor IC.

View Source
Declaration
public override Power ReadPower()
Returns

Meadow.Units.Power

ReadEnergyAccumulator()

Read the Energy accumulator from the power monitor IC.

View Source
Declaration
public Energy ReadEnergyAccumulator()
Returns

Meadow.Units.Energy: Meadow.Units.Energy representing the energy accumulator value.### ReadChargeAccumulator() Read the Charge accumulator from the power monitor IC.

View Source
Declaration
public double ReadChargeAccumulator()
Returns

System.Double: Meadow.Units.Charge representing the charge accumulator value.### ResetAccumulators() Resets the Energy and Charge accumulators on the power monitor IC.

View Source
Declaration
public void ResetAccumulators()

Implements

  • System.IObservable<Meadow.IChangeResult<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>>
  • Meadow.Peripherals.Sensors.ISamplingSensor<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>
  • Meadow.Peripherals.Sensors.ISensor<System.ValueTuple<System.Nullable<Meadow.Units.Current>,System.Nullable<Meadow.Units.Voltage>,System.Nullable<Meadow.Units.Power>>>
  • System.IDisposable
  • Meadow.Peripherals.Sensors.ICurrentSensor
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Current>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Current>
  • Meadow.Peripherals.Sensors.IVoltageSensor
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Voltage>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Voltage>
  • Meadow.Peripherals.Sensors.IPowerSensor
  • Meadow.Peripherals.Sensors.ISamplingSensor<Meadow.Units.Power>
  • Meadow.Peripherals.Sensors.ISensor<Meadow.Units.Power>
  • Meadow.Peripherals.Sensors.ISensor
  • Meadow.Peripherals.Sensors.ISamplingSensor
  • Meadow.Hardware.II2cPeripheral