- ntc.{h,c}(宿主机可测):分压端 mV → Ω → NCP18XH103F03RB 的 R-T 表插值;
开路 / 短路 / 表外一律「读不到」(t_thermal 因此满速)
- thermal_esp.{h,c}(仅 IDF):ADC1 oneshot + 曲线校准读两路 NTC;两个 PCNT 单元数 TACH 边沿
- app_main:task_thermal 任务体、t_thermal_init 放在上电恢复之前、status 带热管理快照
- test_ntc.c 4 例;全工程 429 例全绿;版本 0.1.0-a16
- 板 B:两路 NTC 38.2 / 34.0 °C;风扇两路 rpm 0 报停转(拉满电流不涨,疑未插风扇,待确认)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
34 行
2.9 KiB
Markdown
34 行
2.9 KiB
Markdown
# 交接
|
||
更新:2026-09-27 完成 **A16**(风扇闭环接进任务体 + NTC / TACH 的真实采样)。**A1~A16 全部完成 ⇒ M1 的固件部分齐了**
|
||
|
||
## 一句话现状
|
||
`t_thermal` 的判据在 R-6 就写好测过了;A16 补的是它两个回调的真实来源(NTC 走 ADC1、TACH 走 PCNT)和任务体。
|
||
**25 个 ctest、429 个用例全绿**,`idf.py build` 通过(**0xE9920,分区只剩 9%**)。板 B(COM5)已烧 **0.1.0-a16**。
|
||
|
||
## 下一步
|
||
- ⚠️ **风扇待你确认**:板 B 上两路都报 `rpm 0` + 停转;拉到 100 % 时输入电流**没有上升**(130 → 110 mA,属波动)
|
||
⇒ 多半是**风扇没插 / 没转**,而不是 TACH 没数到。插上风扇后看 `status.fan.rpm`;若在转却仍是 0,查 Q9/Q10 与 PCNT。
|
||
- 风扇闭环四个阈值 + 占空比下限 + PPR 都是「待上板实测」(t_thermal.h),手机上架跑满载之后再定。
|
||
- **分区只剩 9%**:C2(OTA 双分区)前必须重排分区表(模组 16 MB,sdkconfig 只按 8 MB 用)。
|
||
- 仍欠(A15 留下的):I²C 总线挂死恢复(HAL 层);PD 上限的降载动作(§8.3);CH224A 读到 100 W 与早上记的 20V/3A 不一致,待核。
|
||
|
||
## 本次新增/修改的文件
|
||
- `main/ntc.{h,c}` **新**(宿主机可测)— mV → Ω → 查 Murata NCP18XH103F03RB 的 R-T 表(−40~125 °C、5 °C 一格、格内线性插值);
|
||
贴 +3V3 / 贴地 / 表外一律「读不到」(⇒ t_thermal 满速)
|
||
- `main/thermal_esp.{h,c}` **新**(只进 IDF)— ADC1 oneshot + 曲线拟合校准(8 次平均,引脚反查通道);两个 PCNT 单元数 TACH 上升沿(累计计数、1 µs 毛刺滤波)
|
||
- `main/app_main.c` — `task_thermal` 任务体(每 10 s 打一行温度 / mV / 占空比 / 转速);`thermal_esp_init()` + `t_thermal_init()` 放在**上电恢复之前**;`cmd_env.thermal = &s_therm`
|
||
- `main/CMakeLists.txt` REQUIRES 加 `esp_adc esp_driver_pcnt`;`host/CMakeLists.txt` 加 `ntc.c`
|
||
- `test/test_ntc.c` **新**(4 例:表点、⭐方向「越热电压越低」、⭐开路/短路不是温度、比例式);版本 `0.1.0-a16`
|
||
|
||
## 上板实测(板 B,五槽空,风扇状态未知)
|
||
```
|
||
status: "temp":[38249,34027] 分压端 1266 / 1384 mV ← 两路 NTC 读数合理(NTC1 在电感区更热)
|
||
"fan":{"duty":300,"en":true,"rpm":[0,0],"stall":[true,true]}
|
||
events: [31, 14318, 0, 11(FAN_STALL), 0] [32, …, 11, 1] ← 启动宽限 5 s + 一个窗口之后各报一次,不刷屏
|
||
```
|
||
|
||
## 踩到的坑(只写会再犯的)
|
||
- 比例式 NTC 的电源误差估算:+3V3 偏 1 % 在 25 °C 附近是 **~0.6 °C**(中点处电阻误差是电源误差的 2 倍、NTC 每度 ~4 %),不是 0.3 °C。
|
||
- PowerShell 5.1 的 `Set-Content -Encoding utf8` 会写 BOM —— 改 `phonerail.h` 这种文件用 sed,别用它。
|
||
- `python` 在 Git Bash 里是 Windows Store 占位程序,会挂住;一律用 `/c/Python314/python`。
|