传感器信号滤波(Sensor Signal Filtering)
从传感器输出到上报值设计整条信号链。保持原始采样、滤波值、时序、饱和与故障标志可观测;滤波器不得掩盖损坏的传感器或不安全的电压。
接入门槛(Intake gate)
在选择元件或算法之前,记录或标注未知项:
- 具体板卡、MCU、核心/框架、ADC 通道、分辨率、参考电压、输入范围、采集时间,以及工具链版本
- 传感器零件/模块、输出类型与驱动阻抗、供电、线缆长度、期望信号带宽、有效范围、预热,以及故障行为
- 采样周期/抖动预算、可接受延迟、阶跃响应要求、阈值策略、校准模型,以及可用的测量工具
在给出板卡相关 ADC 建议前,先用 board-support 解析板卡。对于物理或多会话工作,先加载 embedded-project-loop 并保持其测量门开启。
工作流程
- 在滤波前以明确、可重复的速率捕获原始采样。将传感器动态与尖峰、混叠、量化、ADC 建立时间、电源/地噪声、EMI 和校准误差区分开。
- 根据信号带宽和延迟预算设定采样率。检查奈奎斯特与混叠衰减;不要用软件滤波器恢复已被混叠进入频带的信息。
- 选择一种带显式窗口/alpha/模型的滤波器,并计算其启动行为、延迟、内存、CPU 成本以及对阈值的影响。常见起点:有界窗口用移动平均,孤立尖峰用中值,低成本平滑用 EMA/IIR;基于模型的滤波器需要明确的模型与噪声假设。
- 检查模拟路径:传感器负载、RC 截止频率、ADC 采集/建立、参考与地、线缆/噪声耦合、输入保护、电压限制、去耦,以及电机/射频电流回流路径。
- 实现原始加滤波的遥测,以及故障/饱和指示。在目标编译前先在主机上验证确定性向量。
- 每次硬件迭代只改变一个因果变量。用固件相同的配置测量 ADC 引脚和电源/地。
按需加载
- 阅读
references/filter-selection.md了解采样数学、算法权衡、校准顺序和延迟选择。 - 阅读
references/analog-front-end.md了解 RC/输入网络、ADC 驱动/建立、接线、保护和测量。 - 阅读
references/verification-and-tdd.md了解主机、仿真、构建、目标和系统各级门。 - 使用仅用于诊断的
examples/adc-filter-pipeline.ino作为与板卡无关的固定速率 EMA 起点;在把计数值转换为电压前,先填入板卡相关的 ADC 假设。可复用的生成式滤波模式仍归arduino-code-generator所有。 - 用
python3 scripts/filter_benchmark.py --help或捕获的向量运行确定性辅助工具。它是设计/TDD 辅助,不能替代目标时序或电气测量。
已有的 arduino-code-generator 滤波模式 拥有可复用代码片段。本技能负责信号链诊断、滤波器选择、硬件交互与证据边界。故障隔离使用 circuit-debugger,逻辑与电源轨限制使用 wiring-safety-check,只有在检测与信号完整性确立后才使用 sensor-calibration-workbench。
输出契约
使用 共享 Arduino 技能契约:说明假设、所需工具与版本、实现步骤、测试/证据、已知限制,以及恢复/安全说明。
- 构建证明: 主机测试与精确板卡编译(如已运行)。
- 烧录证明: 指定端口/镜像的烧录器结果(如已运行)。
- 硬件证明: 实测的 ADC 引脚、电源轨/地、波形或接线结果。
- 系统证明: 真实负载/环境下观测到的传感器行为。
- 部署证明: 现场发布、回滚与维护证据。
切勿把通过的主机测试、HTTP 响应、串口横幅或 CI 任务提升为硬件或系统证明。如果板卡、传感器、电路或测量未知,请止步于有界计划并指明下一项测量。