ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

高共模差分输入下±10V ADC前端电路设计:从原理到实战

高共模差分输入下±10V ADC前端电路设计:从原理到实战 在工业信号采集里摸爬滚打久了你会发现“±10V ADC 输入电路”本身不难“差分输入”也不算难真正让人头疼的往往是后面那半句——“高共模差分输入电压”。PLC模拟量模块、伺服驱动器反馈、设备状态监测、传感器长线传输这些场景里信号源的地和你电路板的地往往不是一个地二者之间可能压着十几伏甚至几十伏的电位差。此时如果你还用普通ADC输入引脚直接怼上去轻则读数一路漂重则上电瞬间芯片直接报销。以我自己的经验来说这个坑绝大多数人第一次做都会踩而且踩进去之后光看ADC寄存器数值往往完全看不出问题出在哪儿。这篇文章会以±10V输入、允许较高共模电压这一设计目标为主线把前端信号调理电路从拓扑选择、参数计算、保护设计到PCB布局和实际调试全部串一遍。适合正在做工业采集板、传感器接口电路、或者想把MCU自带ADC用得更稳的工程师参考。我尽量用大白话把原理讲透把关键公式给到再附上我实测踩坑的记录照着做至少能帮你少走两个月弯路。1. 先搞清楚这块电路的“坑”到底在哪里1.1 共模电压不是信号却是电路的生死线很多人刚接触“差分输入”的时候会天然认为既然是差分那就是看两条线之间的差值地电平不一样应该无所谓。这句话只对了一半。对的是原理层面——差分放大器的确只放大两条输入线的差值不对的是现实层面——任何放大器、任何ADC其内部输入引脚到芯片地之间的电压都绝不允许超过数据手册规定的绝对最大值。一旦超出输入级PN结会正向导通芯片轻则误动作重则永久损坏。打个比方吧。差分放大器像一座天秤它关心的确实是左右托盘上重量的差值。但这座天秤本身放置的楼板要是晃了甚至楼板直接塌了那天秤量得再准也没意义。这里说的“楼板”就是共模电压。对于±10V输入电路如果信号源的地与本地系统地之间有20V电位差那么即便差分信号只有0V两条输入线对本地地的实际电压也可能是10V和30V或者-10V和10V。这类电压绝对值远超3.3V或5V ADC的输入范围如果缺少前端处理ADC显然扛不住。所以做“高共模差分输入”电路的第一性原理是先把两条线上的绝对电压降到ADC和运放能承受的范围再去处理差分信号或者用隔离方式让本地系统与远端彻底断开地回路。理解了这一点后面所有拓扑和参数设计都顺理成章。1.2 ±10V信号的典型场景和设计目标±10V是工业模拟量信号的事实标准之一比如可编程逻辑控制器的模拟量输入通道、伺服驱动器的速度/转矩指令、变频器的模拟输出、压力变送器、位移传感器等都常见±10V输出。信号本身的带宽一般很窄通常几百赫兹到几千赫兹对ADC采样率要求也不算激进几百kSPS甚至几十kSPS的MCU内置ADC就够用。真正的难点在于现场环境。传感器或上一级设备常常部署在几十米甚至上百米外现场的强电设备会产生干扰两个设备的接地点之间也会存在地电位差。地电位差在正常情况下可能只有零点几伏但电机启动、大功率负载开关时瞬态地电位差可以跳到几十伏。这就要求前端电路不仅能在稳态下承受较高共模电压还要在瞬态条件下不损坏、不饱和、快速恢复。在设计目标上除了电压范围、增益精度之外你还得明确几个指标允许共模电压范围是±10V还是±20V甚至更高输入阻抗要多大低了会拉低信号源带宽要求多高是否要求隔离。这些指标直接决定了随后选运放、选拓扑也决定整个产品的成本。1.3 为什么“差分输入”不等于“随便接”很多MCU比如STM32、GD32H7内部ADC都支持差分输入模式。但请注意这个“差分”通常是在0~3.3V范围内且相对同一芯片地的差分。比如某些MCU差分ADC可以测量VP-VN但VP和VN都必须落在VSSA和VDDA之间超过一点就可能触发输入保护二极管或者采样结果彻底错误。换句话说MCU的差分输入只能消除毫伏级共模误差而完全不具备处理几十伏共模电压的能力。还有一种常见误解是我前面加个运放跟随器不就能随便接了吗也不行。普通电压跟随器的输入共模范围受其供电电压限制你给它供3.3V单电源它连0V以下的信号都处理不了更别说负电压或者十几伏的共模电压。哪怕是±15V供电的运放在特定增益配置下共模范围也不等于整个供电范围仍受内部电路结构限制。结论只有一个正确方案必须先做“共模电压压缩”再做“差分放大”。2. 三种能扛高共模的前端拓扑选型要看这几点2.1 电阻分压 仪表放大器仪表放大器是处理差分信号的传统器件例如INA128、AD620、INA826、INA333等。它的最大优势是输入端直接接信号源输入阻抗极高也不需要外部精密电阻匹配就能获得较高的共模抑制比因为三个运放结构将电阻匹配问题做到了内部。但用仪表放大器处理高共模±10V信号有一个非常容易忽略的坑它的输入共模范围受供电电压限制。以±15V供电的INA128为例它确实能处理较大的共模电压但如果你用5V或3.3V单电源给仪表放大器供电其输入共模范围往往只能到接近负电源轨或大约1V以内的区间。你把±10V信号直接接到3.3V供电的INA826上它的共模电压早就超出线性区输出直接饱和。因此采用仪表放大器方案时通常要叠加一级前端电阻分压网络把±10V差模和几十伏共模同时衰减到运放能承受的范围再由仪表放大器进行后续放大。这种组合的好处是电路简单、匹配可靠缺点是多了一组分压电阻输入阻抗和噪声性能取决于电阻取值而且仪表放大器本身成本偏高带宽也有限。2.2 差分放大器 单电源运放输出级最常见的工业做法还是用两个部分的组合前级电阻网络进行分压衰减后级用一个普通运算放大器搭成差分放大器或加法器同时完成增益调整和电平偏移。比如把±10V差模信号先通过100kΩ与10kΩ电阻分压成约±0.91V再把远端地电平的漂移同样衰减到安全范围。随后一级单运放差分放大电路将这个小信号放大并叠加一个基准电压映射到ADC量程比如0.3V~3.0V。这个方案成本极低一个双运放就能处理两个通道而且各个设计参数全部外置方便调整。它的难点在电阻匹配。标准差分放大器的共模抑制比很大程度取决于四个外部电阻的匹配精度如果用1%精度电阻整体CMRR可能只有40dB左右对几十伏共模来说根本不够看。解决办法是使用0.01%精度的薄膜电阻排或者用一个集成的差分放大器芯片比如INA143、AD8276这类把匹配电阻做进内部的器件。后者的外部电阻只需要决定增益匹配问题直接消失非常适合高共模场景。2.3 隔离运放把共模问题直接“物理隔离”当共模电压高到几百伏、或者现场抗雷击要求很苛刻又或者客户明确要求通道之间隔离时前面的分压方案就不太合适了。这时我会选择集成隔离运放比如AMC1301、ISO224这种。它们通过芯片内部的电容或变压器隔离带把模拟信号从高压侧传到低压侧两侧地之间不存在直流通路共模电压由隔离耐压指标决定。以ISO224为例它可以直接处理±12V输入信号内部自带固定增益输出范围可以根据供电调整。这类芯片用起来相当省心你不需要为共模电压范围做复杂分压计算也不需要担心地环路噪声。代价是成本高、带宽有限、每组通道占用体积大。如果项目预算充足、对通道隔离有硬性要求可以直接选这条路。2.4 方案对比速查表方案抗共模能力成本精度带宽适用场景仪表放大器前端分压较高取决于分压比和供电中高中通用工业采集通道密度要求不高分压差分放大器高取决于分压比低中高取决于电阻较高多通道低成本采集板集成隔离运放极高由隔离耐压决定高高中低需要通道隔离、高共模电压场景选型逻辑不是越贵越好而是先回答三个问题共模电压到底最高多少伏通道数量有多少有没有隔离要求如果答案分别是±30V以内、8通道以上、无隔离那第二套方案最合适如果共模电压上了100V那基本只能走隔离或再叠加高压分压器了。3. 核心设计细节决定成败的几个参数3.1 电阻匹配精度与CMRR的量化关系这一点值得单独拿出来讲。在标准单运放差分放大电路里外部电阻匹配误差会直接转换为共模误差。假设四个电阻初始精度都是δ也就是相对误差±δ那么外部电阻网络贡献的最坏情况共模抑制比近似为CMRR_res ≈ (1 G) / (4δ)其中G是差分增益δ是电阻相对误差比如1%就是0.01。如果增益G1代入1%精度电阻CMRR_res大约等于50倍也就是约34dB。34dB的CMRR意味着你输入1V共模电压输出端会额外产生约20mV的误差。如果共模电压有20V输出误差就有0.4V这对ADC满量程3.3V的系统来说是不可接受的。换成0.1%电阻CMRR能到54dB左右用0.01%高精度薄膜电阻网络CMRR约为74dB以上如果直接用内部集成电阻的差分放大器芯片外部影响基本消失整体CMRR由运放自身决定往往能做到90dB以上。所以我在做高共模电路时基本原则是能用集成差放不用分立电阻搭必须用分立电阻时至少选0.1%最好上0.01%电阻排。3.2 增益、偏移量与ADC量程的映射计算接下来是很多人一开始最懵的地方±10V怎么变成0~3.3V或者0~5V其实核心就两步先分压再平移缩放。举个例子假设我定了一个指标输入差模±10V允许共模电压±15V也就是任意输入线相对本地地的电压范围大约是-25V~25V。ADC使用3.3V供电希望输出映射到0.25V~3.05V留出上下各约0.25V的保护余量。第一步是分压。取R1R3110kΩR2R410kΩ分压比是10/(11010)0.0833。这个分压比下差模±10V被压成约±0.833V最坏共模±15V也会压成±1.25V再加上差模叠加运放输入端对地最大约±2.08V。这一数值在3.3V单电源运放可接受范围之内留有充足余量也避开了接近电源轨的非线性区域。第二步做增益与偏移。用差分放大器结构增益设为1.6那么0.833V差模被放大到1.333V。电路输出设计为Vref1.65V时对应输入0V所以输入10V时Vout 1.65 1.333 2.983V输入-10V时Vout 1.65 - 1.333 0.317V正好落在我预定的0.25V~3.05V区间里。如果你希望输出范围更饱满可以把增益提到1.8对应输出0.15V~3.15V这要看运放到轨能力和ADC参考电压精度是否允许。这个映射计算在Excel里列个表几分钟就能把不同分压比和增益组合都算完关键是别忘记把共模电压带来的叠加偏移也算进去确保运放输入引脚任意时刻都处于安全范围。3.3 前置RC滤波的截止频率怎么选ADC前端几乎都要加RC滤波作用有两个滤除高频噪声以及提供ADC采样保持电容充电所需的电荷。很多新手只想到滤波忽略后一点。RC截止频率的选择核心依据是信号带宽。工业模拟量信号本身带宽不高我把截止频率放在信号带宽的5~10倍往上比较合适。比如信号带宽1kHzRC低通截止频率放在10kHz左右既能有效衰减开关电源噪声和高频干扰又不影响有用信号。电阻R的取值还需要考虑ADC的源阻抗要求。很多MCU数据手册会给出建议源阻抗过高会导致采样误差比如STM32的ADC源阻抗建议典型值在几kΩ以下GD32H7也会有类似限制。因此我一般把串联电阻控制在1kΩ~4.7kΩ然后反推电容值。假设R3.3kΩ截止频率10kHz根据f1/(2πRC)电容约等于4.8nF取标准值4.7nF。如果采样率偏高或者走线较长会适当把截止频率放低换取更稳的采样结果。此外电容要选C0G或薄膜电容X7R在信号调理里勉强能用但高介质吸收的电容在精密采样时会造成建立时间变长导致ADC读数出现“拖着尾巴”的漂移。3.4 输入保护钳位、限流与漏电流的平衡高共模输入电路的另一大隐患是瞬态过压。现场线缆可能被外部强电搭接或者直接短路到24V、220V如果没有输入保护后级ADC和运放会在几微秒内报废。常用保护结构是“串联限流电阻双向钳位二极管到电源轨”。限流电阻一般串联在分压网络前面取值几kΩ到几十kΩ把故障时的电流限制在几毫安以内。钳位二极管选择需要特别注意漏电流指标BAT54S这种肖特基漏电流在微安级对精度影响较大低漏电场合我会选BAV199或者专用低漏电二极管常温漏电在纳安级别对高阻分压网络的影响可以忽略。还有一个细节钳位二极管钳位到的电源轨应当是后级运放的供电轨而不是ADC引脚。这样即使过压来了能量先被运放供电网络吸收避免直接冲击ADC内部保护二极管。如果你用的是宽压输入ADC或带内部钳位的产品也仍然建议在外部保留串联电阻毕竟内部保护管能承受的电流非常有限。3.5 PCB布局电源噪声与采样时钟抖动的三个要点ADC采集系统的精度不光看电路原理图PCB布局的影响往往被严重低估。围绕“规避时钟抖动与电源噪声”我总结了三个必守的布局要点。第一模拟电源和ADC参考电压要独立铺铜并且从源头单点连接。MCU的数字电源噪声、IO翻转尖峰都会通过地平面耦合进ADC采样结果。我一般会把模拟地单独画一块区域在芯片下方或电源入口处用0Ω电阻或磁珠单点连接数字地同时让模拟地面积尽可能大保证低阻抗回流路径。别把ADC参考电压走线拉到数字区域否则读数随IO状态跳动的现象会让你怀疑人生。第二采样时钟或触发信号远离模拟信号走线。MCU内部ADC的采样时刻由定时器或PWM触发这些数字信号边沿很陡如果它们与模拟输入走线平行且距离很近每次采样瞬间都会通过寄生电容耦合进噪声。布局时尽量把定时器触发信号和ADC输入通道放在PCB不同层或者隔开至少数毫米最好中间还有完整地平面隔开。第三差分输入的两条走线必须等长、贴近、对称。高共模场景下两条线的寄生电容、串联电感如果不一致共模电压就会转化成差模噪声。具体做法是走线宽度一致长度误差控制在几毫米内并且在走线两侧铺地。这样做实测下来共模噪声引起的读数波动能比随便拉线小一个数量级。4. 一个完整案例从指标到调试的记录4.1 设计指标与元器件选型去年我做了一款8通道模拟量采集板输入信号是典型的±10V工业传感器要求输入阻抗大于1MΩ允许共模电压±15VADC用MCU内置的12位SAR ADC满量程3.3V。客户现场还提出要能在电机启停时读数不出现肉眼可见的跳动。我的选型如下前端分压电阻200kΩ/18.2kΩ0.05%精度低温漂电阻排分压比约0.0834差分放大选用内部集成匹配电阻的AD8276差分放大器外部只加增益电阻输出级缓冲OPA340单电源轨到轨运放负责低阻抗驱动ADC钳位保护BAV199双二极管配合前端串联5.1kΩ限流电阻ADC采样配置MCU内部ADC采样周期设置为较长的档位源阻抗控制在推荐值以内4.2 各级电路计算分压比r 18.2/(20018.2) ≈ 0.0834±10V差模信号经过分压后是±0.834V。AD8276默认增益0.5我需要整体增益约1.6于是外部分压电阻再配合放大结构调整最终一级输出约±1.33V的差模摆幅叠加上1.65V基准后输出范围在0.32V~2.98V。共模路径的校核也很关键。如果两个输入线同时偏到15V共模分压后约1.25V叠加差模±0.83V后最大值为2.08V最小值为0.42V完全落在运放输入安全范围内。如果是-15V共模对应-1.25V加上差模后最大-0.42V、最小-2.08V。这已经低于0V了在单电源系统里是个危险信号。因此我把AD8276供电做成±2.5V双电源。这样即使输入引脚负到-2.1V仍然在共模输入范围之内不会触发保护或读数截断。如果你不想引入负电源就必须把分压比继续压低或者接受一定输入范围内的非线性这个需要根据实际指标权衡。4.3 仿真与实测数据上板之前用LTspice跑了一轮仿真重点看CMRR的影响。我设置了差模信号1kHz、幅度±10V同时叠加20V共模电压观察输出波形。理想情况下输出应完全反映差模信号不包含共模成分实际仿真中因为电阻排还有细微失配输出上出现了约12mV的50Hz纹波折合到共模抑制约64dB可以满足现场需求。焊接完测试板之后我用信号发生器加隔离变压器制造了一个可调的共模电压源实测数据如下共模电压(V)输入差模(V)实际输出(V)理论输出(V)误差(mV)001.64981.6500-0.21501.65051.65000.5-1501.64921.6500-0.815102.98232.9830-0.715-100.31810.31701.1-15102.98352.98300.5可以看到共模电压从0变到±15V时输出零漂约在±0.8mV以内折合ADC码值变化约1个LSB表现符合预期。这个数据说明分压衰减差分放大匹配电阻排的架构完全能应对题目所说的高共模差分输入场景。4.4 关键调试步骤调试的时候我先不接ADC而是用示波器直接观察运放输出。重点看三点一是共模电压改变时输出波形是否稳定二是输入差模信号阶跃时输出建立时间是否足够三是输出噪声底尤其是开关频率附近的毛刺是否被RC滤除干净。确认前端模拟电路没问题后才把输出接入MCU的ADC引脚开始读码、换算电压。这里有个特别容易踩的坑MCU的ADC在初始化阶段输出一个“未知采样值”很多人在这一步以为硬件坏了到处查运放输出。实际上这是正常现象应该在初始化完成后先做几次丢弃采样等内部电容和通道完全建立之后再看有效值。我一般在软件里配置多通道扫描时每个通道转换前先做一次无意义的预采样或者开启ADC校准功能能明显减少首读异常。5. 常见故障排查与现场经验5.1 ADC读数整体偏移或压缩如果你发现ADC读到的码值整体偏低甚至输入满量程时输出还达不到预期的上限优先检查两点一是分压电阻的精度和温漂是否达标1%电阻的增益误差会直接吃掉好几个LSB二是运放的输出驱动能力是否不足轨到轨运放接近电源轨时线性度通常会变差你要留出余量而不要把满量程设计到电源电压的最后一个毫伏。还有一种隐蔽原因是ADC参考电压漂移。很多MCU的VREF引脚对噪声非常敏感共模电压高时地平面电位被干扰牵动参考电压也会跟着波动导致采样值看似“漂”了。排查方法很简单用万用表或示波器直接测VREF引脚看它在输入共模阶跃时是否稳定。5.2 共模电压变化时数据漂移这是“高共模”电路最典型的故障现象输入差模不变只是远端设备地电位升高或降低ADC读数就跟着变。原因多半是CMRR不足。排查步骤可以按顺序来检查差分放大电阻是否精确匹配更换0.1%或0.01%电阻排检查供电电压是否因为共模电流注入而波动必要时加大电源去耦电容检查分压网络下端是否都接到了同一个模拟地避免远端地电流流过ADC参考地。实际现场还遇到过一次很奇怪的现象共模电压是市电工频50Hz测试时读数跳动稳定在一个固定范围。后来查到是示波器探头接地夹形成了地环路探头地和信号源地之间存在寄生电容人为引入了工频干扰。去掉示波器接地夹改用差分探头或隔离探头后问题消失。所以排查时也要反思你用的测试工具本身是否破坏了电路的地条件。5.3 采样值跳变、毛刺与建立时间不足ADC采样值偶尔跳到明显偏离正常范围的值大多数时候不是信号本身的问题而是建立时间不足。MCU内部ADC的采样保持电容需要从输入源抽取电荷如果外部源阻抗太高采样周期又太短电容来不及稳定就被保持结果自然随机。解决办法有两条软件上增大采样周期配置硬件上降低外部电阻或增加前级缓冲运放。工业采集板我一般都会加一级低阻抗输出缓冲再用几kΩ以内的电阻连接ADC引脚这样能覆盖绝大多数场景。另外RC滤波电容也不宜选过大的值否则建立时间会被拖长。比如你为了滤波把电容加到0.1μF再配上4.7kΩ电阻时间常接近0.5ms而ADC单次采样周期可能只有几微秒根本来不及建立。滤了半天波反而制造了新的误差来源。我的习惯是RC滤波的截止频率和MCU采样周期之间留至少10倍的间隔必要时通过软件触发定时在采样前多留一小段稳定时间。5.4 一线工程师的几点体会做了这么多采集板最大的体会是高共模输入电路的设计功夫七成在前期指标定义和器件选型三成在PCB布局真正花在焊接调试上的时间反而是最少的。如果你发现自己在调试阶段反复改电路大概率是前期忽略了一些边界条件比如共模范围算错了、保护钳位位置放错了、地平面处理马虎了。还有一个小技巧值得分享在首版样机上我会刻意把分压电阻位做成1206封装的可替换电阻方便在测试时快速换不同阻值验证分压比和增益的裕量。量产版本再改成小封装高精度电阻控制体积。这个做法在项目初期能帮你省下大量反复改板时间而且测试数据会更有说服力因为你真的试过了不同参数下的表现而不是只在仿真软件里“看着没问题”。如果你正准备设计自己的±10V高共模输入通道建议先照着文章第三节的参数计算方式列一个指标表再用第四节的分压思路搭个面包板验证一遍。等你完成了这轮从计算到实测的闭环再回头看这类电路的设计就会清楚每个电阻、每个电容为什么出现在那里那种感觉和直接抄参考电路是完全不一样的。
返回列表