跳转到内容

SY6970 电池管理 IC

sy6970 组件允许您使用 SY6970 电池管理和充电 IC SY6970 数据手册 与 ESPHome 配合使用。

SY6970 是一款高度集成的电池充电器和系统电源路径管理器件,适用于单节锂离子和锂聚合物电池。 它具有宽输入电压范围、可编程充电电流和电压,以及全面的安全功能。

此组件常见于 LilyGo T-Display S3 Pro。

需要在配置中设置 I²C 总线 才能使此传感器工作。

此实现灵感来自 lewisxhe/XPowersLib Arduino 库

必须在配置中定义 SY6970 组件以设置设备。以下所有平台都引用此组件。

# 示例配置条目
i2c:
- id: bus_a
sda: GPIO5
scl: GPIO6
sy6970:
id: pmu
address: 0x6A
enable_status_led: true
input_current_limit: 1000
charge_voltage: 4200
charge_current: 500
precharge_current: 128
charge_enabled: true
enable_adc: true
update_interval: 1s
  • id (可选, ID): 手动指定用于代码生成的 ID。
  • address (可选, 整数): 设备的 I²C 地址。默认为 0x6A
  • enable_status_led (可选, 布尔值): 启用或禁用 IC 上的状态 LED。默认为 true
  • input_current_limit (可选, 整数): 输入电流,单位为毫安。接受 100 到 3200 之间的值。默认为 500
  • charge_voltage (可选, 整数): 充电电压,单位为毫伏。接受 3840 到 4608 之间的值。默认为 4208
  • charge_current (可选, 整数): 充电电流,单位为毫安。接受 0 到 5056 之间的值。默认为 2048
  • precharge_current (可选, 整数): 预充电电流,单位为毫安。接受 64 到 1024 之间的值。默认为 128
  • charge_enabled (可选, 布尔值): 启用或禁用充电。默认为 true
  • enable_adc (可选, 布尔值): 启用或禁用 ADC。默认为 true
  • 来自 I²C 设备 的所有其他选项。
  • update_interval (可选, 时间): 检查传感器的时间间隔。默认为 5s

sy6970 传感器平台公开来自 SY6970 IC 的电压和电流测量值。

# 示例配置条目
sensor:
- platform: sy6970
sy6970_id: pmu
vbus_voltage:
name: "VBUS Voltage"
battery_voltage:
name: "Battery Voltage"
system_voltage:
name: "System Voltage"
charge_current:
name: "Charge Current"
precharge_current:
name: "Precharge Current"
  • sy6970_id (可选, ID): SY6970 组件的 ID。默认为配置中唯一的 SY6970 组件。
  • vbus_voltage (可选): VBUS (USB) 输入端的电压,单位为伏特。
    • 来自 Sensor 的所有选项。
  • battery_voltage (可选): 电池电压,单位为伏特。
    • 来自 Sensor 的所有选项。
  • system_voltage (可选): 系统电压,单位为伏特。
    • 来自 Sensor 的所有选项。
  • charge_current (可选): 充电电流,单位为毫安。
    • 来自 Sensor 的所有选项。
  • precharge_current (可选): 预充电电流,单位为毫安。
    • 来自 Sensor 的所有选项。
  • 来自 Sensor 的所有其他选项。

sy6970 二值传感器平台公开来自 SY6970 IC 的充电状态信息。

# 示例配置条目
binary_sensor:
- platform: sy6970
sy6970_id: pmu
vbus_connected:
name: "VBUS Connected"
charging:
name: "Battery Charging"
charge_done:
name: "Charge Done"
  • sy6970_id (可选, ID): SY6970 组件的 ID。默认为配置中唯一的 SY6970 组件。
  • vbus_connected (可选): 指示 VBUS (USB 电源) 是否已连接。
  • charging (可选): 指示电池当前是否正在充电。
  • charge_done (可选): 指示充电是否完成。
  • 来自 Binary Sensor 的所有其他选项。

sy6970 文本传感器平台将来自 SY6970 IC 的状态信息以文本形式公开。

