SY6970 电池管理芯片
sy6970 组件允许您在 ESPHome 中使用 SY6970 电池管理与充电芯片 SY6970 数据手册。
SY6970 是一款高度集成的电池充电器和系统电源路径管理器件,适用于单节锂离子和锂聚合物电池。它具有宽输入电压范围、可编程充电电流和电压,以及全面的安全功能。
该组件用于 LilyGo T-Display S3 Pro。
要在您的配置中使该传感器正常工作,必须先设置好 I²C 总线。
该实现受到 lewisxhe/XPowersLib Arduino 库 的启发。
组件/集线器
Section titled “组件/集线器”必须在配置中定义 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"传感器配置变量
Section titled “传感器配置变量”- sy6970_id (可选, ID): SY6970 组件的 ID。默认为配置中唯一的 SY6970 组件。
- vbus_voltage (可选): VBUS(USB)输入上的电压,单位为伏。
- Sensor 的所有选项。
- battery_voltage (可选): 电池电压,单位为伏。
- Sensor 的所有选项。
- system_voltage (可选): 系统电压,单位为伏。
- Sensor 的所有选项。
- charge_current (可选): 充电电流,单位为毫安。
- Sensor 的所有选项。
- precharge_current (可选): 预充电电流,单位为毫安。
- Sensor 的所有选项。
- Sensor 的所有其他选项。
二进制传感器
Section titled “二进制传感器”sy6970 二进制传感器平台公开来自 SY6970 芯片的充电状态信息。
# 示例配置条目binary_sensor: - platform: sy6970 sy6970_id: pmu vbus_connected: name: "VBUS Connected" charging: name: "Battery Charging" charge_done: name: "Charge Done"二进制传感器配置变量
Section titled “二进制传感器配置变量”- sy6970_id (可选, ID): SY6970 组件的 ID。默认为配置中唯一的 SY6970 组件。
- vbus_connected (可选): 指示 VBUS(USB 电源)是否已连接。
- Binary Sensor 的所有选项。
- charging (可选): 指示电池当前是否正在充电。
- Binary Sensor 的所有选项。
- charge_done (可选): 指示充电是否完成。
- Binary Sensor 的所有选项。
- 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"文本传感器配置变量
Section titled “文本传感器配置变量”- 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: 用于电流限制、充电参数和安全定时器的配置寄存器