Files
DLD154Pro/docs/devlog.md
T

5.7 KiB
Raw Blame History

DLD154Pro 开发日志

MCU: CH591R (RISC-V, BLE) @60MHz | 线圈通道: 1路 | 调试口: RS485 / BLE


2026-07-21 — 灵敏度等级与 ΔL/L 的物理关系分析

参数表

// sens_in: 进入阈值, sens_out: 离开阈值 (0=低, 2=高)
SensTable  = { 108, 54, 28 };   // 进入
SensTable1 = {  81, 32, 16 };   // 离开

计算链路

Step 1:阈值差值

loop1_dlt_ORG = (Origin * sens) >> 16;   // = Origin × sens / 65536

Step 2:进入判定

if (CAPVD < Origin - dlt_ORG)      // ← ΔCAPVD / Origin > sens / 65536

Step 3CAPVD → 电感

线圈振荡频率 f ∝ 1/√L,周期 T ∝ √L。测量窗 CAPVD 正比于平均周期:

ΔCAPVD / Origin  =  ΔT / T₀  =  (√L - √L₀) / √L₀

对微小变化泰勒展开:dT/T ≈ dL/(2L),即:

ΔL / L  ≈  2 × ΔCAPVD / Origin

Step 4:最终 ΔL/L 公式

ΔL/L_entry = 2 × sens_in / 65536
ΔL/L_exit  = 2 × sens_out / 65536

灵敏度等级对应 ΔL/L

等级 sens_in ΔL/L 进入 sens_out ΔL/L 离开 迟滞比
低 (0) 108 0.330% 81 0.247% 1.33
中 (1) 54 0.165% 32 0.098% 1.69
高 (2) 28 0.085% 16 0.049% 1.75

物理验证

典型 100μH 线圈:

  • 现代轿车经过:ΔL/L ≈ 5%–15%,任一灵敏度均能可靠触发
  • 高灵敏度 0.085%:足够敏感,需注意温漂(~20°C 引起约 0.1% 的感量偏移)和邻道串扰
  • 迟滞比 1.33–1.75:防止车辆边界状态反复跳变,低灵敏度迟滞最小

快速换算

sens 值直接对应 千分之 2×sens 的感量变化百分比——除以 1000 就是 ΔL/L(%)。


2026-07-21 (午后) — 修复灵敏度 bug + 有限存在时间 + 版本号

BLE 灵敏度无法修改

根因: 硬件适配时删了 poll_sens_key(),在 INIT_VD() 中硬编码了 g_freq_sens = 2 但未在 BLE 参数解包 unpack_pkg_set_cjq_param() 中同步更新,导致小程序修改灵敏度无效。

修复:

  • peripheral_main.c: g_freq_sensINIT_VD() 移到 para_store_init() 从存储的 g_loop_cng_unit.sensitvity 读取:(sensitvity > 0) ? (sensitvity - 1) : 0
  • dbn_ble_srv.c: unpack_pkg_set_cjq_param() 中同样增加 g_freq_sens 同步更新, 确保 BLE 小程序实时修改后立即生效

有限存在时间公式对齐

dbn_ble_srv.cg_hold_time 计算写的是 exist_mode * 30 * 20para_store_init() 中用的是 exist_mode * 20 * 550ms tick)。 统一为 20 * 5(对应参数值 × 100ms × 5s 基础周期)。

版本号

  • 固件: 4.013.00
  • 硬件: 1.003.01

2026-07-21 — 项目初始化:从 DLD110SV4 复制基线 + 按硬件资源文档调整 IO

背景

DLD154Pro 是 DLD110SV4 的硬件升级版(同 MCU CH591R),核心变更:

  • 继电器 双路→单路(删 RLY2
  • 删除拨码开关(灵敏度改由小程序设置)
  • 线圈调频 两级→一级(删 PA13 FLEVEL_L
  • 新增 RS485 接口(PA14/PA15/PA13,协议待定)
  • 新增光耦输入(PB10,逻辑待定)
  • 指示灯从单色→双色(LEDA 绿 + LEDB 红呼吸灯)
  • DEBUG UART0 被 RS485 占用,删除全部

仓库

IO 宏重定义

引脚 旧(DLD110SV4) 新(DLD154Pro)
PA8 RLY1 (存在) RLY1 (存在,不变)
PB23 RLY2 (功能/脉冲) LEDB (红色呼吸灯)
PA12 FLEVEL_H (33nF) FLEVEL (33nF,一级)
PA13 FLEVEL_L (10nF) UART0_RE (RS485 方向)
PA14 KEY_SA1 / DEBUG_TX UART0_TX (RS485)
PA15 KEY_SA2 / DEBUG_RX UART0_RX (RS485)
PB10 - IN_1 (光耦输入)
PB22 LEDA (绿色) LEDA (绿色,不变)

删除项

  • RLY2_ON/OFF 宏及全部 RLY2 输出逻辑
  • KEY_SA1/KEY_SA2 宏及 poll_sens_key() 函数
  • FLEVEL_L_LOW/HIGH, FLEVEL_H_LOW/HIGH → 改为 FLEVEL_LOW/HIGH
  • g_flag_output, g_xn_counter 全局变量
  • DEBUG UART0 初始化 (gpio_uart_init#ifdef DEBUG 块)
  • Main_Circulation#ifdef DEBUG PRINT 块
  • TMR1_ISR 中 _cnt / g_flag_output DEBUG 定时器
  • TMR0_ISR 中 g_xn_counter DEBUG 计数器
  • para_store_init() 中频率四档 switch → 双档 if/else

新增/预留

  • RS485 引脚宏: RS485_TX_PIN, RS485_RX_PIN, RS485_RE_PIN, RS485_RE_TX(), RS485_RE_RX()(仅初始化引脚,协议待定)
  • 光耦输入宏: OPT_IN1(仅初始化 PB10 输入上拉,逻辑待定)
  • LEDB 宏: LEDB_ON/OFFPB23,低电平有效)
  • g_freq_sens = 2 默认最高灵敏度(取代 poll_sens_key 拨码逻辑)

继电器输出简化

模式 旧 (双继电器) 新 (单继电器)
case 0: 存在输出 RLY1 跟随 VD, RLY2 跟随 VD RLY1 跟随 VD
case 1: 进入脉冲 RLY2=存在, RLY1=进入脉冲 RLY1=进入脉冲
case 2: 离开脉冲 RLY2=存在, RLY1=离开脉冲 RLY1=离开脉冲
default RLY2=存在 RLY1=存在

保留(协议兼容)

  • storage.hLoop_ACS_Info.relay2_cng/relay2_state 字段保留,默认值=0
  • dbn_ble_srv.c:468 上报字节 relay2 位自动为 0(字段初始化为 0 后无写入)

待办

  • RS485 通信协议定义 + UART0 中断/收发实现
  • 光耦输入逻辑(与其他检测器联动 / 综合判断)
  • IAP/OTA 项目文件中的 DLD110S 引用更新(592OnlyUpdateApp_*
  • .mrs/ 工作区文件清理(大量 DLD110S 历史快照)