news 2026/10/29 16:24:32

嵌入式三种传感机制:电阻式、电容式、电感式从原理到选型实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式三种传感机制:电阻式、电容式、电感式从原理到选型实战

做嵌入式这行,屏幕、协议栈、RTOS 这些东西再花哨,最后决定项目能不能落地的往往还是最前面那一段——传感器怎么把物理量变成电信号。标题里说的三种传感机制,指的是嵌入式系统里最基础也最常见的那一套划分:电阻式、电容式、电感式。这三种机制几乎覆盖了温度、压力、应变、触摸、液位、接近、位移、金属检测等一大半的常见需求,而且它们都不需要什么高深的算法,拼的是对模拟前端的理解、对布线的耐心、对噪声和温漂的处理。这篇内容适合刚接手传感器驱动的嵌入式新人,也适合做了几年、被现场漂移和误触发折磨过的老手;我会把三种机制的物理来源、读出电路、参数计算、实操步骤和踩坑记录摊开讲,尽量让你看完就能动手接线、算参数、写采样代码。

1. 三种传感机制的划分逻辑与工程意义

1.1 为什么按"电阻—电容—电感"来切分

工程上给传感器分类的方法很多,按被测物理量分、按输出信号分、按是否有源分,都能分。但我更愿意按被改变的那个电学参数来分,因为对嵌入式工程师来说,传感器最终都要接到一根线、一个引脚上,而引脚能"看见"的只有电压、电流、频率、时间这几种东西。电阻式、电容式、电感式这三种机制,恰好对应了三种最原始的物理变化,它们的读出电路思路完全不同,踩的坑也完全不一样。

电阻式最简单,给个电流测电压,或者串个电阻分压,一路 ADC 就完事,所以它最便宜、最普及,但也最容易被"引线电阻""自热""接触电阻"这种细节做坏。电容式变化量极小,典型触摸检测的电容变化只有零点几皮法到几皮法,在几十皮法的底噪里找信号,考验的是布线、屏蔽和软件基线跟踪。电感式则是另一条路,它靠磁场耦合,天生不怕油污、灰尘、水汽,适合恶劣环境,代价是需要振荡电路、需要处理频率或者相位,模拟前端复杂一些。

这个划分不是为了学术上的整齐,而是因为它直接决定了你选什么 MCU 外设、画几层板、留多大 PCB 空间。同样是做一个"检测物体靠近"的功能,用红外反射、电容接近、电感接近,硬件方案差出十万八千里,成本可能差三倍,可靠性表现也完全不同。

1.2 三种机制在嵌入式链路中的共性与差异

不管哪一种,完整的嵌入式传感链路都是四段:物理量 → 电学参数变化 → 模拟前端调理 → 数字化与处理。前三段是模拟的活儿,最后一段是数字的活儿。很多人栽跟头就栽在只盯着最后一段,觉得"我 ADC 精度 16 位、我采样率 1MHz,应该很准",结果前面一段分压电阻用了 5% 精度的碳膜电阻,后面再怎么算都是白搭。

三种机制的差异集中在第二段和第三段。电阻式的电学参数变化范围大(几欧到几百千欧),调理电路简单,一个分压或者一个电桥加仪表放大器就够;电容式的变化范围是皮法级甚至飞法级,调理电路要么用 RC 充放电把电容变成时间,要么用专用电荷转移前端,要么用交流激励加同步解调;电感式的变化体现为阻抗和相位,得先用 LC 谐振把电感变化转成频率变化,或者用电桥把阻抗变化转成电压,再或者测时间常数。

还有一个容易被忽视的共性:三种机制全都是"比例测量"更准。电阻式用比例法消除激励源漂移,电容式用比例法消除寄生电容,电感式用比例法消除振荡器温漂。这一点后面每个机制我都会单独讲,因为它是把精度从 1% 做到 0.1% 的关键,也是大多数教程不会提的地方。

2. 电阻式传感机制:最简单也最容易被做坏的一条路

2.1 从物理量到电阻:几种典型转换方式

电阻式传感的本质,是让被测物理量去改变一段导体的几何尺寸或者电阻率。应变片靠的是拉伸压缩改变长度和截面积,灵敏系数典型值在 2 左右,意思是应变 1000 微应变时,电阻相对变化大约是 0.2%。铂电阻靠的是金属电阻率随温度线性上升,Pt100 在 0℃ 是 100Ω,平均温度系数约 3850ppm/℃,折算下来每摄氏度变化 0.385Ω。热敏电阻靠的是半导体载流子浓度随温度指数变化,灵敏度高但线性度差。

