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:
@@ -29,6 +29,8 @@ DLD154V4 线圈振荡两级频率(33/66nF 拨码,拨码不引 IO)。现场
|
||||
- ENV_RESYNC_WAIT 6000→1000(5s 预判 → 10s 学习 → ~16s 替换 → 空闲 5s 确认灭,总 ~21s)
|
||||
- TaskLoop.h:COIL_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,
|
||||
|
||||
Reference in New Issue
Block a user