TT Lab
开始
学习 学习路径 课程

电子电路入门 — 传感器输入验证

同为二阶滤波器,为什么结果不同

在 TT Lab 中继续学习

一句话总结

滤波器有两级,并不意味着就是同一个二阶响应。必须区分连接负载与极点配置,并同时确认频率响应和阶跃响应,才能选定设计。

为什么需要它

在前一个单元中,我们得出的结论是:没有任何单个 RC 能在降低温室风扇 875Hz 干扰的同时,保留 125Hz 的信号。现在设计会议上出现了三个建议:再接一个相同的 RC,在中间加入缓冲器,或者干脆使用另一种二阶滤波器。它们都用了两个电容,结果也相同吗?

我们不去通过改变条件来制造成功的数字,而是确认电路结构如何改变传递函数。保留原有的要求:期望的 125Hz 增益不低于 0.9,干扰的 875Hz 增益不高于 0.1。在此基础上,再增加时间要求:1V 阶跃输入的过冲电压≤0.05V,观测到的 2% 建立时间≤10ms。因为对正常的急剧变化反应过大的传感器,只看两个频率点是很难采用的。

这个实验是理想的线性滤波器。缓冲器是 ngspice 的受控电压源,不具备真实运算放大器的带宽、电源、输出限制和压摆率。不要把这一阶段所选的电路,扩大为对实物电路元件值的推荐或对其工作的保证。

工作原理

AC 分析中的数字不是时域波形

AC 分析会针对每个频率,求出输入和输出的复数电压。实部和虚部不是不同传感器的值,而是表示一个电压的幅度和相位的两个分量。先计算传递函数 H=Vout/Vin,然后增益是 |H|,电压增益的 dB 是 20log10|H|,相位是把 atan2(Im H,Re H) 换算成度数的值。

ngspice 控制语言教程展示了 AC 输出中复数向量以实部、虚部两列记录的格式。这次的文件共有 5 列:频率、输入实部、输入虚部、输出实部、输出虚部。表头中 v(in) 和 v(out) 各出现两次,并不是重复的错误。

提供的输入是 AC 幅度 0.5、1、2V 和相位 23 度。如果不除以输入,改变幅度时增益也会改变,输入的相位也会混进滤波器的相位。为了避免只有在 1V 输入时输出幅度碰巧吻合的实现,也要检查其他幅度。这里不能把 10log10 用于电压比。另外,如果只用 atan(Im/Re),在实部为负的区间就会丢失象限。

观测范围是 10Hz 到 10kHz,每十倍频程 80 个区间,共 241 个点。125Hz 和 875Hz 用另外的小范围线性观测来精确包含。不要把对数扫描中最接近的点,当作所要求的频率。如果输出恰好为 0,增益是 0,但对数和相位不是有意义的有限数字,所以在报告中保留为 null。

把两个 RC 连在一起时产生的新项

设 R=1kΩ,C=1/(2πRf₀),p=jf/f₀。一个 RC 是 H=1/(1+p)。用理想缓冲器隔开的两个相同的 RC 是 H=1/(1+p)²,展开分母就是 1+2p+p²。因为每一级都看不到另一级的负载,所以可以把两个传递函数相乘。

如果不用缓冲器而直接连接,第二个 R 和 C 就成了第一级输出的负载。单独列出中间节点的电压,再建立电流之和的方程,得到 H=1/(1+3p+p²)。多出来的 p 项改变了衰减和时间响应。Analog Devices 的 RC 级联实验也说明,由于这种负载效应,各个响应的简单相乘可能与实际连接不同。

在 f=f₀ 处,三个电路的增益分别是 1/√2、1/2、1/3。后两个电路都是二阶,在该频率处相位也是 −90 度,但幅度并不相同。仅凭阶数,并不能在所有频率上决定通带的形状或衰减速度。必须区分高频下趋近的斜率与过渡带的实际值。

Sallen–Key 不仅选择阶数,也选择 Q

这次的单位增益 Sallen–Key,把输入经 R1 连到中间节点,从该节点经 R2 连到缓冲器输入,从中间节点经 C1 连到缓冲器输出,从缓冲器输入经 C2 连到地。缓冲器是读取输入并原样输出的理想模型。设置 R1=R2=R,C1=2QC,C2=C/(2Q),则 H=1/(1+p/Q+p²)。