还有一类是位置式的,比如电位器、导电塑料位移传感器,靠滑动触点改变有效长度,输出是纯电阻分压,线性度好但触点是机械磨损件,寿命有限。选型时要问自己一个问题:这个物理量最终是想要"绝对精度"还是"重复性"?应变片绝对精度一般,但重复性极好,所以称重场景用它;铂电阻绝对精度好,所以测温场景用它。搞混这两个需求,选型一定跑偏。

2.2 分压、电桥、恒流源:三种读出电路的取舍

最廉价的读出方式是分压。一个固定电阻 R1 和传感器 Rs 串联,中间点接 ADC,Vout = Vcc × Rs / (R1 + Rs)。优点是便宜,一个电阻解决;缺点是输出对 Vcc 敏感,Vcc 抖 1% 读数就抖 1%,而且非线性——Rs 变化和 Vout 变化不是线性关系,只有当 Rs 变化远小于 R1 时才近似线性。

电桥则是把单个电阻变化转成差分电压,四臂电桥里应变片占一臂或者两臂,输出 Vout = Vex × ΔR / (4R)。用差分输入的好处是共模干扰、温漂(四臂同温时)可以被抵消掉。我实测下来,同样的应变片,分压方案在电机旁边漂 20 个码,全桥差分方案只漂 3 个码,这就是共模抑制的直接收益。

恒流源驱动是第三种,专门对付铂电阻这类"阻值随温度显著变化"的传感器。恒流源的好处是输出是纯线性的——V = I × R,R 和 V 严格成正比,不需要做线性化补偿;坏处是要多一个恒流源电路,而且电流会产生自热。用 1mA 驱动 Pt100,功耗是 I²R = 0.1mW,自热引起的温升在静止空气中小于 0.01℃,可以接受;如果用 5mA,自热就上来了,测液体温度还行,测静止空气温度就会偏高零点几度。

下面这张表是我选型时常用的对照:

读出方式成本线性度抗电源波动典型场景
分压极低差(需软件补偿)差热敏电阻、光敏电阻、低精度场合
惠斯通电桥中好中(需稳定激励)应变片、称重、压力
恒流源中高极好好(恒流本身抗扰)铂电阻测温、高精度 RTD
比例法采样低(省基准)好极好所有需要消除激励漂移的场合

2.3 参数计算与实操:铂电阻测温链路的完整配置

我拿一个最典型的场景走一遍:用 Pt100 做 -20℃ 到 150℃ 的测温,精度目标 0.1℃。

第一步算阻值范围。Pt100 在 -20℃ 约 92.16Ω,150℃ 约 157.33Ω,跨度 65Ω 左右。第二步选激励电流。这里有个权衡:电流越大,每摄氏度产生的电压越大,越容易分辨;但自热和引线压降也越大。取 1mA,对应电压范围 92.16mV 到 157.33mV,每摄氏度 0.385mV。

第三步算前端增益。如果 ADC 的参考电压是 2.048V、PGA 可设 8 倍,那输入满量程是 ±0.256V,我们的信号只用了 92mV 到 157mV 这一段,浪费了不少码值。更聪明的做法是比例法:让同一个 1mA 电流流过一颗 100Ω 的精密参考电阻,产生 100mV 的基准电压送进 ADC 的 REF 引脚,这样传感器电压和基准电压同源,激励电流漂 100ppm,比值只漂接近 0,ADC 读数几乎不动。这是我把精度从 ±0.5℃ 做到 ±0.05℃ 的关键一步,比换更贵的 ADC 有效得多。

第四步处理引线。两线制下,每根引线 0.5Ω 很常见,两根就是 1Ω,折算温度误差 1/0.385 ≈ 2.6℃,这在现场是不可接受的。改成三线制,让 ADC 的差分负端走一根补偿线,在恒流回路里把两根引线的压降抵消掉,误差能降到 0.1℃ 以内。四线制更彻底,用独立的电压检测线,完全不受引线电阻影响,代价是线缆多两根。

第五步是软件。ADC 出来的是码值,要做三件事:中值滤波去掉脉冲干扰、滑动平均压噪声、查表或多项式换算温度。铂电阻的换算我用 Callendar-Van Dusen 公式,0℃ 以上用二次项就够,-20℃ 到 0℃ 段补一个三次项,系数直接按分度表拟合,误差能压到 0.01℃。

