From f16659c25c3f54af582bac5d7c0776d4542dab7e Mon Sep 17 00:00:00 2001 From: Tobias Maier Date: Thu, 20 Mar 2025 21:08:37 +0100 Subject: [PATCH] Changes --- lib/INA233/INA233.cpp | 27 +++++++++++++++++++++++++++ lib/INA233/INA233.h | 23 ++++++++++++----------- src/sensor/sensor.cpp | 3 +++ 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/lib/INA233/INA233.cpp b/lib/INA233/INA233.cpp index fcde6db..4f6cb9e 100644 --- a/lib/INA233/INA233.cpp +++ b/lib/INA233/INA233.cpp @@ -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); diff --git a/lib/INA233/INA233.h b/lib/INA233/INA233.h index bb480a5..f9c79c7 100644 --- a/lib/INA233/INA233.h +++ b/lib/INA233/INA233.h @@ -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; diff --git a/src/sensor/sensor.cpp b/src/sensor/sensor.cpp index 36c6117..bdf6e78 100644 --- a/src/sensor/sensor.cpp +++ b/src/sensor/sensor.cpp @@ -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;