| Linduino 1.3.0 Linear Technology Arduino-Compatible Demonstration Board

Files
LTC2992: Dual Wide Range Power Monitor
Power Monitors and Coulomb Counters

LTC2992: Dual Wide Range Power Monitor. More...

## Files
file | LTC2992.cpp
| Header for LTC2992: Dual Wide Range Power Monitor.
file | LTC2992.h
| LTC2992: Dual Wide Range Power Monitor.
file | DC2561.ino
| LTC2992: Dual Wide Range Power Monitor.

## Detailed Description

LTC2992: Dual Wide Range Power Monitor.

    The LTC®2992 is a rail-to-rail system monitor that measures
    current, voltage, power, charge and energy. It features an
    operating range of 2.7V to 100V and includes a shunt regulator
    for supplies above 100V. The current measurement common mode
    range of 0V to 100V is independent of the input supply.
    A 12-bit ADC measures load current, input voltage and an
    auxiliary external voltage. Load current and internally
    calculated power are integrated over an external clock or
    crystal or internal oscillator time base for charge and energy.
    An accurate time base allows the LTC2992 to provide measurement
    accuracy of better than ±0.6% for charge and ±1% for power and
    energy. Minimum and maximum values are stored and an overrange
    alert with programmable thresholds minimizes the need for software
    polling. Data is reported via a standard I2C interface.
    Shutdown mode reduces power consumption to 15uA.

    I2C DATA FORMAT (MSB FIRST):

    Data Out:
    Byte #1                                    Byte #2                     Byte #3

    START  SA6 SA5 SA4 SA3 SA2 SA1 SA0 W SACK  X  X C5 C4 C3 C2 C1 C0 SACK D7 D6 D5 D4 D3 D2 D1 D0 SACK  STOP

    Data In:
    Byte #1                                    Byte #2                                    Byte #3

    START  SA6 SA5 SA4 SA3 SA2 SA1 SA0 W SACK  X  X  C5 C4 C3 C2 C1 C0 SACK  Repeat Start SA6 SA5 SA4 SA3 SA2 SA1 SA0 R SACK

    Byte #4                                   Byte #5
    MSB                                       LSB
    D15 D14  D13  D12  D11  D10  D9 D8 MACK   D7 D6 D5 D4 D3  D2  D1  D0  MNACK  STOP

    START       : I2C Start
    Repeat Start: I2c Repeat Start
    STOP        : I2C Stop
    SAx         : I2C Address
    SACK        : I2C Slave Generated Acknowledge (Active Low)
    MACK        : I2C Master Generated Acknowledge (Active Low)
    MNACK       : I2c Master Generated Not Acknowledge
    W           : I2C Write (0)
    R           : I2C Read  (1)
    Cx          : Command Code
    Dx          : Data Bits
    X           : Don't care

    Example Code:

    Read power, current and voltage

        CTRLA = LTC2992_CHANNEL_CONFIG_V_C_3|LTC2992_SENSE_PLUS|LTC2992_OFFSET_CAL_EVERY|LTC2992_ADIN_GND;  //! Set Control A register to default value in continuous mode
        ack |= LTC2992_write(LTC2992_I2C_ADDRESS, LTC2992_CTRLA_REG, CTRLA);   //! Sets the LTC2992 to continuous mode

        resistor = .02; // Resistor Value On Demo Board

        ack |= LTC2992_read_24_bits(LTC2992_I2C_ADDRESS, LTC2992_POWER_MSB2_REG, &power_code);  // Reads the ADC registers that contains V^2
        power = LTC2992_code_to_power(power_code, resistor, LTC2992_Power_lsb); // Calculates power from power code, resistor value and power lsb

        ack |= LTC2992_read_12_bits(LTC2992_I2C_ADDRESS, LTC2992_DELTA_SENSE_MSB_REG, &current_code); // Reads the voltage code across sense resistor
        current = LTC2992_code_to_current(current_code, resistor, LTC2992_DELTA_SENSE_lsb); // Calculates current from current code, resistor value and current lsb

        ack |= LTC2992_read_12_bits(LTC2992_I2C_ADDRESS, LTC2992_SENSE_MSB_REG, &SENSE_code);   // Reads SENSE voltage code
        SENSE = LTC2992_SENSE_code_to_voltage(SENSE_code, LTC2992_SENSE_lsb);  // Calculates SENSE voltage from SENSE code and lsb

        ack |= LTC2992_read_32_bits(LTC2992_I2C_ADDRESS, LTC2992_ENERGY_MSB3_REG, &energy_code);  // Reads energy code
      energy = LTC2992_code_to_energy(energy_code,resistor,LTC2992_Power_lsb, LTC2992_INTERNAL_TIME_lsb); //Calculates Energy in Joules from energy_code, resistor, power lsb and time lsb

      ack |= LTC2992_read_32_bits(LTC2992_I2C_ADDRESS, LTC2992_CHARGE_MSB3_REG, &charge_code);  // Reads charge code
        charge = LTC2992_code_to_coulombs(charge_code,resistor,LTC2992_DELTA_SENSE_lsb, LTC2992_INTERNAL_TIME_lsb); //Calculates charge in coulombs from charge_code, resistor, current lsb and time lsb

http://www.linear.com/product/LTC2992

http://www.linear.com/product/LTC2992#demoboards

Copyright 2018(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- The use of this software may or may not infringe the patent rights of one or more patent holders. This license does not release you from the requirement that you obtain separate licenses from these patent holders to use this software.
- Use of the software either in source or binary form, must be run on or directly connected to an Analog Devices Inc. component.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.