Skip to content

Commit 5cd1df4

Browse files
authored
Merge pull request #651 from awolden/awolden/ina226
Add INA226 to environmental sensors
2 parents 412e9d4 + 0c37eaf commit 5cd1df4

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

platformio.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,14 @@ build_flags =
115115
-D ENV_INCLUDE_LPS22HB=1
116116
-D ENV_INCLUDE_INA3221=1
117117
-D ENV_INCLUDE_INA219=1
118+
-D ENV_INCLUDE_INA226=1
118119
-D ENV_INCLUDE_INA260=1
119120
-D ENV_INCLUDE_MLX90614=1
120121
-D ENV_INCLUDE_VL53L0X=1
121122
lib_deps =
122123
adafruit/Adafruit INA3221 Library @ ^1.0.1
123124
adafruit/Adafruit INA219 @ ^1.2.3
125+
robtillaart/INA226 @ ^0.6.4
124126
adafruit/Adafruit INA260 Library @ ^1.5.3
125127
adafruit/Adafruit AHTX0 @ ^2.0.5
126128
adafruit/Adafruit BME280 Library @ ^2.3.0

src/helpers/sensors/EnvironmentSensorManager.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ static Adafruit_INA219 INA219(TELEM_INA219_ADDRESS);
6565
static Adafruit_INA260 INA260;
6666
#endif
6767

68+
#if ENV_INCLUDE_INA226
69+
#define TELEM_INA226_ADDRESS 0x44
70+
#define TELEM_INA226_SHUNT_VALUE 0.100
71+
#define TELEM_INA226_MAX_AMP 0.8
72+
#include <INA226.h>
73+
static INA226 INA226(TELEM_INA226_ADDRESS);
74+
#endif
75+
6876
#if ENV_INCLUDE_MLX90614
6977
#define TELEM_MLX90614_ADDRESS 0x5A // MLX90614 IR temperature sensor I2C address
7078
#include <Adafruit_MLX90614.h>
@@ -202,6 +210,17 @@ bool EnvironmentSensorManager::begin() {
202210
}
203211
#endif
204212

213+
#if ENV_INCLUDE_INA226
214+
if (INA226.begin()) {
215+
MESH_DEBUG_PRINTLN("Found INA226 at address: %02X", TELEM_INA226_ADDRESS);
216+
INA226.setMaxCurrentShunt(TELEM_INA226_MAX_AMP, TELEM_INA226_SHUNT_VALUE);
217+
INA226_initialized = true;
218+
} else {
219+
INA226_initialized = false;
220+
MESH_DEBUG_PRINTLN("INA226 was not found at I2C address %02X", TELEM_INA226_ADDRESS);
221+
}
222+
#endif
223+
205224
#if ENV_INCLUDE_MLX90614
206225
if (MLX90614.begin(TELEM_MLX90614_ADDRESS, TELEM_WIRE)) {
207226
MESH_DEBUG_PRINTLN("Found MLX90614 at address: %02X", TELEM_MLX90614_ADDRESS);
@@ -323,6 +342,15 @@ bool EnvironmentSensorManager::querySensors(uint8_t requester_permissions, Cayen
323342
}
324343
#endif
325344

345+
#if ENV_INCLUDE_INA226
346+
if (INA226_initialized) {
347+
telemetry.addVoltage(next_available_channel, INA226.getBusVoltage());
348+
telemetry.addCurrent(next_available_channel, INA226.getCurrent_mA() / 1000.0);
349+
telemetry.addPower(next_available_channel, INA226.getPower_mW() / 1000.0);
350+
next_available_channel++;
351+
}
352+
#endif
353+
326354
#if ENV_INCLUDE_MLX90614
327355
if (MLX90614_initialized) {
328356
telemetry.addTemperature(TELEM_CHANNEL_SELF, MLX90614.readObjectTempC());

src/helpers/sensors/EnvironmentSensorManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class EnvironmentSensorManager : public SensorManager {
1414
bool INA3221_initialized = false;
1515
bool INA219_initialized = false;
1616
bool INA260_initialized = false;
17+
bool INA226_initialized = false;
1718
bool SHTC3_initialized = false;
1819
bool LPS22HB_initialized = false;
1920
bool MLX90614_initialized = false;

0 commit comments

Comments
 (0)