# 示例配置条目
text_sensor:
- platform: sy6970
sy6970_id: pmu
bus_status:
name: "Power Source Type"
charge_status:
name: "Charging Status"
ntc_status:
name: "Battery Temperature"
  • sy6970_id (可选, ID): SY6970 组件的 ID。默认为配置中唯一的 SY6970 组件。
  • bus_status (可选): 连接的电源类型。可能的值有:
    • No Input - 未连接电源
    • USB SDP - USB 标准下游端口
    • USB CDP - USB 充电下游端口
    • USB DCP - USB 专用充电端口
    • HVDCP - 高压专用充电端口
    • Adapter - 专用适配器
    • Non-Standard Adapter - 非标准适配器
    • OTG - OTG 模式
    • 来自 Text Sensor 的所有选项。
  • charge_status (可选): 当前充电状态。可能的值有:
    • Not Charging - 电池未在充电
    • Pre-charge - 电池处于预充电阶段
    • Fast Charge - 电池处于快充阶段
    • Charge Done - 充电完成
    • 来自 Text Sensor 的所有选项。
  • ntc_status (可选): 基于 NTC 热敏电阻的电池温度状态。可能的值有:
    • Normal - 温度在正常范围内
    • Warm - 电池温热
    • Cool - 电池凉爽
    • Cold - 电池过冷
    • Hot - 电池过热
    • 来自 Text Sensor 的所有选项。
  • 来自 Text Sensor 的所有其他选项。

以下是 LilyGo T-Display S3 Pro v1 的完整配置示例:

# LilyGo T-Display S3 Pro 的完整配置示例
i2c:
- id: bus_a
scan: true
sda: GPIO5
scl: GPIO6
sy6970:
id: pmu
address: 0x6A
update_interval: 1s
enable_status_led: true
input_current_limit: 1000
charge_voltage: 4200
charge_current: 500
precharge_current: 128
charge_enabled: true
enable_adc: true
sensor:
- platform: sy6970
sy6970_id: pmu
vbus_voltage:
name: "VBUS Voltage"
battery_voltage:
name: "Battery Voltage"
system_voltage:
name: "System Voltage"
charge_current:
name: "Charge Current"
precharge_current:
name: "Precharge Current"
text_sensor:
- platform: sy6970
sy6970_id: pmu
bus_status:
name: "Power Source Type"
charge_status:
name: "Charging Status"
ntc_status:
name: "Battery Temperature"
binary_sensor:
- platform: sy6970
sy6970_id: pmu
charging:
name: "Battery Charging"
vbus_connected:
name: "VBUS Connected"
charge_done:
name: "Charge Done"

SY6970 提供多种可从自动化或脚本调用的配置方法:

# 用于调整充电参数的示例自动化
automation:
- trigger:
- platform: homeassistant
event: start
then:
- lambda: |-
// 将输入电流限制设置为 1500mA
id(pmu).set_input_current_limit(1500);
// 将充电目标电压设置为 4200mV
id(pmu).set_charge_target_voltage(4200);
// 将充电电流设置为 1000mA
id(pmu).set_charge_current(1000);
// 启用充电
id(pmu).set_charge_enabled(true);
  • set_input_current_limit(uint16_t milliamps) - 设置输入电流限制(100-3200mA,步进 50mA)
  • set_charge_target_voltage(uint16_t millivolts) - 设置目标充电电压(3840-4608mV,步进 16mV)
  • set_charge_current(uint16_t milliamps) - 设置快充电流(0-5056mA,步进 64mA)
  • set_precharge_current(uint16_t milliamps) - 设置预充电电流(64-1024mA,步进 64mA)
  • set_charge_enabled(bool enabled) - 设置电池充电启用/禁用
  • set_led_enabled(bool enabled) - 设置状态 LED 启用/禁用
  • set_enable_adc_measure(bool enabled) - 启用 ADC 测量

SY6970 是一款 I²C 控制的电池管理 IC,具有以下特性:

  • 单节锂离子/锂聚合物电池充电器
  • 宽输入电压范围:4.5V 至 14V
  • 可编程充电电流高达 5A
  • 可编程充电电压高达 4.608V
  • 通过 NTC 热敏电阻实现电池过温保护
  • 自动电源路径管理
  • 内置 ADC 用于电压和电流监测
  • 状态 LED 输出

该组件直接实现 SY6970 寄存器协议:

  • REG_0B: 总线和充电状态(位 7:5 为总线类型,位 4:3 为充电状态)
  • REG_0E: 电池电压(基准 2304mV,步进 20mV)
  • REG_11: VBUS 电压(基准 2600mV,步进 100mV)
  • REG_12: 充电电流(步进 50mA)
  • REG_00-07: 用于电流限制、充电参数和安全定时器的配置寄存器