/* 采集与换算示意:中值 + 滑动平均 + 比例法换算 */ #define N_MED 9 #define N_AVG 16 static int32_t buf_avg[N_AVG]; static uint8_t idx_avg = 0; int32_t read_rtd_raw(void) { int32_t s[N_MED]; for (int i = 0; i < N_MED; i++) { s[i] = adc_read_diff(); /* 差分通道:RTD 正端 - 参考电阻端 */ } /* 插入排序取中值,抗单点脉冲 */ for (int i = 1; i < N_MED; i++) { int32_t key = s[i], j = i - 1; while (j >= 0 && s[j] > key) { s[j + 1] = s[j]; j--; } s[j + 1] = key; } return s[N_MED / 2]; } float rtd_to_temp_c(float r_ratio) { /* r_ratio = R_rtd / R_ref,与激励电流绝对值无关 */ const float R0 = 100.0f; float r = r_ratio * R0; /* 0℃ 以上:R = R0(1 + At + Bt^2),A/B 按分度表拟合 */ const float A = 3.9083e-3f, B = -5.775e-7f; float disc = A * A - 4.0f * B * (1.0f - r / R0); if (disc < 0.0f) return -999.0f; return (-A + sqrtf(disc)) / (2.0f * B); }

注意:上面这段代码里的系数是针对正温区间的简化形式,负温区间要补三次项,正式产品里建议直接用分度表查表加线性插值,比拟合公式更稳。

2.4 电阻式机制的实操心得与禁忌

第一条心得:别用普通贴片电阻做分压的上臂。1% 精度的厚膜电阻温漂能到 100ppm/℃,夏天机箱内温升 30℃,阻值漂 0.3%,直接吃掉你一半精度预算。换成 25ppm/℃ 的薄膜电阻,成本多几毛钱,省下的标定时间值几十倍。

第二条:ADC 输入端一定要加 RC 低通。1kΩ 串阻加 100nF 对地,截止频率约 1.6kHz,能挡掉绝大多数开关电源和电机换向的干扰。但注意串阻不能太大,否则 ADC 采样保持电容充电不够,读数会偏低,具体上限查 ADC 手册里的源阻抗要求。

第三条:电桥供电要稳压,最好和 ADC 基准同源。我见过一个项目,电桥用 5V 供电,ADC 用 3.3V 基准,结果 5V 那边一波动,读数就跟着跳,查了两天才发现是电源问题。

第四条禁忌:别在传感器线上跑 PWM 或者开关信号。哪怕只是并排走 10cm,容性耦合就能把几百毫伏的尖峰灌进高阻抗的传感器输入端。实在要同走一根线缆,中间加地线隔离,或者把传感器信号改成差分。

3. 电容式传感机制:变化量最小,最考验布线

3.1 电容怎么被测量:三种主流检测方式

电容式传感的物理基础是平行板电容公式 C = ε₀εᵣA/d。改变面积、改变间距、改变介质,都能改变电容。麻烦在于绝对量太小:一个 10mm×10mm 的触摸焊盘对地电容大概是 5 到 15pF,手指靠近带来的变化只有 0.1 到 2pF,信噪比天然很差。

主流检测方式有三种。第一种是RC 充放电计时,用一个 GPIO 通过已知电阻给电容充电,用另一个引脚或者比较器测充电到阈值的时间,t = R·C·ln(...),时间正比于电容。这种方式只要两个引脚加一个电阻,成本几乎为零,缺点是分辨率受定时器精度和阈值抖动限制,抗干扰一般,适合按键、简单的液位判断。

第二种是电荷转移,也叫开关电容法,用一组开关把被测电容的电荷反复搬运到一颗积分电容上,搬 N 次后测积分电容电压。这种方式的优势是可以用多次累积把微弱信号放大,抗噪能力比 RC 计时好一个档次,很多专用触摸芯片内部就是这套架构。

第三种是交流激励加同步解调,用方波或者正弦波驱动传感器,测流过它的电流的幅度和相位。这种方式精度最高,能同时得到电容和损耗(也就是介质损耗),可以判断是不是有水膜、结露,但电路复杂,一般用专用前端芯片。

3.2 自电容与互电容:触摸和液位的不同打法

