Texas Instruments INA226 High-or Low-Side Measurement, Bi-Directional CURRENT/POWER MONITOR with I 2C™ Interface http://www.ti.com/product/ina226&DCMP=analog_signalchain_mr&HQS=ina226-pr
INA226.h
- Committer:
- gizmo69the2nd
- Date:
- 2013-08-07
- Revision:
- 0:3984961a3725
File content as of revision 0:3984961a3725:
/* * Texas Instruments INA226 voltage/ current/ power monitor library * * * Copyright (c) 2013 Davy Van Belle, MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** @file * @brief INA226 I2C */ #ifndef INA226_H #define INA226_H #include "mbed.h" #define CONF 0x00 #define VSHUNT 0x01 #define VBUS 0x02 #define POWER 0x03 #define CURRENT 0x04 #define CAL 0x05 #define MASK 0x06 #define ALERT 0x07 #define DIE_ID 0xFF #define SHUNT_LSB 0.0000025 #define BUS_LSB 0.00125 /** INA226 class */ class INA226 { public: /** init INA226 class * @param *i2c pointer to I2C serial interface * @param addr sensor I2C address */ INA226 (I2C* i2c, char addr); /** Set the configuration of the device * @param reg desired Configure Register bits */ void setConfig (unsigned short reg); /** Get device Configuration register */ unsigned short getConfig(); /** Get the voltage over the shunt */ float getShuntVolt(); /** Get the voltage of the bus rail */ float getBusVolt(); /** Get the current measured through the shunt. * in order to get the current you need to set the shut resistor value first */ float getCurrent(); float getPower(); /** Set the Calibartion register */ void setCalibration(unsigned short reg); /** Get the Calibration register */ unsigned short getCalibration(); /** Set the mask/enable Register */ void setMaskEnable(unsigned short reg); /** Get the mask/enable Register */ unsigned short getMaskEnable(); void setAlertLimit(unsigned short reg); unsigned short getAlertLimit(); /** Get the unique ID of the device */ unsigned short getID(); /** Set the shunt resistor *@param val value in ohm */ void setShuntRValue(float val); float getShuntRValue(void); /** Set the current LSB for maximum current in decimal */ void setCurrentLSB(float val); float getCurrentLSB(float val); protected: private: char _addr; I2C *_i2c; float ShuntR; float CURR_LSB; }; #endif