4. 硬件校正方法:利用模拟电路进行初步线性化

说到传感器非线性校正,很多人第一反应就是上软件、跑算法。这当然没错。但我个人习惯是——能用硬件解决的,先别急着写代码。为什么?因为硬件校正没有延迟,不占CPU资源,而且一旦调好,它就一直稳定工作。

这一章,我们来聊聊模拟电路的线性化手段。说白了,就是用一些巧妙的电路结构,把传感器的非线性输出“掰直”。

4.1 为什么需要硬件校正?

你想想看,很多传感器的输出天生就不是线性的。比如热敏电阻的阻值-温度曲线,比如光电二极管的电流-光照曲线。这些曲线往往是指数型或对数型的。

如果直接送进ADC采样,你会发现——低端灵敏度太高,高端灵敏度太低。整个量程范围内,分辨率分布极不均匀。

我在项目中遇到过这样一个案例:一个温度测量系统,用NTC热敏电阻。0°C到50°C这段,ADC读数变化很大,精度不错。但到了100°C以上,读数几乎不动了。这就是典型的非线性问题。

硬件校正的目的,就是在信号进入ADC之前,先把曲线拉直

核心思想:利用模拟电路的传递函数,去“补偿”传感器的非线性特性。让输入-输出关系尽量接近一条直线。

4.2 对数放大器:专治指数型非线性

很多传感器的输出是指数型的。比如某些温度传感器,电压随温度呈指数变化。这时候,对数放大器就是你的好朋友。

对数放大器的基本原理,是利用PN结的指数特性。一个二极管的正向电流和电压之间,存在这样的关系:

I = Is * (exp(V / (n * Vt)) - 1)

当V足够大时,这个关系近似为:

I ≈ Is * exp(V / (n * Vt))

反过来,如果我们把二极管放在运放的反馈回路里,就能实现输出电压与输入电流的对数成正比

Vout = -n * Vt * ln(Vin / (R * Is))

嗯,公式看着有点吓人。但实际用起来很简单——输入是指数变化的信号,输出就变成线性了

实战经验:我曾经用LM358加一个1N4148二极管,搭过一个简易对数放大器。虽然温漂有点大,但在0-50°C范围内,线性度从原来的±15%改善到了±2%。成本不到两块钱。

4.3 二极管网络:分段逼近线性化

对数放大器虽然好用,但它只能处理指数型曲线。如果传感器的曲线是“S型”或者“其他奇奇怪怪的形状”呢?

这时候,我推荐你试试二极管网络分段逼近法。这个方法很巧妙——用多个二极管和电阻组成分段线性网络,每一段用一个不同的增益。

原理是这样的:

  • 每个二极管都有一个开启电压(硅管约0.7V)
  • 当输入电压低于开启电压时,该支路不导通
  • 当输入电压超过开启电压时,该支路开始起作用
  • 通过调整各支路的电阻值,可以控制每一段的增益

说白了,就是用多个“拐点”去逼近一条曲线。拐点越多,逼近精度越高。

我画了一张示意图,帮你理解这个结构:

二极管网络分段线性化电路结构 Vin R0 D1 R1 D2 R2 D3 R3 运放 Vout Rf 输入信号 分段网络(D1R1, D2R2, D3R3) 求和放大

每个二极管Dn串联一个电阻Rn,构成一条支路。当输入电压升高时,二极管依次导通。每导通一个,就相当于并联了一个电阻,改变了整个网络的等效电阻。这样,输出曲线就被分成了若干段,每段有不同的斜率。

注意:二极管网络有个天生的缺点——温度漂移。二极管的开启电压会随温度变化(约-2mV/°C)。我曾经在一个项目中吃了这个亏,夏天调好的参数,到了冬天就不准了。后来改用肖特基二极管,温漂小了很多。

4.4 实战:热敏电阻的线性化

讲个具体的例子。NTC热敏电阻的阻值-温度关系是这样的:

R(T) = R0 * exp(B * (1/T - 1/T0))

其中B是材料常数,一般在3000-4000K之间。这个曲线非常陡峭,尤其是在低温段。

最简单的硬件校正方法,就是在热敏电阻上并联一个固定电阻。你可能会问:就这么简单?

对,就这么简单。并联电阻后,等效电阻变成:

Req = (R_ntc * Rp) / (R_ntc + Rp)

这个并联后的曲线,在中间一段会变得比较平直。虽然两端还是弯的,但如果你只关心某个温度范围(比如20-50°C),这个方法性价比极高。

我当年做智能家居的温度传感器,就是用这个方法。一个NTC加一个10kΩ的精密电阻,成本不到一毛钱,就把20-40°C范围内的线性度从±8%改善到了±1.5%。

选值技巧:并联电阻的最佳值,大约是热敏电阻在目标温度范围中点时的阻值。比如你要测25°C,NTC在25°C时是10kΩ,那就并联一个10kΩ的电阻。

4.5 硬件校正的优缺点

说了这么多好处,也得泼点冷水。硬件校正不是万能的。

优点 缺点
零延迟,实时性好 灵活性差,改参数要换元件
不占CPU资源 精度受限于元件精度
成本低(几个电阻二极管) 温漂问题难以完全消除
适合大批量生产 复杂曲线需要多级网络

我个人建议:能用硬件粗调,再用软件精调。硬件负责把曲线从“严重非线性”变成“近似线性”,软件负责最后的微调和温度补偿。这样既发挥了硬件的高速低成本优势,又保留了软件的灵活性。

嗯,这一章就到这里。硬件校正的方法其实还有很多,比如用乘法器、用模拟乘法器做除法等等。但核心思想都一样——用模拟电路的传递函数去补偿传感器的非线性。掌握了这个思路,你就能举一反三了。