Skip to content

Commit

Permalink
Merge branch 'feat/add_sensor_max17048' into 'master'
Browse files Browse the repository at this point in the history
feat(sensor): add max17048 lithium battery monitor sensor

Closes AEGHB-287

See merge request ae_group/esp-iot-solution!1189
  • Loading branch information
leeebo committed Jan 8, 2025
2 parents b8f75dc + 4b47315 commit f293523
Show file tree
Hide file tree
Showing 22 changed files with 1,470 additions and 1 deletion.
1 change: 1 addition & 0 deletions .github/workflows/upload_component.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ jobs:
components/motor/esp_simplefoc;
components/motor/servo;
components/openai;
components/sensors/battery_fuel_gauge/max17048;
components/sensors/power_measure;
components/sensors/gesture/apds9960;
components/sensors/humiture/aht20;
Expand Down
8 changes: 8 additions & 0 deletions .gitlab/ci/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,14 @@ build_components_sensors_power_measure_test_apps:
variables:
EXAMPLE_DIR: components/sensors/power_measure/test_apps

build_components_sensors_battery_fuel_gauge_max17048_test_apps:
extends:
- .build_examples_template
- .rules:build:components_sensors_battery_fuel_gauge_max17048_test_apps
- .build_idf_active_release_version
variables:
EXAMPLE_DIR: components/sensors/battery_fuel_gauge/max17048/test_apps

build_components_sensors_gesture_apds9960_test_apps:
extends:
- .build_examples_template
Expand Down
15 changes: 15 additions & 0 deletions .gitlab/ci/rules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,10 @@
- "components/sensors/power_measure/**/*"
- "components/tools/cmake_utilities/package_manager.cmake"

.patterns-components_sensors_battery_fuel_gauge_max17048: &patterns-components_sensors_battery_fuel_gauge_max17048
- "components/sensors/battery_fuel_gauge/max17048/**/*"
- "tools/cmake_utilities/package_manager.cmake"

.patterns-components_sensors_gesture_apds9960: &patterns-components_sensors_gesture_apds9960
- "components/sensors/gesture/apds9960/**/*"
- "tools/cmake_utilities/package_manager.cmake"
Expand Down Expand Up @@ -2016,6 +2020,17 @@
- <<: *if-dev-push
changes: *patterns-components_openai

.rules:build:components_sensors_battery_fuel_gauge_max17048_test_apps:
rules:
- <<: *if-protected
- <<: *if-label-build
- <<: *if-label-target_test
- <<: *if-trigger-job
- <<: *if-dev-push
changes: *patterns-build_system
- <<: *if-dev-push
changes: *patterns-components_sensors_battery_fuel_gauge_max17048

