3. 硬件接口与电路设计:传感器模拟输出与ADC接口、I2C/SPI数字接口详解、信号调理电路、参考电压与电源去耦设计

好,咱们进入正题。压力传感器选好了,接下来就是怎么把它和MCU连起来。这一步要是没做好,前面标定再准也是白搭。我见过不少项目,传感器本身精度很高,结果因为接口电路设计得马虎,最后系统噪声大得离谱。

说白了,压力传感器的输出无非两种:模拟信号(电压或电流)和数字信号(I2C或SPI)。咱们一个一个聊。

3.1 模拟输出与ADC接口

大部分工业级压力传感器,比如我常用的那几款,输出都是0.5V到4.5V的模拟电压。也有用4-20mA电流环的,抗干扰能力强,适合远距离传输。

电压输出型,直接连ADC就行。但有个坑——ADC的输入阻抗。我曾经遇到过,传感器输出正常,一接到ADC上电压就掉下来了。查了半天,原来是ADC的输入阻抗太低,把信号拉偏了。所以,我建议在传感器输出和ADC之间加一个电压跟随器,用运放搭一个,阻抗隔离,简单可靠。

关键点:ADC的参考电压必须稳定。如果参考电压飘了,你测出来的值全是错的。我习惯用外部精密参考源,比如REF5025,温漂低,长期稳定性好。

电流输出型,4-20mA。这个需要先经过一个精密电阻,把电流转成电压。电阻的精度和温漂很关键,我一般用0.1%的金属膜电阻,温度系数25ppm/°C以下。然后电压信号再进ADC。

嗯,这里要注意:ADC的采样率。医用制氧机压力变化不会太快,一般10Hz到100Hz的采样率就足够了。采样率太高反而引入不必要的噪声。

3.2 I2C/SPI数字接口详解

现在很多传感器直接输出数字信号,省掉了模拟调理的麻烦。我比较喜欢用I2C接口的传感器,连线少,就两根线:SCL和SDA。

I2C接口,说白了就是主从通信。MCU做主设备,传感器做从设备。每个从设备有一个唯一的地址。我遇到过一个问题:两个传感器地址冲突了。怎么办?有的传感器有地址选择引脚,拉高或拉低可以改变地址。如果没有,那就得用I2C多路复用器,比如TCA9548A。

I2C的速率,标准模式100kHz,快速模式400kHz。对于压力传感器,100kHz足够了。速率太高,线长一点就容易出问题。

SPI接口,速度更快,全双工。四条线:SCK、MOSI、MISO、CS。每个设备需要一个独立的片选信号。我个人的习惯是,如果板子上传感器多,而且需要高速读取,就用SPI。但SPI的缺点是占用的IO口多。

接口 线数 速度 适用场景
I2C 2 100k-400kHz 低速、多设备、连线少
SPI 4+ 可达MHz 高速、单设备或少量设备

小技巧:I2C总线上拉电阻的选择。我一般用4.7kΩ,如果总线电容大,可以换成2.2kΩ。太小了功耗大,太大了信号上升沿变缓。

3.3 信号调理电路:仪表放大器与滤波器

模拟信号从传感器出来,往往很微弱,而且夹杂着噪声。这时候就需要信号调理电路了。

仪表放大器,专门用来放大差分信号。压力传感器很多是桥式输出,差分信号。仪表放大器有很高的共模抑制比,能把有用的差分信号放大,把共模噪声抑制掉。我常用的型号是AD620,增益通过一个电阻设置,非常方便。

你想想看,如果直接用普通运放,共模噪声一进来,信号就淹没了。仪表放大器就是干这个的。

滤波器,主要是低通滤波器,滤掉高频噪声。压力信号变化慢,高频噪声基本都是干扰。我习惯在仪表放大器后面加一个二阶低通滤波器,截止频率设在10Hz左右。用运放搭一个Sallen-Key结构,简单又有效。

警告:滤波器的截止频率不要设得太低。太低了,有用的压力变化信号也被滤掉了。我曾经犯过这个错,结果制氧机压力变化响应慢了好几秒,差点没通过测试。

3.4 参考电压与电源去耦设计

这部分看着不起眼,但往往是系统稳定性的命门。

参考电压,ADC的基准。如果参考电压不稳,你测出来的数字就是飘的。我建议用专门的参考电压芯片,比如前面提到的REF5025,或者更便宜的TL431。不要直接从电源分压,电源上的噪声会直接耦合进去。

电源去耦,说白了就是给芯片的电源引脚旁边放一个电容。我习惯在每个芯片的电源引脚附近放一个0.1μF的陶瓷电容,再在板级放一个10μF的电解电容。0.1μF滤高频,10μF滤低频。

嗯,这里有个细节:电容的摆放位置。要尽量靠近芯片的电源引脚,连线要短。我曾经见过有人把去耦电容放在板子角落,那基本没什么用。

总结一下我的经验:

  • 模拟地和数字地要分开,最后单点连接。
  • 电源走线要宽,减少压降。
  • 传感器信号线要远离高频数字线,避免串扰。

好了,硬件接口这部分就聊到这儿。下一章咱们开始讲标定的具体流程,那才是真正出活儿的地方。