跳转到内容

SY6970 电池管理芯片

sy6970 组件允许您在 ESPHome 中使用 SY6970 电池管理与充电芯片 SY6970 数据手册。

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 (可选, int): 设备的 I²C 地址。默认为 0x6A。
  • enable_status_led (可选, boolean): 启用或禁用芯片上的状态 LED。默认为 true。
  • input_current_limit (可选, int): 输入电流,单位为毫安。接受 100 到 3200 之间的值。默认为 500。
  • charge_voltage (可选, int): 充电电压,单位为毫伏。接受 3840 到 4608 之间的值。默认为 4208。
  • charge_current (可选, int): 充电电流,单位为毫安。接受 0 到 5056 之间的值。默认为 2048。
  • precharge_current (可选, int): 预充电电流,单位为毫安。接受 64 到 1024 之间的值。默认为 128。
  • charge_enabled (可选, boolean): 启用或禁用充电。默认为 true。
  • enable_adc (可选, boolean): 启用或禁用 ADC。默认为 true。
  • I²C 设备 的所有其他选项。
  • update_interval (可选, Time): 检查传感器的间隔。默认为 5s。

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

# 示例配置条目
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)输入上的电压,单位为伏。
  • battery_voltage (可选): 电池电压,单位为伏。
  • system_voltage (可选): 系统电压,单位为伏。
  • charge_current (可选): 充电电流,单位为毫安。
  • precharge_current (可选): 预充电电流,单位为毫安。
  • Sensor 的所有其他选项。

sy6970 二进制传感器平台公开来自 SY6970 芯片的充电状态信息。

# 示例配置条目
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 芯片的状态信息。

# 示例配置条目
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 控制的电池管理芯片,具有以下功能:

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

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

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