
1. 从一次温度采集翻车说起为什么要做多通道差分热电偶采集去年帮一个做小型热处理炉的朋友调一套温度监控炉膛里布了6支K型热电偶分别测炉膛中心、边缘、进料口、出料口、底部和顶部。他一开始图省事用6路单端输入直接接到某款开发板的ADC引脚上结果数据跳得没法看同一时刻相邻两支热电偶读数能差30多度炉子稳定保温时读数还在±15度范围内乱飘。后来换成多通道切换加差分放大的方案同样的硬件条件波动直接压到±1.5度以内。这个经历基本就是“基于多通道切换与差分放大的热电偶信号采集系统设计”这个题目的现实来源。热电偶输出的信号极其微弱K型在室温附近灵敏度只有约41μV/℃冷端和热端温差100℃时输出也就4mV出头。这么小的信号单端输入方式下任何一点地电位差、共模干扰、走线耦合都会把它淹没。多通道切换解决的是“多路复用、成本可控”的问题差分放大解决的是“从噪声里把有效信号捞出来”的问题ADC则负责把模拟量变成能算的数字量。三者缺一不可。这套系统适合谁参考做工业温度巡检的、做实验室多路测温的、做烤箱/回流焊/退火炉温控的、做电池包温度监测的甚至做3D打印机热端多测点验证的都能直接套用。前提是你得接受一个现实热电偶采集从来不是“接上就能用”的东西它是一套需要认真对待冷端补偿、共模抑制、通道隔离和数字滤波的系统工程。下面我按实际做项目的顺序把整套设计思路、关键参数计算、实操步骤和踩过的坑全部摊开讲。2. 整体方案怎么定多通道切换加差分放大的架构拆解2.1 为什么不能每路配一个放大器先算一笔账。假设做16通道K型热电偶采集如果每通道独立配一颗仪表放大器加一颗高精度ADC仪表放大器按每颗15元、ADC按每颗20元算光模拟前端就560元还不算基准源、隔离和PCB面积。而用多通道模拟开关做切换一片16选1的开关芯片几块钱后面共用一套差分放大和ADC成本能压到原来的三分之一甚至更低。但多通道切换不是没有代价。模拟开关本身有导通电阻典型值几十到几百欧姆而且这个电阻会随温度变化。热电偶源阻抗很低通常几欧姆到几十欧姆开关导通电阻和它串联后会与后级放大器的输入阻抗形成分压。如果后级输入阻抗不够高就会引入增益误差。所以选型时模拟开关的导通电阻要小且平坦后级差分放大电路的输入阻抗要足够高通常要求至少是开关导通电阻的1000倍以上。另一个代价是切换带来的建立时间问题。模拟开关从一路切到另一路后级放大器和ADC采样保持电容都需要时间稳定。如果切换后立刻采样前一通道的残留电荷会串到当前通道造成通道间串扰。所以切换后必须留足够的建立时间这个时间由开关导通电阻、后级输入电容和ADC采样电容共同决定后面会给出具体估算方法。2.2 差分放大在热电偶场景里的真实作用很多人以为差分放大只是为了放大信号其实在热电偶采集里它的首要作用是抑制共模干扰。热电偶的两根线很长从炉膛拉到采集板可能一两米这段线上会耦合进各种共模噪声比如附近电机的开关噪声、加热器的工频干扰。单端输入时这些共模噪声会直接叠加在信号上差分输入时只要两根线耦合到的噪声基本一致差分放大器就能把它减掉。衡量这个能力的指标是共模抑制比CMRR。一个设计良好的差分放大电路CMRR能做到80dB以上意味着100mV的共模干扰在输出端只等效为10μV对41μV/℃的K型热电偶来说相当于0.24℃的误差可以接受。如果CMRR只有60dB同样的干扰就等效成2.4℃这就没法用了。差分放大还有第二个作用消除地电位差。多路热电偶如果分布在不同位置各自的地参考点之间可能有几十毫伏的电位差。单端输入会把这个电位差当成信号差分输入则能有效抑制。这也是为什么工业现场的热电偶采集几乎清一色用差分输入。2.3 整体信号链的确定综合成本和性能我最终确定的信号链是多路热电偶 → 模拟开关切换 → 差分放大 → 低通滤波 → ADC → 单片机数字滤波与冷端补偿。冷端补偿单独用一颗数字温度传感器贴在接线端子附近测冷端温度再根据热电偶分度表反查热端温度。这个架构里模拟开关负责通道选择差分放大负责增益和共模抑制低通滤波负责抗混叠和降噪ADC负责量化单片机负责冷端补偿、线性化和数字滤波。每一级都有明确的职责不能互相替代。比如有人想省掉低通滤波直接靠ADC内部滤波结果高频噪声混叠进有用频段数字滤波再怎么处理也救不回来。3. 核心器件选型模拟开关、运放、ADC怎么挑3.1 模拟开关的选型要点模拟开关是整条链路的入口选不好后面全白搭。关键参数有四个导通电阻、导通电阻平坦度、通道间串扰、切换时间。导通电阻要小建议选50Ω以下的。导通电阻平坦度更重要它指的是导通电阻随输入电压变化而变化的程度。如果平坦度差热电偶信号幅度变化时开关上的压降也跟着变就会引入非线性误差。对于K型热电偶满量程约41mV的信号平坦度最好控制在几欧姆以内。通道间串扰在热电偶场景里要特别关注因为相邻通道可能测的是温差很大的两个点。串扰指标通常用dB表示建议选-80dB以下的。切换时间决定了你最快能多快轮询一遍所有通道如果做16通道巡检每通道切换加建立加采样按1ms算一轮16ms每秒能扫60多轮对大多数温度监控足够了。我常用的是CD4051系列和ADG系列。CD4051便宜但导通电阻大典型100Ω以上适合对精度要求不高的场合ADG1608导通电阻只有几欧姆平坦度也好适合高精度采集。选型时还要注意开关的供电电压范围要覆盖热电偶信号的共模范围。3.2 差分放大器的选型与计算差分放大可以用分立运放搭也可以用集成仪表放大器。分立方案成本低但电阻匹配要求高集成方案贵但省心。我两种都用过下面分别说。分立方案用一颗四运放比如LM324或更好的OPA4374搭经典的三运放差分放大电路。LM324便宜但失调电压大典型2mV对热电偶来说2mV相当于近50℃误差必须加调零电路。OPA4374失调电压只有150μV等效约3.6℃还是偏大。所以分立方案要选低失调、低温漂的运放比如OPA2333失调10μV温漂0.05μV/℃但价格上去了。集成仪表放大器比如AD620、INA128失调和温漂都控制得很好增益用一颗电阻设定CMRR也高。AD620增益公式是G 1 49.4kΩ/Rg。假设热电偶满量程41mVADC参考电压2.5V想要充分利用ADC量程增益设为50左右比较合适对应Rg约1kΩ。这样41mV放大后是2.05V接近满量程。增益不能设太大否则热电偶偶尔超量程会饱和也不能太小否则小信号分辨率不够。我的经验是让满量程信号放大到ADC参考电压的70%到90%之间留一点余量。3.3 ADC的选型与基准源ADC选型看四个指标分辨率、采样率、输入类型、接口。热电偶信号变化慢采样率要求不高每秒几十到几百次足够。分辨率建议至少16位因为K型热电偶41μV/℃16位ADC在2.5V参考下LSB约38μV刚好对应约1℃加上放大50倍后等效分辨率能到0.02℃绰绰有余。输入类型要选差分输入或者用单端输入但前端已经差分转单端。现在很多单片机内置16位差分ADC比如某些型号的Σ-Δ ADC直接省掉外置ADC芯片。如果外置ADS1118、ADS1220这类都是热电偶采集的常客内置PGA和基准用起来很方便。基准源的稳定性直接决定测量精度。热电偶采集对基准的温漂要求很高建议选10ppm/℃以内的。如果ADC内置基准温漂大就外接一颗REF5025或类似的高精度基准。基准的噪声也要低否则会直接调制到测量结果上。4. 硬件电路实操从原理图到PCB的关键细节4.1 模拟开关部分的电路设计模拟开关的输入端要接热电偶输出端接差分放大器。每路热电偶的正负端分别接到开关的两个通道或者用两个开关芯片分别切换正负端。前者节省芯片但要求开关支持差分切换后者成本高但布局灵活。实际布线时热电偶输入走线要尽量短最好用双绞线或屏蔽线引入。屏蔽层单点接地接在采集板的模拟地。开关芯片的电源引脚要加0.1μF和10μF去耦电容紧贴芯片放置。控制引脚如果走线长要加串联电阻抑制振铃。一个容易忽略的点是开关的关断泄漏电流。关断通道的泄漏电流会通过开关内部寄生路径耦合到导通通道造成误差。选型时关断泄漏电流要小nA级别最好。如果泄漏电流偏大可以在开关输出端加一个对地的泄放电阻但要注意这个电阻不能太小否则会拉低信号。4.2 差分放大电路的参数计算与布局以AD620为例增益电阻Rg的计算前面说了。反馈回路要加一个小电容与增益电阻并联构成低通滤波。截止频率f 1/(2πRgC)。假设Rg1kΩ想要截止频率100HzC约1.6μF。这个电容能滤掉一部分高频噪声但也会影响建立时间切换通道后要等更久才能稳定。布局上增益电阻要尽量靠近AD620的引脚走线对称。输入端的两个电阻如果有要匹配误差控制在0.1%以内。电源引脚去耦电容同样不能省。AD620的REF引脚决定输出零点可以接基准源或模拟地接基准源时要注意基准的驱动能力。如果用工频干扰特别严重的场合可以在差分输入前加一个共模扼流圈或者用屏蔽双绞线。我做过一个加热炉项目加热器是可控硅调功的干扰很大最后在每路热电偶输入端加了RC滤波100Ω0.1μF配合差分放大才把噪声压下去。4.3 ADC与基准源的连接ADC的模拟输入要接差分放大器的输出走线尽量短。如果ADC和放大器距离远要用屏蔽线或加缓冲。基准源的输出要加滤波电容通常10μF钽电容并联0.1μF陶瓷电容。基准源的输入电源也要干净最好单独用LDO供电。ADC的数字接口走线要远离模拟部分避免数字噪声耦合。如果ADC和单片机在同一块板上模拟地和数字地要分开最后在ADC下方单点连接。这个细节很多新手会忽略结果数字噪声串进模拟通道读数跳得厉害。5. 软件实现冷端补偿、数字滤波与通道轮询5.1 冷端补偿的两种做法冷端补偿是热电偶采集绕不开的环节。热电偶测的是热端和冷端的温差要得到热端绝对温度必须知道冷端温度。做法有两种一是用数字温度传感器如DS18B20、LM75测接线端子处的温度二是用热敏电阻加ADC测。数字传感器方便直接读温度值精度通常±0.5℃以内。热敏电阻便宜但需要标定精度取决于热敏电阻和分压电阻的精度。我一般用数字传感器贴在接线端子旁边注意要和端子热耦合好否则测的不是真正的冷端温度。得到冷端温度后查K型热电偶分度表找到冷端温度对应的热电动势加到实测热电动势上再反查分度表得到热端温度。分度表可以用数组存也可以用多项式拟合。多项式拟合节省存储空间但计算量大一点。我通常用分段线性插值精度和速度都够用。5.2 数字滤波的实用方法模拟滤波之后数字滤波再补一刀。最简单的是滑动平均取N次采样求平均。N越大越平滑但响应越慢。温度变化慢N取16或32都行。滑动平均对周期性干扰抑制有限如果工频干扰没滤干净可以用梳状滤波或陷波器。中值滤波对脉冲干扰特别有效。比如开关切换瞬间的尖峰用中值滤波能直接剔除。我通常先中值滤波再滑动平均效果比单一滤波好。如果单片机资源够可以用一阶IIR低通滤波计算量小效果也不错。公式是y[n] αx[n] (1-α)y[n-1]α取0.1到0.3之间。5.3 通道轮询与建立时间管理多通道轮询的节奏很重要。切换通道后要等模拟开关和放大器稳定再启动ADC采样。建立时间包括开关切换时间、放大器建立时间、ADC采样保持时间。开关切换时间查手册通常几百纳秒到几微秒。放大器建立时间取决于增益和负载AD620在增益50时建立到0.01%约几十微秒。ADC采样保持时间查手册。实际编程时我通常切换通道后延时1ms再采样这个时间对大多数应用足够。如果追求速度可以实测建立时间取1.5倍余量。采样完成后先做一次丢弃因为第一次采样可能不准再连续采几次取平均。6. 常见问题与排查技巧实录6.1 读数跳动大怎么办读数跳动是最常见的问题。排查顺序先看电源和基准是否干净用示波器看基准输出有没有纹波再看差分放大器输入端的共模噪声如果共模噪声大检查屏蔽和接地然后看模拟开关切换后是否留足建立时间最后看数字滤波参数是否合适。我遇到过一次读数跳动最后发现是模拟开关的控制信号和ADC采样时序冲突切换瞬间ADC正好在采样导致串扰。调整时序后问题解决。所以软件时序一定要和硬件建立时间匹配。6.2 通道间串扰怎么解决串扰表现为某通道读数受相邻通道影响。解决方法增加切换后的建立时间在开关输出端加泄放电阻降低模拟开关的导通电阻如果还不行考虑用两个开关芯片分别切换正负端或者用光继电器做通道隔离。6.3 温度偏高或偏低怎么校准如果所有通道读数系统性偏高或偏低先查冷端补偿。冷端传感器位置不对、热耦合不好、或者分度表用错都会导致系统偏差。可以用冰水混合物做零点校准用沸水做满量程校准注意气压影响沸点。校准后如果还有偏差查放大器和ADC的增益误差必要时做两点校准。6.4 常见问题速查表问题现象可能原因排查方法解决措施读数跳动大电源纹波、共模干扰、建立时间不足示波器看基准和输入加滤波、改屏蔽、增延时通道间串扰开关泄漏、建立时间短切换单通道看其他通道加泄放电阻、增延时系统性偏差冷端补偿错误、增益误差冰水校准修正冷端、两点校准非线性误差开关导通电阻平坦度差不同温度点校准换低平坦度开关高频噪声大缺少抗混叠滤波看ADC输入频谱加RC或LC滤波7. 实测数据与经验总结这套方案我在三个项目里实际用过一个16通道热处理炉温巡检一个8通道电池包温度监测一个4通道3D打印机热端验证。热处理炉项目精度做到±1℃电池包项目因为环境温度变化大做到±1.5℃3D打印机项目对精度要求不高±2℃足够。实测下来最影响精度的环节是冷端补偿和基准源。冷端补偿做不好系统偏差能到5℃以上。基准源温漂大环境温度变化10℃就能带来0.5℃以上的读数漂移。所以这两个地方不能省钱。另一个体会是模拟开关的通道数不是越多越好。通道越多寄生电容越大建立时间越长串扰也越难控制。如果做32通道以上建议分两组每组16通道用两个开关芯片分别接两个差分放大器再轮流采样。这样虽然成本高一点但性能稳得多。最后分享一个校准小技巧如果没有标准温度源可以用高精度数字温度计和热电偶放在同一恒温环境里比对做多点校准。校准点至少覆盖你实际使用的温度范围的低、中、高三个点线性插值修正。这个方法虽然土但实用。