This commit is contained in:
2025-03-20 21:08:37 +01:00
parent 76e182935b
commit f16659c25c
3 changed files with 42 additions and 11 deletions

View File

@@ -23,6 +23,33 @@ uint16_t get_word(uint8_t address, uint8_t reg) {
return (data[1] << 8) | data[0];
}
char* INA233::print_device_number() {
char data[6];
int16_t rawVoltage;
// Request data from the PMBus device
Wire.beginTransmission(INA233::_address);
Wire.write(0x9A);
Wire.endTransmission();
Wire.requestFrom(INA233::_address, 6);
if (Wire.available() == 6) {
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
} else {
// return 0 on error
data[0] = '\0';
return data;
}
// Combine the two bytes into a single 16-bit value
return data;
}
void sendWord(uint8_t deviceAddress, uint8_t registerAddress, uint16_t value) {
Wire.beginTransmission(deviceAddress);

View File

@@ -32,20 +32,21 @@ enum ConversionTime {
class INA233{
public:
INA233(uint8_t addr, TwoWire *wire = &Wire);
bool begin(const uint8_t sda, const uint8_t scl);
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);
float getBusVoltage(void);
float getShuntVoltage_mV(void);
float getShuntVoltage(void);
void setAveragingMode(AveragingMode);
void setBusVoltageConversionTime(ConversionTime);
void setShuntVoltageConversionTime(ConversionTime);
uint16_t getConfigRegister();
void setAveragingMode(AveragingMode);
void setBusVoltageConversionTime(ConversionTime);
void setShuntVoltageConversionTime(ConversionTime);
bool isConnected(void);
uint16_t getConfigRegister();
bool isConnected(void);
private:
float _current_LSB;

View File

@@ -40,6 +40,9 @@ void read_sensor_task(void* parameter)
while (true) {
// Get Values from sensor
char* chip_id = ina_sensor.print_device_number(0x40);
logger.log(MYLOG, ERROR, "Chip Model: %s", chip_id);
float bus_voltage = ina_sensor.getBusVoltage();
float shunt_voltage = ina_sensor.getShuntVoltage_mV() - zero_value;