第二讲:传感器信号基础
各位工程师朋友,大家好。今天我们来聊聊传感器信号的基础知识。说实话,这部分内容看起来简单,但我在实际项目中见过太多人在这里栽跟头。你想想看,传感器选对了,电路焊好了,结果信号读出来全是乱码——这种经历,我猜不少人都遇到过。
2.1 模拟信号与数字信号
传感器输出的信号,归根结底就两种:模拟信号和数字信号。这俩的区别,说白了就是一个连续变化,一个跳变。
模拟信号,就像水龙头的水流。你可以开到任意位置,水流大小是连续变化的。温度传感器输出的电压,压力传感器输出的电流,都是模拟信号。它的特点是:理论上可以有无穷多个取值。
数字信号,就像开关。要么开,要么关,没有中间状态。数字信号只有两个电平:高电平和低电平,对应逻辑1和逻辑0。我刚开始做项目时,总觉得数字信号比模拟信号简单。后来发现,数字信号的时序问题才是真正的坑。
核心区别一览:
- 模拟信号:连续变化,无限取值,易受干扰
- 数字信号:离散跳变,有限取值,抗干扰强
- 模拟信号需要ADC转换才能被MCU处理
- 数字信号可以直接被MCU读取
2.2 传感器输出类型
传感器的输出类型,我把它分成三大类:电压输出、电流输出、数字协议输出。每种都有它的脾气。
2.2.1 电压输出
电压输出是最常见的。比如一个温度传感器,0°C时输出0V,100°C时输出1V。线性关系,简单明了。但这里有个坑——电压信号在长距离传输时,线阻会导致压降。我记得有一次,传感器离控制器20米远,读到的电压比实际低了0.3V,换算成温度差了将近30°C。
常见的电压输出范围:
- 0-5V:工业标准,兼容性好
- 0-10V:常用于PLC系统
- 0-3.3V:适合现代MCU
- ±5V:差分信号,抗干扰强
2.2.2 电流输出
电流输出,最经典的就是4-20mA。为什么是4mA而不是0mA?嗯,这里有个巧妙的设计——4mA可以用来检测断线。如果线路断了,电流就是0mA,系统就能判断出故障。
我曾经在一个化工厂的项目中,所有传感器都用的4-20mA输出。现场电磁干扰特别强,电压信号根本没法用,但电流信号稳得很。为什么?因为电流环对线路电阻不敏感,抗干扰能力天生就强。
我的经验:如果传感器和控制器距离超过10米,优先考虑电流输出。如果距离在1米以内,电压输出更经济实惠。
2.2.3 数字协议输出
数字协议输出,现在越来越流行。常见的协议有:
| 协议 | 通信方式 | 典型应用 | 最大距离 |
|---|---|---|---|
| I²C | 同步串行 | 板级传感器 | 1米 |
| SPI | 同步串行 | 高速传感器 | 10米 |
| UART | 异步串行 | GPS、蓝牙 | 15米 |
| RS-485 | 差分串行 | 工业现场 | 1200米 |
| CAN | 差分串行 | 汽车电子 | 40米 |
数字协议的好处是:数据直接就是数字量,不需要ADC转换。而且可以挂多个传感器在同一条总线上。但坏处是:协议解析需要时间,实时性不如模拟信号。
2.3 信号调理概念
信号调理,这个词听起来高大上,其实说白了就是:把传感器输出的原始信号,处理成MCU能读懂的信号。
为什么要调理?因为传感器的原始信号往往有这些问题:
- 电压太小(比如热电偶只有几毫伏)
- 有噪声干扰
- 输出阻抗太高
- 信号范围不匹配
常见的信号调理手段:
- 放大:用小信号放大器,把毫伏级信号放大到伏级。我习惯用仪表放大器,共模抑制比高,噪声小。
- 滤波:用低通滤波器滤掉高频噪声。RC滤波是最简单的,但要注意截止频率的计算。
- 电平转换:把0-10V转换成0-3.3V,让MCU能直接读取。
- 隔离:用光耦或隔离放大器,把传感器和MCU电气隔离。这在工业现场特别重要,我曾经因为没做隔离,烧掉过三块开发板。
- 线性化:有些传感器的输出不是线性的,比如NTC热敏电阻。需要用查表法或公式法做线性化处理。
避坑指南:我曾经在一个项目中,直接用MCU的ADC读取热电偶信号。结果发现读数跳得厉害,根本没法用。后来加了仪表放大器和低通滤波器,信号才稳定下来。记住:不要指望MCU的ADC能直接处理微弱信号。
2.4 知识体系总览
下面这张图,是我自己总结的传感器信号知识体系。你可以把它当作一个快速索引。
好了,这一章的内容就到这里。记住:传感器信号处理,没有银弹。每种方案都有它的适用场景。我的建议是:先搞清楚你的应用环境,再选择合适的信号类型和调理方案。别一上来就想着用最贵的方案,也别为了省钱用最便宜的。合适,才是最好的。
可可精品资料库