.rules:build:components_sensors_gesture_apds9960_test_apps:
rules:
- <<: *if-protected
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ The registered components in ESP-IoT-Solution are listed below:
| [led_indicator](https://components.espressif.com/components/espressif/led_indicator) | [![Component Registry](https://components.espressif.com/components/espressif/led_indicator/badge.svg)](https://components.espressif.com/components/espressif/led_indicator) |
| [lightbulb_driver](https://components.espressif.com/components/espressif/lightbulb_driver) | [![Component Registry](https://components.espressif.com/components/espressif/lightbulb_driver/badge.svg)](https://components.espressif.com/components/espressif/lightbulb_driver) |
| [lis2dh12](https://components.espressif.com/components/espressif/lis2dh12) | [![Component Registry](https://components.espressif.com/components/espressif/lis2dh12/badge.svg)](https://components.espressif.com/components/espressif/lis2dh12) |
| [max17048](https://components.espressif.com/components/espressif/max17048) | [![Component Registry](https://components.espressif.com/components/espressif/max17048/badge.svg)](https://components.espressif.com/components/espressif/max17048) |
| [mcp23017](https://components.espressif.com/components/espressif/mcp23017) | [![Component Registry](https://components.espressif.com/components/espressif/mcp23017/badge.svg)](https://components.espressif.com/components/espressif/mcp23017) |
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
Expand Down
1 change: 1 addition & 0 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ ESP-IoT-Solution 中注册的组件如下:
| [led_indicator](https://components.espressif.com/components/espressif/led_indicator) | [![Component Registry](https://components.espressif.com/components/espressif/led_indicator/badge.svg)](https://components.espressif.com/components/espressif/led_indicator) |
| [lightbulb_driver](https://components.espressif.com/components/espressif/lightbulb_driver) | [![Component Registry](https://components.espressif.com/components/espressif/lightbulb_driver/badge.svg)](https://components.espressif.com/components/espressif/lightbulb_driver) |
| [lis2dh12](https://components.espressif.com/components/espressif/lis2dh12) | [![Component Registry](https://components.espressif.com/components/espressif/lis2dh12/badge.svg)](https://components.espressif.com/components/espressif/lis2dh12) |
| [max17048](https://components.espressif.com/components/espressif/max17048) | [![Component Registry](https://components.espressif.com/components/espressif/max17048/badge.svg)](https://components.espressif.com/components/espressif/max17048) |
| [mcp23017](https://components.espressif.com/components/espressif/mcp23017) | [![Component Registry](https://components.espressif.com/components/espressif/mcp23017/badge.svg)](https://components.espressif.com/components/espressif/mcp23017) |
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
Expand Down
7 changes: 7 additions & 0 deletions components/sensors/battery_fuel_gauge/max17048/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ChangeLog

## v0.1.0 - 2024-12-28

### Enhancements:

* Initial version: Provide the basic functionality of the MAX17048/MAX17049 sensor.
5 changes: 5 additions & 0 deletions components/sensors/battery_fuel_gauge/max17048/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
idf_component_register(SRCS "max17048.c"
INCLUDE_DIRS include)

include(package_manager)
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR})
31 changes: 31 additions & 0 deletions components/sensors/battery_fuel_gauge/max17048/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# MAX17048/MAX17049

The MAX17048/MAX17049 ICs are tiny, micropower current fuel gauges for lithium-ion (Li+) batteries in handheld and portable equipment. The MAX17048 operates with a single lithium cell and the MAX17049 with two lithium cells in series. The ICs use the sophisticated Li+ battery-modeling algorithm ModelGauge™ to track the battery relative state-of-charge (SOC) continuously over widely varying charge and discharge conditions. The ModelGauge algorithm eliminates current-sense resistor and battery-learn cycles required in traditional fuel gauges. Temperature compensation is implemented using the system microcontroller.

More detailed data can be found in the [MAX17048/MAX17049 Datasheet](https://www.analog.com/media/en/technical-documentation/data-sheets/MAX17048-MAX17049.pdf).

## Example of MAX17048/MAX17049 usage

```c
i2c_bus_handle_t i2c_bus = NULL;
max17048_handle_t max17048 = NULL;

//Step1: Init I2C bus
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_io_num = I2C_MASTER_SCL_IO,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = 400 * 1000,
};
i2c_bus = i2c_bus_create(I2C_NUM_0, &conf);

//Step2: Init max17048
max17048 = max17048_create(i2c_bus, MAX17048_I2CADDR_DEFAULT);

// Step2: Get voltage and battery percentage
float voltage = 0, percent = 0;
max17048_get_cell_voltage(max17048, &voltage);
max17048_get_cell_percent(max17048, &percent);
```
10 changes: 10 additions & 0 deletions components/sensors/battery_fuel_gauge/max17048/idf_component.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: "0.1.0"
description: I2C driver for MAX17048/MAX17049 micropower current fuel gauges
url: https://github.com/espressif/esp-iot-solution/tree/master/components/sensors/battery_fuel_gauge/max17048
repository: https://github.com/espressif/esp-iot-solution.git
documentation: https://docs.espressif.com/projects/esp-iot-solution/en/latest/sensors/battery_fuel_gauge.html
issues: https://github.com/espressif/esp-iot-solution/issues
dependencies:
espressif/i2c_bus: "1.1.*"
idf: '>=4.4'
cmake_utilities: "0.*"
Loading

0 comments on commit f293523

Please sign in to comment.