7.8 KiB
7.8 KiB
1 数据获取
1.1 手动抓数据
1.1.1 Qfod
1.1.1.1 日志 Format
X#:Q A->B C D E
1.1.1.2 数据结构
| 字段标识 | 字段名称 | 数据类型 | 取值范围 | 说明 |
|---|---|---|---|---|
| X | Charger Index | uint8 |
0, 1 | 充电器索引,标识使用哪个充电器 |
| Q | Q Factor Flag | uint8 |
- | Q 值标记/标志位 |
| A | Coil Index | uint8 |
0, 1, 2 | 线圈索引,标识检测的线圈编号 |
| B | ΔQ (Delta Q) | int16 |
- | Q 值变化量/差值,反映 Q 值的相对变化 |
| C | Current Q Factor | float |
- | 当前实时 Q 值 |
| D | Raw Q Factor | float |
- | 原始 Q 值(未经处理的测量值) |
| ==E== | ==FOD Type== | ==uint8== |
==见表 2== | ==异物类型编码,对应 Table 2 中的异物分类== |
1.1.1.3 字段关系说明
X + A组合唯一标识一个检测通道(充电器 + 线圈)B = C - D(变化量 = 当前值 - 原始值)
1.1.2 Ploss fod
基于功率损耗的异物检测(Power Loss FOD)
1.1.2.1 日志 Format
FOD-> (1) X X X (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)
示例:
FOD-> 4 2 1 127 10690 12013 35377 9904 1213 -2882 750 0 0 1 500 1
说明:括号数字表示有效字段编号,X 表示忽略该位置数据
前置参数(库内计算):
pow_loss= 2005(发射端基础损耗值)delta_p= 2200(功率损耗补偿系数,调试关键变量)
1.1.2.2 数据结构
| 编号 | 字段名称 | 数据类型 | 示例值 | 说明 |
|---|---|---|---|---|
| (1) | Rx Type | uint8 |
4 | 接收端类型标识 |
| (2) | Rx Power | uint16 |
10690 | 接收端实际获得功率,能量去向 |
| (3) | Tx Power | uint16 |
12013 | 发射端输出总功率,能量来源 |
| (4) | Vcoil | uint16 |
35377 | 发射线圈电压,用于计算理论损耗 |
| (5) | Vin | uint16 |
9904 | 输入电压,系统状态监控 |
| (6) | Isns | uint16 |
1213 | 输入电流采样值,系统状态监控 |
| (7) | Ploss | int32 |
-2882 | 核心判定值,计算损耗:Tx-(Rx+base_loss+delta_p) |
| (8) | Threshold | int32 |
750 | 安全红线,允许的最大损耗限值 |
| (9) | Trigger Count | uint16 |
0 | 触发计数器,持续超阈值会累积 |
| (10) | FOD Result | uint16 |
0 | 当前判定结果状态 |
| (11) | Charging Protocol Type | uint8 |
1 | 充电协议类型 |
| (12) | PWM Duty | uint8 |
500 | PWM 控制占空比 |
| (13) | Charging coil index | uint8 |
1 | 充电线圈索引 |
1.1.2.3 核心判定逻辑
能量守恒定律:
发射功率 = 接收功率 + 系统损耗 + 异物损耗
公式一:发射功率计算
(3) = (5) × (6)
即:Tx Power = Vin × Isns(通过芯片实际工作的电压和电流相乘得到动态值)
公式二:额外损耗计算
(7) = (3) - ((2) + pow_loss + delta_p)
即:Ploss = Tx Power - (Rx Power + pow_loss + delta_p)
含义:用"发射端总功率"减去"接收端功率"、"已知系统损耗"和"补偿系数",剩下的数值 (7) 就是无法解释的能量损耗。如果这个值很大,说明有金属异物在发热消耗能量。
1.1.2.4 变量定义详解
| 变量 | 名称 | 说明 |
|---|---|---|
| (7) | Calculated Loss | 实时计算出的功率差值,需要重点监控的变量 |
| (8) | Threshold | Power loss 阈值,Qi 协议规定(参考 Table 4),随功率段动态变化(功率越大,允许的损耗越大) |
| (2) | Rx Power | 接收端(手机/手表)上报给发射端的功率值 |
| pow_loss | Tx 固有损耗 | 发射板的固有损耗,库内计算得出,无需修改 |
| delta_p | 功率补偿系数 | 工程师唯一需要调整的"旋钮" |
判定条件:
- 当 (7) Ploss > (8) Threshold 时,计数器 (9) 增加
- 当计数超过设定阈值,触发 FOD 报警并停止充电
调试目标:
- 正常充电时,需满足:(7) Ploss < (8) Threshold
- 如正常充电时误报 FOD,需增大
delta_p补偿系数 - 修改代码数组
m_con_arr_I16PlossCoeff中的delta_p值进行校准
2 数据分析方法
2.1 QFOD 数据分析
2.1.1 阈值计算
- 从 Log 提取两种场景的 ΔQ:
- 场景 A(纯手机):ΔQ = 25(最大值)
- 场景 B(手机+异物):ΔQ = 40 (最小值)
- 计算阈值:Threshold = (25 + 40) / 2 = 32
2.1.2 分析步骤
- 提取日志中
#Q开头的行 - 绘制 ΔQ 时序曲线,叠加 Y=Threshold 水平线
- 验证余量:纯手机最高点 vs 阈值、有异物最低点 vs 阈值
2.2 Ploss FOD 数据分析
2.2.1 日志解析要点
日志行识别: 以 FOD-> 开头的行
关键字段提取(按位置索引):
| 位置 | 字段 | 示例值 | 用途 |
|---|---|---|---|
| 第 6 列 | Calculated Loss (Ploss) | -634 | 核心监控值,负数表示安全 |
| 第 7 列 | Threshold | 1000 | 当前功率段的阈值 |
| 第 2 列 | Rx Power | 10690 | 用于查表确定阈值 |
| 第 3 列 | Tx Power | 12013 | 用于验证计算 |
2.2.2 动态阈值表 (Table 4)
阈值根据接收功率动态查表:
| 接收功率 (Rx Power) | 阈值 (Threshold) | 备注 |
|---|---|---|
| 0 ~ 5W | 350 mW | 低功率下最敏感 |
| 5 ~ 10W | 500 mW | |
| 10 ~ 15W | 750 mW | |
| 15 ~ 30W | 1000 mW | 示例 Log 处于此区间 |
| 30 ~ 50W | 1250 mW | 高功率允许更多损耗 |
注意:数据分析时必须先读取 Rx Power,查表获得正确阈值,再与计算值对比。
2.2.3 计算公式验证
能量守恒公式:
Ploss = Tx_Power - Rx_Power - System_Loss - delta_p
等价表达:
delta_p + Ploss = Tx_Power - Rx_Power - System_Loss
验证示例:
- Tx Power = 12013
- Rx Power = 10690
- System Loss (pow_loss) = 2005
- delta_p = 2200
- 计算:12013 - 10690 - 2005 - 2200 = -2882 ✓
2.2.4 判定逻辑
FOD 触发条件:
if (Ploss > Threshold) → 计数器累积
if (Count > Limit) → 触发 FOD 报警,停止充电
安全余量监控:
Margin = Threshold - Ploss
示例:1000 - (-634) = 1634 mW 余量充足
2.2.5 分析流程
- 解析 (Parse):读取 Log 文件,找到
FOD->开头的行 - 提取 (Extract):
- 抓取第 6 列(计算损耗,如 -634)
- 抓取第 7 列(当前阈值,如 1000)
- 抓取 Rx Power 用于查表校验
- 计算 (Calculate):
- 验证公式:
Loss = Tx_Power - Rx_Power - System_Loss - delta_p - 计算余量:
Margin = Threshold - Loss
- 验证公式:
- 可视化 (Visualize):
- 画横线代表阈值 (Threshold)
- 画波动线代表实时损耗 (Ploss)
- 若波动线突破阈值线,标记为 FOD Event
- 调试 (Tune):
- 若 Ploss 频繁跳动或变正数(如 800),说明 delta_p 设置不准
- 调整 delta_p 使曲线回归安全区(负值区)