DC fan speed control
DC fan speed control 表示项目明确采用两线 DC 风扇的模拟调压控制模式,而不是直接把 PWM chopping 当默认方案。典型实现是 PWM -> RC 滤波 -> 注入可调 LDO 反馈网络,再配合独立 EN 和可选 tach 反馈,把“风扇供电轨”作为一个可调模拟系统来维护。 这个 Topic 的重点是控制策略和电路语义,而不是“有风扇”这么宽。
- 硬件
目录
Definition
DC fan speed control 表示项目明确采用两线 DC 风扇的模拟调压控制模式,而不是直接把 PWM chopping 当默认方案。典型实现是 PWM -> RC 滤波 -> 注入可调 LDO 反馈网络,再配合独立 EN 和可选 tach 反馈,把“风扇供电轨”作为一个可调模拟系统来维护。
这个 Topic 的重点是控制策略和电路语义,而不是“有风扇”这么宽。它通常会和 Async embedded、Embedded Rust、Device mono-repo 一起出现,但不替代这些 Topic:DC fan speed control 解释的是控制回路、响应/纹波权衡和温控接口,其他 Topic 才解释固件运行时或整机结构(projects/isolarail.md、projects/ups120.md)。
When to use
当 checked-in docs、project snapshot 或电路/固件说明明确写出通过 PWM 滤波、LDO feedback 注入、独立 FAN_EN、tach 反馈或温控 setpoint 来控制两线风扇时使用。若只是三线/四线风扇直连 PWM 或通用 GPIO 控制,不应直接命中。
如果一个改动会影响 RC 常数、注入电阻、输出电压范围、FAN_EN 语义、tach 采样、温控 setpoint、响应时间或纹波折中,就应该命中本 Topic。若问题只是一般 MCU PWM 外设配置、而无风扇电路语义,则应回到更基础的固件 Topic。
Habits / defaults
- Use
PWM -> 2-stage RC -> FB injectas the baseline control path, with explicitR_UPPER/R_LOWER/R_INJvalues documented and derivable output range targets (commonly around 2 V to 5 V). Evidence:isolarail:docs/pwm_fan_control_circuit_design.md,ups120:firmware/ups-main/docs/fan_control_spec.md - Keep an independent
FAN_EN(LDOEN) line for deterministic off-state behavior and cleaner startup sequencing than duty-only shutdown. Evidence:isolarail:docs/pwm_fan_control_circuit_design.md,isolarail:docs/hardware_connection_overview.md,ups120:firmware/ups-main/docs/fan_control_spec.md - Run PWM above audible range (20 kHz+; often 25 kHz) and treat RC constants as a design variable linked to response time and ripple suppression. Evidence:
isolarail:docs/pwm_fan_control_circuit_design.md,ups120:firmware/ups-main/docs/fan_control_spec.md - Treat thermal/diagnostic integration as part of the pattern: temperature-based setpoint logic and optional tach/PCNT feedback hooks are documented alongside the analog path. Evidence:
isolarail:docs/pwm_fan_control_circuit_design.md,isolarail:src/fan.rs,ups120:firmware/ups-main/docs/fan_control_spec.md - 默认把风扇控制当电源路径问题,而不是单纯 PWM 参数问题。电阻比、目标电压范围、off-state 和纹波都要留在文档里,后续才能解释为什么某个 duty 对应某个风扇行为。
- 热控逻辑和诊断接口是主题的一部分。温度阈值、tach/PCNT、风扇堵转或启动失败策略,不应被视为“以后再补”的外围逻辑。
- 回答此 Topic 时,应写清它为何选择模拟调压而不是直切 PWM:通常是为了两线风扇、低噪声或更可控的供电轨。若这一理由没写,Topic 价值会迅速消失。
Reference implementations
projects/isolarail.md:适合说明 ESP32 固件、风扇控制电路和硬件文档怎样一起表达这个模式。projects/ups120.md:适合说明风扇控制如何与温控、诊断和设备主固件一起演化。
Failure modes
- 只因为“有风扇”就打这个 Topic,会把普通 PWM 控制和模拟调压控制混为一谈。
- 把
DC fan speed control当成整个仓库的总括标签,忽略Async embedded、Embedded Rust、Device mono-repo等相邻 Topic,会让后续 Agent 无法判断真正该看的是电路控制、固件任务还是设备上下文。 - 不写
FAN_EN、RC 常数或输出范围,会让后续维护者根本无法推断为什么风扇启停、噪声或转速表现异常。 - 只改固件 setpoint 不回看模拟路径和 tach 反馈,也会把最容易出故障的联动面遗漏掉。
Evidence index
projects/isolarail.mdprojects/ups120.mdskills/style-playbook/references/data/topics/dc-fan-speed-control.json
相关内容
IsolaRail
项目实践IsolaRail 是当前 V3 四口 USB hub 的 owner-facing control plane 仓库。README.md 把它定义为 ESP32-S3 + CH335F + M24C64@0x50 + EN1..
ups120
项目实践Rust embedded firmware + libraries for an “UPS120” device, with supporting docs, scripts, and structured submodules for chip drivers/components. Evidence: README.md, firmware/, libs/, rust-toolchain.toml.