Files
waterlevel-software/lib/INA233/INA233.h
tobimai 0f581a54c5
All checks were successful
Test compiling project / test (push) Successful in 2m46s
Fix Sensor
2025-04-18 20:57:09 +02:00

64 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();
void setCalibrationRegister(int value);
bool isConnected(void);
private:
float _current_LSB;
float _shunt;
float _maxCurrent;
uint8_t _address;
TwoWire * _wire;
};