自电容是"一个电极对地"的电容,手指靠近时电容增大,检测简单,一个电极一根线,适合按键和接近感应。缺点是多点触摸时会出"鬼影",而且人手悬空不接地时灵敏度会下降。互电容是"发射电极和接收电极之间"的电容,手指靠近时电场被分流,接收端信号减小,能做真正的多点矩阵,手机屏幕用的就是这套。

液位检测属于另一种应用:把两根平行板或者同心管插进容器,液体上升时介质从空气(εᵣ≈1)变成水(εᵣ≈80),电容大幅增加。这种场景里,电容变化可能有几十 pF 甚至上百 pF,信噪比很好,用 RC 计时就够了。麻烦的是液体的介电常数会随温度、浓度、杂质变化,纯水 80,污水可能 60 也可能 90,所以绝对液位精度很难做高,一般做到满量程的 2% 到 5%,除非加一路参考电极做比值补偿。

这里有个很实用的技巧:做两根一模一样的电极,一根泡在固定参考位置,一根做测量。两路信号做比值,介电常数变化被抵消掉,剩下的就是液位信息。我在一个模拟项目里用这个办法,把介电常数波动带来的误差从 8% 压到 1.5%。

3.3 实操:一套电容式液位检测的完整实现

场景设定:一个塑料水箱,高度 300mm,要在外侧贴铜箔做非接触液位检测,量程 0 到 250mm,分辨率 2mm。

第一步算电容。两片 20mm 宽、250mm 高的铜箔,间距 3mm(塑料壁厚),中间介质是塑料加水。空箱时 C ≈ ε₀ × 1 × (0.02×0.25) / 0.003 ≈ 14.7pF;满水时下半段介质变成水,等效 εᵣ 按 3 到 5 算(塑料和水混合),C 能到 45 到 70pF。变化量 30pF 以上,够用。

第二步选检测方式。这种量级用 RC 计时完全够,但要注意两个细节:一是充电电阻取 1MΩ,时间常数 RC = 1MΩ × 50pF = 50μs,用 1MHz 定时器计数,分辨率 1μs,对应约 2% 的电容分辨率,勉强;二是充电阈值要稳定,最好用内部比较器加基准,而不是靠 GPIO 的数字阈值,后者随温度和电压漂得厉害。

第三步是软件。核心是基线跟踪:系统启动时记录空箱电容对应的计数值作为基线,之后每次测量值和基线做差。但水箱会结垢、会老化,基线必须慢速跟踪——用一阶低通,时间常数取几十秒,只在液位长时间不变时才更新,否则液位上升会被误当成基线漂移吃掉。

/* 电容式液位:充电时间测量 + 基线慢跟踪 */ static float base_cnt = 0.0f; static uint8_t stable_ticks = 0; uint32_t cap_charge_time_us(void) { gpio_set_low(PIN_SENSE); delay_us(5); /* 充分放电,避免历史电荷残留 */ gpio_set_input(PIN_SENSE); uint32_t t0 = timer_count(); gpio_set_high(PIN_CHG); /* 通过 1M 电阻充电 */ while (!comparator_out() && (timer_count() - t0) < 5000) { } uint32_t dt = timer_count() - t0; gpio_set_low(PIN_CHG); return dt; } void cap_level_task(void) { uint32_t raw = cap_charge_time_us(); /* 中值滤波省略,实际用 5 次取中值 */ if (stable_ticks > 100) { /* 液位稳定才更新基线 */ base_cnt += ((float)raw - base_cnt) * 0.002f; } float delta = (float)raw - base_cnt; float level_mm = delta * K_MM_PER_US; /* 标定得到的比例系数 */ if (level_mm < -5.0f || level_mm > 260.0f) { stable_ticks = 0; /* 异常跳变,冻结基线 */ } else { stable_ticks++; } }

注意:放电时间一定要留够。我吃过一次亏,放电只给了 1μs,残余电荷让下一次读数系统性偏低 3%,而且随刷新频率变化,查了整整一天。

3.4 电容式机制的坑与布线规则

电容式是所有传感机制里对 PCB 最挑剔的一个。第一条铁律:传感器焊盘下面不能铺地,哪怕是完整的地平面,也会把电场吃掉一大半,灵敏度直接砍半。正确做法是焊盘正下方挖空,或者用驱动屏蔽(guard)跟着传感器信号同相位摆动,把寄生电容"推"掉。

