feat(V4B): V4.26 调试打印 — DBG 周期行加 L 粗估(coil_l_uH, Xn精确) + coil_fault EVT 同步

DBG|t=2000ms f=16kHz L=1445uH Xn=3681 LPCNT=35 ...
- L_uH = Xn^2/(142×C), 默认低频档 C=66nF; 拨码 33nF 档结果×2
- 例: Xn=3681(f=16.3k)→1445uH; Xn=685(87.6k)→50uH; Xn=485(123.9k)→36uH? 边界自测
This commit is contained in:
wangfq
2026-09-03 11:31:03 +08:00
parent 92f675e2d3
commit dd14e083fa
2 changed files with 16 additions and 3 deletions
+2
View File
@@ -29,6 +29,8 @@ DLD154V4 线圈振荡两级频率(33/66nF 拨码,拨码不引 IO)。现场
- ENV_RESYNC_WAIT 6000→10005s 预判 → 10s 学习 → ~16s 替换 → 空闲 5s 确认灭,总 ~21s)
- TaskLoop.hCOIL_F_OK_MIN_KHZ=20 / COIL_F_OK_MAX_KHZ=120 / COIL_DEF_C_NF=66
- 行尾修复:V4.24~25 编辑期间源文件行尾被写成多 CR(\r\r\r\r\n),本次统一规范化回标准 CRLF
- DBG 周期打印(2s)增加 **L 粗估字段**coil_l_uH(): Xn 精确反推,默认 66nF 档;拨 33nF 档结果 ×2):
`DBG|t=2000ms f=16kHz L=1445uH Xn=3681 ...`EVT|coil_fault 同步改用 Xn 算法(精度优于 f 整数反推)
### 验证
@@ -800,6 +800,16 @@ static void env_resync_apply(uint32_t new_origin)
#endif
env_resync_abort();
}
/*===========================================================================
* V4.26: 线圈电感量粗估 (默认低频档 C=66nF; 拨码 33nF 档结果 ×2)
* f = 60MHz/Xn → L_uH = Xn^2 / (4π^2 × 60MHz^2×1e-9... 化简为 Xn^2/(142×C_nF)
* 例: Xn=3681(f=16.3k) → L≈1445µH; Xn=685(f=87.6k) → L≈50µH
*===========================================================================*/
static uint32_t coil_l_uH(uint32_t xn)
{
return (uint32_t)(((uint64_t)xn * xn) / ((uint64_t)COIL_DEF_C_NF * 142u));
}
/*===========================================================================
* V4.26: 线圈电感量合理范围监视
* 拍板规格: 默认低频档口径, 空场频率合理窗 20~120kHz, 出界即判定电感量不合理
@@ -827,8 +837,8 @@ static void coil_monitor(void)
g_coil_bad_cnt++;
if (g_coil_bad_cnt >= 100) {
if (g_coil_fault == 0)
PRINT("EVT|coil_fault f:%d kHz L~%lu uH(C66/×2C33) %s\n",
f_khz, 25330000UL / (uint32_t)(f_khz * f_khz * COIL_DEF_C_NF),
PRINT("EVT|coil_fault f:%d kHz L~%lu uH(C66/×2C33) Xn:%d %s\n",
f_khz, coil_l_uH(loop1_Xn), loop1_Xn,
want == 1 ? "too_large" : "too_small");
else
PRINT("EVT|coil_ok f:%d kHz\n", f_khz);
@@ -1296,10 +1306,11 @@ void loop_task_function(void *pvParameters)
if (_dbg_cnt >= 200) { // 200 × 10ms = 2s
uint32_t _t_ms = _dbg_cnt * 10; // V4.20: 先取时间再归零
_dbg_cnt = 0;
PRINT("DBG|t=%ums f=%dkHz Xn=%d LPCNT=%d Value=%d CAPVD=%d slow=%d "
PRINT("DBG|t=%ums f=%dkHz L=%luuH Xn=%d LPCNT=%d Value=%d CAPVD=%d slow=%d "
"Origin=%d dlt=%d SENS=%d VD=%d FRZ=%d/%d LIM=%d LOOP=%d STBL=%d\n",
_t_ms,
calc_freq_khz(loop1_CAPVD, loop1_LPCNT),
coil_l_uH(loop1_Xn),
loop1_Xn, loop1_LPCNT, loop1_Value, loop1_CAPVD, loop1_CAPVD_slow,
loop1_Origin, loop1_dlt_ORG, loop1_SensLevel, loop1_VD_FLAG,
loop1_freeze_cnt, loop1_freeze_ref, g_slope_limit_cnt,