62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Arduino.h"
|
|
#include "Wire.h"
|
|
|
|
|
|
#define REGISTER_READ_VIN 0x88
|
|
#define REGISTER_READ_VSHUNT 0xD1
|
|
#define REGISTER_CONFIGURATION 0xD0
|
|
#define REGISTER_READ_IIN 0x89
|
|
|
|
enum AveragingMode {
|
|
averages_1 = B000,
|
|
averages_4 = B001,
|
|
averages_16 = B010,
|
|
averages_64 = B011,
|
|
averages_128 = B100,
|
|
averages_256 = B101,
|
|
averages_512 = B110,
|
|
averages_1024 = B111
|
|
};
|
|
|
|
enum ConversionTime {
|
|
conversion_time_140uS = B000,
|
|
conversion_time_204uS = B001,
|
|
conversion_time_332us = B010,
|
|
conversion_time_588uS = B011,
|
|
conversion_time_1100uS = B100,
|
|
conversion_time_2116uS = B101,
|
|
conversion_time_4156uS = B110,
|
|
conversion_time_8244uS = B111
|
|
};
|
|
|
|
class INA233{
|
|
public:
|
|
String get_device_model();
|
|
INA233(uint8_t addr, TwoWire* wire = &Wire);
|
|
bool begin(const uint8_t sda, const uint8_t scl);
|
|
|
|
float getBusVoltage(void);
|
|
float getShuntVoltage_mV(void);
|
|
float getShuntVoltage(void);
|
|
|
|
void setAveragingMode(AveragingMode);
|
|
void setBusVoltageConversionTime(ConversionTime);
|
|
void setShuntVoltageConversionTime(ConversionTime);
|
|
|
|
uint16_t getConfigRegister();
|
|
|
|
void reset();
|
|
|
|
bool isConnected(void);
|
|
|
|
private:
|
|
float _current_LSB;
|
|
float _shunt;
|
|
float _maxCurrent;
|
|
|
|
uint8_t _address;
|
|
TwoWire * _wire;
|
|
};
|