第二条:走线越短越好,且不能和高速信号平行。传感器到检测芯片的走线超过 5cm,寄生电容就开始不受控,而且容易耦合噪声。我用过的方案里,走线控制在 2cm 以内、四周用地线包围、背面不铺铜,误触发率能从每天几次降到几乎为零。

第三条:湿度是隐形杀手。结露会在焊盘表面形成一层水膜,电容直接增加几 pF,等于一直"有人按着"。对策是加防水涂层(三防漆)、在软件里用双阈值加长确认时间、或者在结构上做疏水斜面让水珠滚走。

第四条:人手接地状态会影响灵敏度。设备插着电源适配器时,人体通过大地形成回路,灵敏度高;用电池供电时,人体是浮空的,灵敏度可能掉一半。所以标定必须在最差条件下做,也就是电池供电、人手不接触金属外壳的状态。

4. 电感式传感机制:抗污染能力强的那一类

4.1 电感变化的来源:涡流、磁路气隙、互感

电感式传感的物理基础是 L = N²μ₀μᵣA/l,改变匝数、磁导率、截面积、磁路长度,都能改变电感。实际工程里有三条主要路径。

第一条是涡流。线圈通交流电产生交变磁场,金属目标靠近时,目标内部感应出涡流,涡流产生的反向磁场削弱原磁场,表现为线圈等效电感下降、等效电阻上升、Q 值下降。这就是电感式接近开关的原理,检测距离和线圈直径、频率、目标材料都有关,铁质目标比不锈钢远,铝又比不锈钢近一些但不如铁。

第二条是磁路气隙。典型的 LVDT(线性可变差动变压器)就是中间一个可动铁芯,两边各一个次级线圈,铁芯位置改变两个次级线圈的互感比例,输出差动电压。这种结构精度极高,能到微米级,工业上测位移、测阀门开度用得很多,代价是需要交流激励和同步解调,电路复杂。

第三条是磁致伸缩或者磁通门,靠材料的磁特性变化,灵敏度高但需要特殊材料,一般用在高端场合。嵌入式项目里最常碰到的还是第一条涡流和第二条气隙式。

4.2 测量方法:谐振频率法、电桥法、时间常数法

涡流检测最便宜的读法是把电感和电容组成 LC 谐振回路,测谐振频率。f = 1/(2π√(LC)),金属靠近时 L 下降,f 上升。比如 L = 100μH、C = 100nF,谐振频率约 50.3kHz;金属靠近让 L 掉 5%,f 就升到约 51.6kHz,变化 1.3kHz,用 MCU 定时器完全可以测出来。

这种方法的优点是电路极简,一个电感和一个电容加一个比较器或者直接用 MCU 的模拟比较器就能起振;缺点是频率变化和距离不是线性关系,近距离时灵敏度高、远距离时几乎没反应,而且温度会让电容和电感都漂,需要软件做温度补偿或者定期自校准。

电桥法是把电感放在交流电桥的一臂,用交流激励,测桥臂不平衡电压的幅度。好处是线性度好、可以做得很精密;坏处是需要一路稳定的交流激励,还要同步解调,模拟前端成本高。时间常数法是测 L/R 的充放电时间,简单但精度一般,容易受线圈电阻温漂影响——铜的电阻温度系数是 0.4%/℃,温度升 25℃ 电阻就变 10%,时间常数直接漂 10%,所以这个方法我只在温度稳定的场合用。

下面这张表是三种读法的对比:

读法电路复杂度线性度温漂敏感度适合场景
LC 谐振测频低差中(可软件补偿)接近开关、金属检测
交流电桥高好低精密位移、测厚
L/R 时间常数低中高温度稳定场合、粗略检测
专用电感数字转换器中好低需要直接读电感值的场合

4.3 实操:LC 振荡加频率计数做金属接近检测

场景:在一条模拟产线上检测工件是否到位,检测距离 8mm,工件是铁质,环境有油污和切削液,要求响应时间小于 10ms。

第一步选线圈。检测距离大约等于线圈半径,8mm 距离需要一个内径 6 到 8mm、绕 30 到 50 匝的线圈。我用直径 0.2mm 漆包线在 8mm 骨架上绕 40 匝,实测电感约 120μH,配 100nF 电容,谐振频率约 46kHz。电感量和匝数平方成正比,绕的时候尽量整齐,松紧不均会让 Q 值下降。

