MTK Charge How-to

EPT GPIO初始化文件 @bsp_gpio_ept_config.c

主要内容来源于网络。
http://www.cnblogs.com/reality-soul/articles/4786989.html

1 How-to
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 ((Zero Current) Voltage,零电流-电压) curve measured SOP (Standard Operation Procedure)



Figure 1-5 Battery Voltage Measure


OCV:Open Circuit Voltage,开路电压
VC (=VBAT):Voltage of Closed Circuit,闭路电压,Charge ADC采样的到电压就是闭路电压
mAh:放电容量
DOD:Depth of Discharging,放电深度百分比
R (battery):电池内阻,(V2-V1)/400mA
CAR:库仑计
Cmax/Qmax:电池容量
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所示。
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 充电算法
1.8.1 考虑接触点电阻
@ 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)
Figure 3-1


2) 右键“设置单元格格式(F)...”
Figure 3-2


3) 剩下的其他单元格只要把鼠标拖到B1的右下角有个 +号此时点击鼠标左键下拉就行了
4)折线图的生成
从excel选中2列数据,点击“插入”->“插入折线图”,excel会生成直观折线图。
Figure 3-3

3.2 word



猜你喜欢

转载自blog.csdn.net/zoosenpin/article/details/77998438
MTK