MTK手机平台充电原理

EPT GPIO初始化文件 @bsp_gpio_ept_config.c

1 知识点总结

1.1 Official 参考充电电路

Figure 1-1 参考电路

VCHG:USB正极

VCDT:VCHG Charger Detect充电电压检测脚

ISENSE:充电电流检测电阻的正极

BATSNS:充电电流检测电阻的负极

BAT:电池正极引脚

BAT_ON:电池NTC (热敏电阻) 引脚

RECHARGING_VOLTAGE: 回充电压

1.2 5V充电器电压设置

@ cust_charging.h

#define V_CHARGER_MAX 6500 // 6.5 V 充电器的电压最大值

#define V_CHARGER_MIN 4400 // 4.4 充电器的电压最小值

#define V_CHARGER_ENABLE 0 //1:ON , 0:OFF //充电电压保护使能

1.3 配置电池温度检测相关参数

@ cust_battery_temperature_table.h

1.3.1 热敏电阻

目前热敏电阻有两种规格:10K和47K;由电池工程师提供参数。

#define BAT_NTC_10 1

#define BAT_NTC_47 0

1.3.2 在配置热敏电阻参数的同时,也要根据原理图,配置温度检测上拉电阻以及参考电压

#define RBAT_PULL_UP_R 16000 // Unit: Ohm,对应原理图中的R311

#define RBAT_PULL_UP_VOLT 2800 // Unit: micro voltage,对应原理图中的VBATREF

BattVoltToTemp函数就是任何将ADC读出的电压值转换为温度值,该函数其实就是做了两个运算,运算的原理如下图所示。

Figure 1-2 MTK平台NTC温度值计算

1.4 配置充电电流

@ cust_charging.h

1.5 配置电流检测电阻

@ cust_battery_meter.h or @ cust_charging.h

#define CUST_R_SENSE 56 // Unit: micro Ohm, 56 mOhm

该电阻的两端是BATSNS & ISENSE。

Figure 1-3 充电电流检测电阻

1.6 Dead Battery Voltage

@ cust_charging.h

#define V_0PERCENT_TRACKING 3410 /* 3410mV */

1.7 各温度下最大放电容量,内阻-电压表,放电深度-电压表

电池充放电参数由电池工程师向电池厂家索取。目前MTK支持-10°、0°、25°、50°。

1.7.1 各温度下最大放电容量 (Unit: mA)

@ cust_battery_meter.h

Q表示各温度下最大的放电容量

#define Q_MAX_POS_50 1750 //Cmax, 50°最大放电容量1750 mA

#define Q_MAX_POS_25 1763 // 25°

#define Q_MAX_POS_0 1756 // 0°

#define Q_MAX_NEG_10 1726 // -10°

High Voltage:

#define Q_MAX_POS_50_H_CURRENT 1737 //Cmax_400mA, 50°最大放电容量1337 mA

#define Q_MAX_POS_25_H_CURRENT 1717 // 25°

#define Q_MAX_POS_0_H_CURRENT 1214 // 0°

#define Q_MAX_NEG_10_H_CURRENT 966 // -10°

1.7.2 各温度下的内阻-电压表和放电深度-电压表

@ cust_battery_meter_table.h

Figure 1-4 ZCV curve measured SOP

Figure 1-5 Battery Voltage Measure

CAR:库仑计

Cmax/Qmax:电池容量

DOD:Depth of Discharging,放电深度百分比;每次开机后初始的DOD,通过OCV方式算出来或者使用RTC保存的值

mAh:放电容量

OCV:Open Circuit Voltage,开路电压

R (battery):电池内阻,(V2-V1)/400mA

SOP:Standard Operation Procedure

VC (=VBAT):Voltage of Closed Circuit,闭路电压,Charge ADC采样的到电压就是闭路电压

ZCV:Zero Current Voltage,零电流-电压,一般指ZCV的2个表格(开路电压-放电深度百分比,开路电压-电池内阻)

在ZCV曲线里面,还有一栏是电池内阻R (battery),在cust_battery_meter_table.h里面就是r_profile_tX[51],那这个有什么用呢?

公式:oam_v_ocv_1 (OCV) = vol_bat (VC) + 补偿电压(IR)。

在手机端读取的电池电压是vol_bat (VC),实际电池电压是oam_v_ocv_1 (OCV),两者之间由于电池特性或者充电线会有一些差异,这时候就会需要一个补偿电压来让手机端显示百分比更准确,这就是R (battery) 的作用。

Figure 1-6 MTK OCV和SOC计算原理

线性插值方法具体原理如下图。

Figure 1-7 Linear Interpolation Method

从电池供应商表格中提取 R-OCV 对应温度的r_profile_tX[51]数组

从电池供应商表格中提取DOD-OCV到对应温度的battery_profile_tX[51]数组中

注意数组的元素个数都要一致。

系统开机后,会利用预先测得的分布在-10、0、25、50摄氏度下的 ZCV 表,结合真实温度,动态重构一张当前温度下的ZCV 表格,重写TEMPERATURE对应预留的空ZCV数组battery_profile_temperature[51]

假如产品的电压范围设置在4.2V - 3.4V,并且该电压范围对应的容量大小是2000mA,则每个百分点就是20mA。

1.8 充电算法

@ cust_battery_meter.h

考虑接触点电阻,电池接触点处一般会有20~40 mOhm的电阻,这个阻值在大电流 (1.5-2A) 充电的时候,会对充电算法有一定的影响。所以在调试的时候要考虑这个电阻的存在,尤其是大电流充电的时候。在函数mtk_imp_tracking中计算开路电压 (OCV)的时候,可以通过宏定义FG_METER_RESISTANCE的调整去补充这个接触点电阻。

2 Documents

《Battery_Charging_Introduction_for_Customer_V1.0.pdf》

《Battery_Customer Document_MT65xx.pdf》

《Fuel_Gauge_introduce.pdf》

《Fuel_Gauge_Application_Notes_V1.0.pdf》

《Fuel_Gauge_Battery_ZCV_Table_Test_SOP_V1.0_20120716.pdf》

3 DOD-OCV的百分数excel计算法

3.1 excel

  1. 点击B1 然后在上面的编辑栏输入 (A1/100)
  1. 右键"设置单元格格式(F)..."
  1. 剩下的其他单元格只要把鼠标拖到B1的右下角有个 +号此时点击鼠标左键下拉就行了

  2. 折线图的生成

从excel选中2列数据,点击"插入"->"插入折线图",excel会生成直观折线图。

3.2 word

4 Abbreviations

GM 3.0:MTK Gauge Master