第二步搭振荡。用一只三极管或者用 MCU 内部的模拟比较器加正反馈就能起振,输出是方波,幅度接近电源电压。这里有个关键细节:振荡幅度要限幅,否则金属靠近时 Q 值下降会导致停振,读数直接失效。限幅可以用背靠背二极管钳位,或者用比较器加迟滞。

第三步测频率。用 MCU 的定时器输入捕获测周期,比固定闸门计数法分辨率高得多。固定闸门 100ms 计数,46kHz 只有 4600 个计数,±1 计数就是 0.02%;而测周期法,46kHz 的周期是 21.7μs,用 1MHz 计数能数到 21 个计数,分辨率同样有限。更好的办法是用定时器的预分频把计数时钟提到 10MHz 甚至更高,或者用多次周期平均。

第四步标定。空载时记录频率 f0,工件到位时记录 f1,取中值作为判据阈值,并留 5% 的迟滞防止抖动。我实测下来,8mm 处频率变化约 600Hz,迟滞取 200Hz,误判率很低。

/* LC 谐振测频:周期捕获 + 中值 + 迟滞判断 */ #define HYST_HZ 200 #define N_CAP 7 static uint32_t period_buf[N_CAP]; static uint8_t pidx = 0; static uint8_t obj_present = 0; float get_freq_hz(void) { /* 定时器输入捕获已把周期值填入 period_buf */ uint32_t tmp[N_CAP]; memcpy(tmp, period_buf, sizeof(tmp)); for (int i = 1; i < N_CAP; i++) { /* 插入排序取中值 */ uint32_t k = tmp[i]; int j = i - 1; while (j >= 0 && tmp[j] > k) { tmp[j + 1] = tmp[j]; j--; } tmp[j + 1] = k; } uint32_t p = tmp[N_CAP / 2]; return (p > 0) ? (1000000.0f / (float)p) : 0.0f; /* 计数时钟 1MHz */ } void metal_detect_task(void) { float f = get_freq_hz(); if (!obj_present && f > F0_HZ + HYST_HZ) { obj_present = 1; } else if (obj_present && f < F0_HZ - HYST_HZ) { obj_present = 0; } }

4.4 电感式机制的注意事项与现场经验

第一条,线圈的 Q 值决定一切。Q 值低,谐振峰就宽,频率变化被"抹平",灵敏度上不去。提高 Q 值的办法是加粗线径、减少匝间电容、用高频损耗小的骨架材料。我试过同样匝数,密绕和间绕的 Q 值能差 20%,检测距离差 1mm。

第二条,温度补偿必须有。铜线电阻随温度变,电容的介电常数也随温度变,谐振频率会整体平移。简单做法是开机时或者每隔一段时间做一次空载自校准,把当前频率当基线;讲究一点的做法是加一路温度传感器,按实测的温漂曲线做补偿。我在一个常温车间用过纯自校准方案,零点漂移控制在 ±0.3% 以内,够用。

第三条,检测距离和目标材料强相关。同一个线圈,检测铁能到 10mm,检测不锈钢只有 5mm,检测铝可能只有 4mm 而且频率变化方向还不一样。产品说明书上写的"检测距离"永远是针对标准铁片的,实际项目必须拿真实工件重新标定。

第四条,相邻线圈要拉开距离或者分时工作。两个线圈靠太近,磁场互相耦合成一个"大线圈",两个通道的读数都不对。间距至少取线圈直径的 1.5 倍,做不到就分时轮流激励,中间留 1ms 以上的间隔。

5. 三种机制横向对比与选型方法

5.1 关键维度对比表

选型时我一般会拉一张表,把几个关键维度摆一起看,比拍脑袋靠谱得多:

维度电阻式电容式电感式
典型信号变化量0.1%~100%0.5%~200%(相对底容)0.5%~20%
前端成本极低低到中中
抗油污灰尘中(取决于封装)差(表面污染影响大)极好
抗水汽结露中差好
抗电磁干扰中(差分后好)中好(本身是磁场)
功耗低中(需要周期性激励)中高(持续振荡)
温漂中中中(可自校准)
响应速度快中(需要多次积分)快
典型应用测温、称重、压力触摸、液位、接近金属检测、位移、转速

5.2 选型时的决策顺序

我的决策顺序是这样的:先问环境里有什么污染,再问需要多高精度,最后问成本能压到多少。

