2. 传感器信号调理:模拟信号与数字信号、信号放大电路设计、滤波电路设计、ADC/DAC转换原理

各位同学,咱们接着聊传感器。上一章我们把传感器比作系统的“五官”,那信号调理电路就是“神经”。传感器输出的信号,往往又弱又脏,直接送给单片机?那基本是找不自在。我做了这么多年嵌入式,见过太多因为信号没处理好,导致整个项目翻车的案例。今天咱们就把这块硬骨头啃下来。

2.1 模拟信号与数字信号:两个世界的对话

先说个最基础的概念。传感器出来的信号,绝大多数是模拟信号。什么是模拟信号?说白了,就是连续变化的电压或电流。比如一个温度传感器,温度从25度变到26度,电压是平滑上升的,中间有无数个值。

数字信号就不一样了。它只有两个状态:高电平和低电平,也就是1和0。单片机、CPU这些数字器件,只认1和0。

问题来了:真实世界是连续的模拟量,数字世界是离散的0和1。怎么让它们对话?这就是信号调理要干的事。

核心矛盾:模拟信号是连续的、无限精度的;数字信号是离散的、有限精度的。信号调理就是在这两个世界之间搭一座桥。

我个人习惯,在设计任何传感器系统之前,先画一张信号流图。把传感器输出是什么信号、需要调理成什么信号、最终给谁用,全画清楚。这一步省了,后面全是坑。

2.2 信号放大电路设计:把微弱信号“养大”

传感器输出的信号有多弱?我举个例子。热电偶输出,每度温差才几十微伏。微伏什么概念?就是百万分之一伏。这么小的信号,别说单片机了,连普通的万用表都测不准。

所以第一件事:放大。

最常用的放大器是运算放大器,简称运放。运放这东西,说白了就是一个高增益的差分放大器。它的核心公式很简单:

Vout = A * (V+ - V-)

其中A是开环增益,通常有十万倍甚至百万倍。但实际中我们不会直接用开环,因为太不稳定了。我们会引入负反馈,让放大器工作在线性区。

最常见的放大电路是同相放大器和反相放大器。我给你们画个同相放大器的图:

          Rf
    +----/\/\/\----+
    |              |
    |              |
    +----|-\       |
         |  \      |
Vin ----|+  /------+---- Vout
         |  /
         |/
         |
        GND

这个电路的增益公式是:

Gain = 1 + Rf / Rg

比如Rf=100kΩ,Rg=10kΩ,增益就是1+10=11倍。简单吧?

我的经验:选运放时,别光看增益。要关注三个关键参数:输入偏置电流、输入失调电压、共模抑制比。我曾经在一个项目中用了通用运放LM358去放大热电偶信号,结果输出全是噪声。后来换成精密运放OP07,问题立马解决。运放选型,差之毫厘,谬以千里。

2.3 滤波电路设计:把噪声“筛”出去

信号放大了,但噪声也跟着放大了。怎么办?滤波。

滤波的本质,就是让有用频率的信号通过,把无用频率的信号衰减掉。传感器信号通常是低频的,比如温度变化很慢,压力变化也不快。而噪声往往是高频的,比如50Hz的工频干扰、开关电源的纹波。

最常用的滤波器是低通滤波器。一阶RC低通滤波器,结构简单到令人发指:

Vin ----/\/\/\----+---- Vout
         R        |
                  |
                 === C
                  |
                 GND

它的截止频率公式:

fc = 1 / (2 * π * R * C)

比如R=10kΩ,C=1μF,fc≈15.9Hz。也就是说,15.9Hz以下的信号能通过,以上的被衰减。

但一阶滤波器的衰减速度只有-20dB/十倍频,效果一般。我建议用二阶或更高阶的滤波器。比如Sallen-Key结构的二阶低通滤波器,衰减速度能达到-40dB/十倍频。