当 Q=1/√2 时,是二阶 Butterworth 响应。Analog Devices 的相位响应说明讨论了二阶响应的形状和相位转移随 Q 而变化。同时也区分了两个相同的一阶滤波器级联得到的响应,避免把它与二阶 Butterworth 混淆。本课程用相同 f₀ 的电路文件来比较它们。

这里的 f₀ 并不意味着所有电路的 −3dB 频率。对于 rc1 和二阶 Butterworth,这个含义是成立的,但不能原样套用到其他 Q 或带负载的 RC 上。所以配置字段也不叫 cutoff_hz,而是 f0_hz。从名称上就加以区分,就能减少在报告中赋予错误物理含义的情况。

在 f₀=220Hz 下直接计算,并通过仿真对照的代表值如下。下一个实验要求的不是直接返回这张表的函数,而是读取真实文件的函数。

电路 125Hz 增益 875Hz 增益 1V 阶跃过冲
一个 RC 约 0.869 约 0.244 约 0V
两个 RC,直接连接 约 0.545 约 0.053 约 0V
两个 RC,理想缓冲器 约 0.756 约 0.059 约 0V
Sallen–Key,Q=1/√2 约 0.952 约 0.063 约 0.043V
Sallen–Key,Q=1.4 约 1.267 约 0.066 约 0.301V

较高的 Q 会使期望频率的增益大于 1。这次的 AC 要求只规定了最小值,所以只看两个频率条件,可以让它通过。但在阶跃输入 5% 的过冲限制上,它会被淘汰。这并不是蒙混过关的例外,而是展示了要求列表中漏掉了什么的案例。如果平坦度或增益上限很重要,也必须作为单独的要求加以声明。

第一次进入容差带并不等于已经建立

输入在 1ms 之前为 0V,之后在 1µs 内上升到 1V,并保持到 50ms。从阶跃上升完成的 1.001ms 开始,以 10µs 的间隔对 4900 个采样点做线性插值。在这个网格上超过 1V 的最大量,就是 overshoot_v。找出位于 0.98–1.02V 之外的最后一个采样点,再把下一个采样点的时刻,记录为以上升完成为基准的相对时间。

如果选择第一次经过 1V 的时刻,就会漏掉振铃在后面再次走出容差带的情况。如果直到最后一个采样点都在带外,则 settled_at_s 为 null,如果所有采样点都在带内,则为 0。2% 容差带的边界包含在内。观测只持续到绝对时间 49.991ms,所以这个报告是在该有限观测区间和 10µs 网格之内的建立。这并不是此后永远稳定的证明,也不是对连续时间最大值的认证。

电路计算的最大时间间隔分别以 5µs 和 2.5µs 运行。在相同的 10µs 观测时刻,对照两个结果的最大差值是否在 10µV 以下。AC 传递函数在全部 241 个点和所要求的两个频率点上,用复数与解析模型比较。幅度相同而相位错误的电路,会在这项检查中被拒绝。收敛、模型一致和设计要求都满足,才能放入最终候选。

在现场相遇的样子

模拟验证岗位的自动化,并不只是把数字画得漂亮。必须能够重新找出输入了什么、实际电路是什么,以及针对规格的哪个项目有怎样的余量。同时保留 AC 结果和瞬态响应,就能说明用于去噪的滤波器,如何对正常信号的急剧变化做出反应。

NXP 的模拟验证岗位公告中确认的 Python 自动化、基础模拟量、验证计划和数据分析要求,被联系到了本课题的文件处理和条件判定上。这个实验并不能代替实际测量仪器的操作,或按温度、工艺进行的实物验证。

下一项实验要做什么

编写“配置验证 → 读取复数 AC 文件 → Bode 数值 → 传递函数 → 阶跃观测 → 综合要求判定 → 文件分析 → 比较 CLI”这 8 个步骤。最后,原样保管原始网表、配置、日志、AC 文件、阶跃文件,并汇报选择的理由。不要通过删除失败的条件来制造最终候选,而要把被排除出候选的理由,留在各个字段中。