4、硬件滤波基础:RC低通滤波原理、施密特触发器整形、差分信号传输抗干扰

各位工程师朋友,咱们接着聊编码器信号处理。上一章讲了信号抖动的来源,这一章咱们得动真格的了——怎么从硬件层面把这些讨厌的抖动给干掉。

硬件滤波,说白了就是用物理器件把信号里的毛刺给「捋顺」了。我做了这么多年嵌入式,发现很多新手一上来就想着用软件滤波,其实硬件打底做好了,后面能省一大半的麻烦。今天咱们就掰开揉碎,把三个最核心的硬件滤波手段讲透。

4.1 RC低通滤波:最朴素的降噪手段

RC低通滤波,你肯定见过。一个电阻串在信号线上,一个电容对地接上,完事。但就这么简单的电路,用好了能解决大问题。

原理其实一句话:电容充放电需要时间。

信号跳变太快,电容来不及充满电,电压就被「平均」了。高频噪声就被这样削掉了。我习惯用这个公式来估算截止频率:

f_c = 1 / (2π × R × C)

举个例子,你选10kΩ电阻和100nF电容:

f_c = 1 / (2 × 3.14 × 10000 × 0.0000001) ≈ 159 Hz

这意味着,频率高于159Hz的信号会被明显衰减。编码器输出如果是1kHz的脉冲,那这个滤波器就太狠了——会把有用的边沿也给磨圆了。

注意:RC滤波会引入延迟。信号边沿会变缓,从高到低不再是「啪」的一下,而是「呼」的一下。这会直接影响编码器计数精度。

我在项目中遇到过这样的情况:用了一个RC滤波,编码器读数在低速时很稳,但一跑高速就开始丢脉冲。后来一查,就是RC时间常数太大了,信号边沿被拉得太缓,MCU的IO口识别不出跳变。

我的建议:RC滤波只用来干掉高频毛刺,别指望它把信号整得漂漂亮亮。截止频率一般选在编码器最高输出频率的3-5倍以上。比如编码器最高输出10kHz,那RC截止频率设在30-50kHz比较合适。

实战小技巧:如果你不确定选多大,可以先焊一个10kΩ+10nF的组合(截止频率约1.6kHz),用示波器看效果,再根据实际情况调整。我习惯在PCB上预留0402封装的电阻电容焊盘,方便调试时更换。

4.2 施密特触发器整形:把「模糊」变「清晰」

RC滤波把毛刺干掉了,但信号边沿也变缓了。这时候就需要施密特触发器上场。

施密特触发器的核心特点:有滞回特性。什么意思?就是它有两个阈值电压:

  • 从低到高跳变时,需要超过一个较高的阈值(比如2.0V)
  • 从高到低跳变时,需要低于一个较低的阈值(比如0.8V)

这两个阈值之间的差值,就叫滞回电压。有了这个滞回区间,信号在阈值附近来回抖动时,输出不会跟着乱跳。你想想看,如果没有滞回,信号在1.5V附近晃悠,普通门电路就会反复翻转,那计数就全乱套了。

我常用的施密特触发器芯片有这些:

芯片型号 通道数 特点 典型应用
74HC14 6路 经典反相施密特,便宜好用 通用信号整形
74HC132 4路 施密特与非门 组合逻辑+整形
SN74LVC1G17 1路 单路施密特缓冲器,小封装 空间受限的场景

实际接法很简单:编码器信号先过RC滤波,再过施密特触发器。RC把高频噪声干掉,施密特把缓变的边沿重新整成陡峭的方波。这两个配合起来,效果非常好。

核心思路:RC负责「去毛刺」,施密特负责「整形」。先滤波再整形,顺序不能反。如果先整形再滤波,施密特会把噪声也整成方波,那就白干了。

我曾经在一个电机编码器项目里,信号线上有很强的共模噪声。RC滤波后信号还是有点晃,加了施密特触发器后,波形干净得像教科书一样。嗯,从那以后,我的编码器电路里必加施密特。

4.3 差分信号传输:从根源上抗干扰

前面讲的RC和施密特,都是「信号已经脏了,怎么洗干净」。差分信号不一样,它是「从一开始就不让信号变脏」。

差分传输的原理:用两根线传一路信号,一根叫正(A+),一根叫负(A-)。接收端只看两根线的电压差,不看它们对地的绝对电压。

为什么这样抗干扰?因为外部噪声通常是共模的——同时作用在两根线上。比如一个强电磁脉冲过来,两根线上都叠加了+1V的噪声。但它们的差值没变,接收端就无视了这个噪声。

编码器常用的差分接口标准是RS-422,也叫「平衡传输」。我常用的差分收发芯片:

  • AM26LS31:四路差分驱动器,把单端信号转成差分
  • AM26LS32:四路差分接收器,把差分信号转回单端
  • DS26LV31/32:低压版本,适合3.3V系统

接法也很直接:编码器输出差分对(A+、A-、B+、B-),通过双绞线传到接收端。接收端用AM26LS32把差分信号转回TTL电平,再送给MCU。

布线要点:差分对的两根线要尽量等长、靠近走。我习惯在PCB上让差分对间距保持在10-15mil,并且远离时钟线和大电流走线。双绞线的绞距越密,抗干扰能力越强。

差分传输还有一个额外的好处:可以传得更远。单端TTL信号传个几十厘米就开始变形了,但RS-422差分信号传个几十米都没问题。我在一个工厂自动化项目里,编码器离控制器有15米远,用的就是差分传输,稳得很。

不过差分也有代价:线多了一倍,成本高一些。如果你的编码器就在板子上,距离不超过10厘米,那单端信号加RC滤波就够了。但如果要走线到接插件、经过电机附近、或者距离超过半米,我强烈建议上差分。

4.4 三种手段怎么选?一张图说清楚

说了这么多,你可能有点晕:到底什么时候用RC,什么时候用施密特,什么时候上差分?

下面这张图是我自己总结的决策流程,你照着走基本不会错:

编码器硬件滤波方案选择流程 编码器信号输入 传输距离 > 0.5米 或 经过强干扰源? 方案A:差分传输(RS-422) 差分接收 → 施密特整形 → MCU 噪声严重吗? (示波器看毛刺) 严重 方案B: RC滤波 + 施密特 不严重 方案C:仅RC滤波(截止频率适当) + 软件去抖(可选) 干净、稳定的编码器信号

说白了,选方案就三步:

  1. 看距离和干扰环境——远了或者旁边有电机、变频器,直接上差分
  2. 看噪声程度——示波器一看,毛刺多就RC+施密特,毛刺少就只RC
  3. 看成本预算——差分贵一点,但省心;RC+施密特便宜,但调试要花功夫

我个人习惯是:但凡编码器信号要走出PCB板,我就上差分。多花几块钱,换来的是调试时少掉几根头发,值。

好了,硬件滤波这块就聊到这儿。记住一个原则:硬件能解决的问题,别丢给软件。好的硬件设计,能让你的编码器信号在恶劣环境下依然稳如磐石。

本章要点回顾:

  • RC低通滤波:用截止频率公式估算,别把有用信号也滤掉了
  • 施密特触发器:利用滞回特性,把缓变信号整成陡峭方波
  • 差分传输:从源头抑制共模噪声,适合长距离和强干扰环境
  • 推荐组合:RC+施密特是黄金搭档,差分+施密特是终极方案

公众号:蓝海资料掘金营,微信deep3321