如果现场有油、有粉尘、有切削液,电容式基本可以排除了,除非你把传感器完全密封在结构件里,但那又失去了成本和安装优势。这时候优先看电感式,如果是检测金属,电感式几乎是唯一解;如果非金属,就退回到电阻式加机械结构,比如用浮球带动电位器、用波纹管加应变片。

如果环境干净、精度要求高、要非接触,电容式是首选,比如液位、触摸、微小位移。如果精度要求极高且允许接触,电阻式里选高精度 RTD 或者应变片,配合比例法采样,能做到 0.01% 级别。

成本这条线要算总账。电容式的芯片可能比电阻式贵几块钱,但如果电阻式方案需要加机械结构、需要定期更换磨损件,全生命周期成本反而更高。我见过一个项目为了省 2 块钱用碳膜电位器做角度检测,结果现场一年换三次,售后成本几千块。

5.3 混合与冗余:把两种机制叠起来用

实际项目里,单一机制经常不够。比如一个智能水表,既要用电阻式或者电容式测水流量,又要用电容式或者电感式做防拆检测;再比如工业阀门,既要电感式测阀位,又要电阻式测温度做补偿。

混合方案的设计原则是让两种机制的失效模式不相关。电容式怕水,电感式不怕水但怕附近有铁;如果两个都用,一个因为水膜误触发时另一个还能正常工作,用"与"逻辑输出,可靠性就上来了。反之,如果两个机制都依赖同一个 ADC 基准或者同一路电源,那就是伪冗余,电源一挂两个一起挂。

还有一种用法是分工:用电容式做粗定位,快速判断"有东西靠近了",唤醒系统后再用电感式做精确认,确认是不是金属工件。这样平均功耗能压得很低,适合电池供电的场合。

6. 常见问题与排查实录

6.1 现象与原因速查表

现象可能原因排查动作
ADC 读数持续跳动几十个码电源纹波、地线环路、缺少 RC 滤波示波器看基准和输入端纹波,加 RC 与地平面
读数随温度整体漂移分压电阻温漂、激励源温漂、接触电势换低温漂电阻,改比例法采样
触摸按键无故触发结露、走线耦合、基线跟踪过快检查表面水膜,加三防漆,放慢基线速率
液位计满量程误差大介电常数变化、边缘效应、容器壁厚不均加参考电极做比值,重新标定分段线性
电感接近开关检测距离变短线圈 Q 值下降、温度漂、目标材料不符测谐振峰,做空载自校准,拿真实工件重标
电感式通道之间互相干扰线圈磁耦合拉开间距或分时激励
上电后前几秒读数异常电容未放电、基准未稳定、自校准未完成加上电延时和放电流程,等待基准稳定

6.2 三个典型问题的复盘

第一个是电阻式测温的"幽灵漂移"。某现场设备用的铂电阻,夏天下午读数总是偏高 0.8℃。一开始怀疑传感器,换了三根都没用;后来怀疑 ADC,换了一片还是一样。最后用万用表量分压电阻的实际阻值,发现它在高温下比标称值低了 0.4%,查器件手册才发现用的是 100ppm/℃ 的普通厚膜电阻,机箱内温度比外面高 25℃,正好对应 0.25% 的漂移。换成 25ppm/℃ 的薄膜电阻后问题消失。这件事之后,我所有高精度分压的上臂电阻一律用低温漂型号。

第二个是电容式液位的"随缘报警"。设备在南方梅雨季频繁报满液位,拆开看电路板上一层次水膜。原因是传感器焊盘周围没有做阻焊开窗控制,水汽在焊盘边缘凝结成连续水膜,把两根电极短接了一部分。对策是把焊盘改成指状交错结构、加三防漆、软件里把确认时间从 200ms 拉长到 2s,三管齐下才彻底解决。

第三个是电感式接近开关的"冬天失灵"。北方客户反馈冬季检测距离明显变短,有时直接不动作。实测发现 LC 回路的电容用的是普通陶瓷电容,温度系数大,低温下容量掉了 8%,谐振频率整体上移,正好跑出了软件的自校准窗口。换成温度稳定的电容类型,并把自校准范围放宽到 ±20%,问题解决。

6.3 我个人的几条硬经验

模拟前端这件事,布线的时间永远比写代码的时间值钱。我现在的习惯是,画板前先把传感器到前端的路径在纸上画一遍,标出每一段多长、附近有什么信号、下面有没有地平面,画完再动 PCB。这一小时能省掉后面一周的调试。