避坑指南:我曾经在一个压力传感器项目中,只加了一阶RC滤波,结果数据还是跳得厉害。后来用示波器一看,发现是电机产生的电磁干扰。换成二阶有源滤波器后,数据稳得像条直线。记住:滤波不是万能的,但不过滤是万万不能的。

2.4 ADC/DAC转换原理:模拟与数字的桥梁

信号调理好了,干净的模拟信号,怎么进单片机?靠ADC(模数转换器)。反过来,单片机要输出模拟信号控制执行器,靠DAC(数模转换器)。

ADC的工作原理:

ADC的核心是“量化”。把连续的模拟电压,映射到离散的数字值。比如一个10位的ADC,参考电压是5V,那么它能分辨的最小电压是:

LSB = 5V / 2^10 = 5V / 1024 ≈ 4.88mV

也就是说,输入电压每变化4.88mV,数字输出就变化1个LSB。

常见的ADC类型有几种:

  • 逐次逼近型(SAR ADC):速度快,精度适中,我最常用。比如ADS1115,16位精度,I2C接口,好用得很。
  • Σ-Δ型(Sigma-Delta ADC):精度极高,但速度慢。适合音频、精密测量。
  • 双积分型:抗干扰能力强,但速度最慢。万用表里常用。

DAC的工作原理:

DAC正好反过来。输入一个数字值,输出一个对应的模拟电压。最简单的DAC是R-2R梯形网络,用电阻网络实现。

        R     R     R     R
Vref ---/\/\--/\/\--/\/\--/\/\--+---- Vout
         |     |     |     |     |
        2R    2R    2R    2R    |
         |     |     |     |     |
        GND   GND   GND   GND   |
                                 |
                                GND

每个数字位控制一个开关,把对应的电流汇入或汇出。最终输出电压是各支路电流的叠加。

关键参数:ADC/DAC的“分辨率”和“采样率”是互相制约的。分辨率越高,采样率通常越低。选型时要根据实际需求权衡。比如音频需要44.1kHz采样率,16位分辨率就够了;而精密称重需要24位分辨率,但采样率几十Hz就够。

2.5 知识体系总览

说了这么多,我画张图帮你们理清思路。这张图展示了传感器信号调理的完整链路:

传感器信号调理知识体系 传感器 模拟信号输出 信号放大 运放电路 滤波电路 低通/带通 ADC转换 模数转换 单片机 DAC转换 数模转换 执行器 信号流向:传感器 → 放大 → 滤波 → ADC → 单片机 控制流向:单片机 → DAC → 执行器 关键参数:分辨率、采样率、增益、截止频率、信噪比

这张图把整个信号调理链路串起来了。从传感器输出模拟信号,经过放大、滤波,再由ADC转换成数字信号给单片机。反过来,单片机通过DAC输出模拟信号控制执行器。每个环节都缺一不可。

2.6 实战中的几个要点

最后,我总结几个实战中容易踩的坑:

  1. 阻抗匹配:传感器输出阻抗和放大器输入阻抗要匹配。高阻抗传感器(比如pH电极)必须用高输入阻抗的运放,否则信号会被“吃掉”。
  2. 电源去耦:运放和ADC的电源脚旁边,一定要加0.1μF和10μF的去耦电容。我见过太多人忽略这个,结果电路自激振荡。
  3. 参考电压:ADC的参考电压要稳定。用TL431或者REF3030这类精密参考源,别直接用VCC。
  4. 采样率选择:根据奈奎斯特定理,采样率至少是信号最高频率的2倍。实际中我一般取5-10倍,留足余量。

一个小技巧:调试ADC时,先给一个已知的直流电压(比如用电池分压),看ADC读数对不对。如果不对,先查参考电压,再查输入信号,最后查代码。按这个顺序排查,90%的问题都能解决。

好了,信号调理这块就讲到这里。内容不少,但都是干货。你们回去后,找个热电偶或者光敏电阻,搭个放大滤波电路,再用单片机ADC读一下数据。亲手做一遍,比看十遍书都管用。

可可精品资料库