Files
waterlevel-software/lib/INA233/INA233.h
2025-03-20 21:08:37 +01:00

59 lines
1.2 KiB
C++

#pragma once
#include "Arduino.h"
#include "Wire.h"
#define REGISTER_READ_VIN 0x88
#define REGISTER_READ_VSHUNT 0xD1
#define REGISTER_CONFIGURATION 0xD0
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:
char* print_device_number();
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();
bool isConnected(void);
private:
float _current_LSB;
float _shunt;
float _maxCurrent;
uint8_t _address;
TwoWire * _wire;
};