标定流程要写进产品流程,不要靠人记。三种机制都需要标定,电阻式标零点满度,电容式标基线和灵敏度,电感式标空载频率和判据阈值。这些如果只写在某个人的笔记本里,换个人接手就得从头摸。我现在一律把标定做成串口命令或者上位机工具,参数存进 EEPROM,带版本号。

先怀疑硬件,再怀疑软件,最后才怀疑传感器本身。传感器是标准件,坏的概率最低;电源、地线、走线、连接器接触电阻,这些才是问题高发区。我踩过的坑里,至少七成最后查出来是硬件连接或者电源问题,而不是传感器或者算法。

给每种机制留一个"原始数据口"。调电阻式留原始 ADC 码值,调电容式留充电计数值,调电感式留周期计数值,通过串口打出来。别一上来就做工程量换算,原始值才能看出噪声形态和干扰规律。这个习惯帮我省下的时间,比任何调试技巧都多。

温度补偿别偷懒用固定系数。三种机制的温漂都不是纯线性的,用一阶系数补偿,在常温附近能糊弄,一拉宽温区就露馅。要么做分段线性,要么老老实实做多点标定拟合曲线,尤其是要过 -20℃ 到 60℃ 这种工业温区的产品。

最后一点是关于文档的:每种传感机制的电路参数、标定方法、判定阈值、异常处理策略,我在项目里都会单独写一页纸,附上实测波形和标定数据。不是为了交差,是因为半年后自己回头看,没有这页纸,很多东西真的想不起来当时为什么取那个电阻值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 16:24:31

Inner-IoU损失函数:目标检测边界框回归新突破

1. 项目概述&#xff1a;Inner-IoU如何革新目标检测目标检测领域最近迎来了一项重要突破——Inner-IoU损失函数的提出。这个创新点直接解决了传统IoU&#xff08;Intersection over Union&#xff09;在边界框回归中的固有缺陷。作为一名长期从事计算机视觉研究的工程师&#x…

作者头像 李华
网站建设 2026/10/29 16:24:31

基于Spark的旅游推荐系统设计与实现

1. 项目概述&#xff1a;基于Spark的旅游推荐系统全栈实现这个项目是一个融合了大数据处理、机器学习和Web开发的综合性系统&#xff0c;核心目标是通过分析用户行为和景点特征&#xff0c;为旅行者提供个性化推荐。作为一名长期从事推荐系统开发的工程师&#xff0c;我在实际业…

作者头像 李华
网站建设 2026/10/29 16:24:24

从技能盘点开始,搭建你的个人技能地图与速成体系

很多人把“skills”理解成简历上那一栏“技能特长”&#xff0c;好像写几个软件名、几句英文水平描述就交代了。但真正上手做过项目、带过团队、或者自己折腾过一点事情的人都会明白&#xff0c;技能不是一个名词清单&#xff0c;它是你解决问题的底层操作系统。这个项目标题就…

作者头像 李华
网站建设 2026/10/29 16:24:22

智能体开发全流程:从框架选型到工程实践

1. 智能体开发全景解析&#xff1a;从概念到工程实践智能体&#xff08;Agent&#xff09;开发正在成为AI领域最炙手可热的技术方向。不同于传统程序开发&#xff0c;智能体具备自主感知、决策和执行能力&#xff0c;能够动态适应环境变化。我在金融、医疗和智能制造等多个领域…

作者头像 李华
网站建设 2026/10/29 16:23:43

数组乘积问题:前缀与后缀乘积的O(n)解法

1. 问题背景与需求分析 今天要解决的是一个看似简单但暗藏玄机的数组操作问题&#xff1a;给定一个整数数组nums&#xff0c;返回一个数组answer&#xff0c;其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目要求不能使用除法&#xff0c;且在O(n)时间复杂度内完成…

作者头像 李华
网站建设 2026/10/29 16:23:40

CTF竞赛Misc挑战解析:文件隐写与编码破解实战

1. 项目概述&#xff1a;CTF竞赛中的Misc挑战解析"攻防世界Misc【4-2】"是网络安全竞赛中典型的杂项(Miscellaneous)题型&#xff0c;这类题目往往考察参赛者的综合技能&#xff0c;包括文件分析、隐写术、编码转换、流量分析等非传统攻防技术。作为CTF竞赛中最具趣味…

作者头像 李华