ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

高共模±10V模拟量输入的ADC前端电路设计与工程实践

高共模±10V模拟量输入的ADC前端电路设计与工程实践 干这行的同行应该都有同感±10V模拟量输入是PLC、伺服驱动器、过程仪表、测控板卡里最常见的接口之一但真正动手设计的时候麻烦往往不出在信号本身而出在“地”上。输入端子对本地系统地之间飘着几十伏甚至上百伏的共模电位而你手里那颗ADC的绝对输入范围可能只有0~3.3V差分输入模式下的共模范围更是被死死压在电源轨附近。把高共模电压和±10V差模信号同时处理好才是前端电路设计的核心难点。这篇文章我就以“±10V输入、高共模差分输入电压”这个场景为切入点把我实际调过的一块数据采集板的前端设计思路全部拆开讲包括拓扑选择、参数计算、PCB布局和调试中踩过的坑适合正在做模拟量采集、仪表放大器选型、MCU内置ADC前端电路的硬件工程师参考。内容不涉及某个芯片的具体开发流程重点放在前端信号链路的工程化处理上掌握了思路换哪家芯片都能用。1. 为什么说高共模差分输入是ADC前端的硬骨头1.1 先把概念说清楚差模、共模和输入范围先花点时间把基础术语对齐不然后面算参数时容易绕晕。差模信号就是两个输入端子之间真正有用的电压差。对±10V接口来说差模量就是正端减负端的电压范围是-10V到10V。这是ADC最终要忠实还原的东西。共模电压则是两个输入端子相对本地参考地同时存在的那部分电压。举个例子一个浮空的传感器输出正端对地是12V负端对地是2V那么差模是10V共模是7V。计算方式是两个端子对地电压的平均值。很多人在设计时只盯着差模把±10V算得很欢却忽略了两个输入端对地各自还有多少伏。普通MCU内置ADC如果工作在单端模式下输入引脚对地电压可能只在0~3.3V或者0~5V内才保证线性超出后读数开始偏再高一点就可能直接烧引脚。即使是支持差分输入的工业级Σ-Δ ADC比如ADS1256、AD7768这类它们的绝对输入范围通常也就是0~5V共模范围也基本在电源轨里面。你把几十伏的共模电压直接怼上去ADC已经不叫测量了叫引脚保护测试。1.2 ±10V信号从哪来高共模又是怎么出现的±10V模拟量输入在工业现场几乎是标配接口。变频器输出频率给定、伺服驱动器速度指令、过程仪表的4-20mA经过采样电阻转电压后的信号、执行机构位置反馈这些设备大量使用±10V作为标准模拟信号。真正让电路变复杂的是共模的来源。现场设备经常和采集板卡使用不同的供电系统比如驱动器的控制地和MCU板卡的模拟地之间存在电位差。更典型的情况是高压侧的电流/电压检测输入了两根线但这两根线相对采集端的系统地可能带有几十伏甚至上百伏的偏置。我曾经调试过一块用于伺服驱动器母线电压监测和电枢电压采集的板卡输入差模只有±10V但输入回路相对MCU模拟地的共模电压在正负30V之间波动。如果用普通运放直接跟随运放输入级早就因为超出共模输入范围而饱和输出根本反映不了真实的差模信号。1.3 设计目标把高共模安全降下来同时保住差模精度前端电路的核心任务可以拆成三件事第一将共模电压从几十伏衰减到ADC能够容忍的绝对电压范围内。这一步处理不好后面的电路做得再精也是白搭。第二保持差模信号的比例关系不破型。衰减也好、电平偏移也好都得保证-10V到10V映射到ADC整个量程没有削顶、没有死区、线性度不退化。第三给ADC提供足够的驱动能力和抗干扰能力。前端网络不能把高频噪声直接送进ADC也不能因为输出阻抗太高导致采样保持建立时间不够从而产生读数偏差。很多人的板子做完之后发现采集精度不行其实不是ADC性能不够而是前端对共模的处理不到家。共模电压通过电阻网络的不对称、运放的共模抑制比、PCB漏电流等途径最终都会转换成差模误差混进采样结果里。2. 前端电路拓扑三套主流方案选型与对比2.1 方案A精密电阻衰减网络直接进差分ADC结构上就是在两个输入端各做一条分压链比如正端通过90kΩ电阻接到ADC正输入ADC正输入再通过10kΩ电阻接到本地地负端完全对称地接一条同样的链。这个网络把±10V差模衰减成±1V把±30V共模也按同样比例衰减到±3V。如果ADC输入引脚绝对范围是0~5V那±1V差模叠加在3V共模上两个引脚电压分别在2V和4V之间完全落在安全范围内。这套方案的最大优点是简单、无源不消耗功耗也没有运放引入的失调和漂移。缺点是输入阻抗有限且依赖ADC输入级的高阻抗特性同时对电阻的比率匹配精度、温度漂移要求很高。常规金属膜电阻做到0.1%精度、±25ppm/°C漂移才能保证共模到差模的转换误差控制在可接受范围。这种方式非常适合中小共模电压场景比如共模在±10V到±40V之间、带宽要求不高、系统使用Σ-Δ型ADC的场合。如果共模高达上百伏衰减比加深后差模信号变得太小信噪比会急剧恶化这时候就得考虑方案B。2.2 方案B电阻衰减加高共模差分放大器当共模电压远超ADC输入耐压比如输入对地有±150V乃至±275V时直接用无源衰减网络把共模压到安全范围差模信号可能只剩下几十毫伏后级ADC的分辨率被白白浪费。这时候可以在衰减网络后面加一级专门的高共模差分放大器。这类芯片在输入级采用了特殊的电阻网络和电平移位技术允许输入引脚对芯片本地地存在极大电压差。典型的芯片包括INA149、AD8479、AMC1350等但它们的工作方式不大一样。INA149和AD8479属于上限较高的差动放大器输入共模耐压可以达到±275V甚至更高但增益通常固定为1。使用时一般先用电阻网络做差分衰减把±10V差模降到±5V或±2V再送入放大器缓冲并转化为以本地地为参考的低阻抗信号之后再送给ADC。这样的好处是输入共模问题在电阻网络端已经初步解决运放输入端永远不会看到灾难性的电压。AMC1350则是隔离放大器思路内部通过电容隔离将模拟侧和数字侧隔开隔离侧输入差分信号输出侧得到以本地地为参考的数字或模拟信号。它的好处是直接斩断共模电流通路共模耐压很高而且抗干扰能力很强代价是成本高、带宽有限。这套方案是工业采集板里最稳妥的路径既能处理高共模又能保持较好的差分精度尤其适合伺服驱动、电池组电压监测这类共模电压变化剧烈的场景。2.3 方案C运放衰减加电平偏移进单端ADC有很多项目用的MCU内置ADC只支持单端输入没有真正的差分输入模式。这种情况下电路要做的不仅是衰减还要把±10V信号整体抬升到0~3.3V量程内。典型做法是先用分压网络衰减到±1.25V左右再用运算放大器做电平偏移最终输出0.45V到2.85V对应-10V到10V。这种方案的优点是成本低、所用器件少配合STM32、GD32这类MCU时非常方便。但它的短板也很明显运放共模输入范围受自身供电电压限制输入引脚只要超出运放电源轨太多就会饱和甚至损坏。换句话说电路虽然完成了电平转换但并没有从根本上解决高共模的问题。如果输入侧对地电位超过供电范围必须在进入运放之前先用电阻网络把共模压下去同时还要小心电阻网络与运放输入偏置电流产生叠加误差。我在小信号板卡上经常用方案C但只要确认现场可能存在大的对地电位差我就会切换到方案A或B。2.4 方案对比与选型表对比维度方案A 电阻衰减差分ADC方案B 电阻衰减高共模差放方案C 运放衰减偏移共模耐压能力取决于衰减比中等可做到±40V高可做到±275V甚至更高低受运放电源轨限制差模精度高匹配电阻决定高放大器自身CMRR加分中等运放失调和漂移影响明显成本低中等偏高低电路复杂度低中中高需双电源或精密参考典型场景采集卡、PLC模拟量输入伺服、电网监测、电池组MCU内嵌ADC简单采集一句话总结不知道共模电压多大时优先按方案B去设计共模可控且不高时方案A的性价比最高只有确定系统接地完全干净才放心用方案C。3. 实操参数计算与电路实现细节3.1 差模增益、共模衰减和偏移计算实例下面用一个具体案例把整个参数推算过一遍。假设输入规格是差模电压范围±10V共模电压对地范围±30VADC是某款双极性输入Sigma-Delta型ADC绝对输入范围为0~5V差模满量程±2.5V。先用方案A的两条单端分压链做设计。分压比β取0.1即R2/(R1R2)0.1。为了让输入阻抗不至于太低取R190kΩR210kΩ。这样输入端子对本地地有一个100kΩ的直流负载大多数信号源都能正常驱动。差模路径上-10V输入映射为-1V10V输入映射为1V差分信号正好是±1V落在±2.5V量程内留有足够余量不会削顶。共模路径上如果两个输入端相对本地地都是30V经过分压后ADC正负引脚相对地的电压都是3V现实情况是正端可能是40V30V共模加10V差模负端可能是20V30V共模减10V差模对应ADC引脚电压就是4V和2V正好在0~5V范围内。这里有个常被忽略的检查项必须在正负两种极限下分别验算两个ADC引脚的绝对电压。不能只看差分值因为差分值正常不代表每个引脚都没有超出绝对最大额定值。如果共模是±100V同样的分压比会把共模压到±10VADC肯定受不了此时就应当加深衰减比或者在ADC输入对称地注入一个共模偏置电压把整个信号窗口拉回安全范围。共模偏置的做法是在ADC正负输入引脚之间跨接一个三电阻Y型网络中间点接精密基准源利用基准电压把输出共模强制在2.5V附近。方案C的电平偏移计算也很容易推。假设用0.12倍衰减加偏移输入-10V时输出0.45V输入10V时输出2.85V那么设计方程就是0.12×(-10)Vo0.45得到Vo1.65V验算正端0.12×101.652.85V。这个1.65V可以用高精度基准源加跟随器得到不能用MCU的电源直接分压因为电源纹波会直接注入到ADC转换结果里。3.2 Sigma-Delta ADC前面RC滤波怎么选用无源衰减网络或者运放驱动ADC时通常都会在ADC输入引脚前加一级RC低通主要目的是抑制带外噪声和抗混叠同时对ADC采样的电荷反冲起缓冲作用。很多工程师以为RC滤波的时间常数越大越好实际恰恰相反。Sigma-Delta ADC内部有一个电容开关网络也就是采样电容阵列每次采样瞬间都会从外部汲取一小撮电荷外部RC网络如果时间常数太大无法在采样窗口内恢复电荷平衡就会产生建立误差看到的现象是读数偏高或偏低而且随着信号幅值变化呈现非线性。常规经验值是R取100Ω到2kΩ之间C取1nF到100nF之间具体数值根据信号带宽和ADC数据输出速率确定。假如信号带宽是1kHz取R1kΩ、C10nF低通截止频率约15.9kHz既不会衰减有效信号又能把高频噪声压住。如果用无源分压链直接接ADC输出阻抗可能达到几十千欧那么RC滤波的R可以省掉直接依靠分压网络自身的输出阻抗和并联电容组成低通此时必须核算该阻抗与采样电容构成的充电时间常数是否足够。3.3 采样保持建立时间和驱动能力怎么核算如果使用MCU内置ADC比如STM32/GD32系列输入引脚内部有一个采样电容典型值在几pF到十几pF之间。外部信号源阻抗过高时采样开关闭合瞬间电容电压无法在设定的采样周期内稳定下来读到的数据自然偏低。工程上有一个很实用的估算方法外部等效阻抗乘以采样电容得到RC时间常数至少要留出5倍以上最好做到10倍的时间才能保证0.1%以内的建立精度。假设外部等效阻抗是2kΩ采样电容是10pF时间常数是20ns5倍就是100ns。把MCU的采样周期配置在1μs以上通常就稳了没必要刻意追求极端的采样周期。如果你在用GD32H7这类带有硬件过采样和模拟看门狗的MCU读高阻抗源建议把模拟输入脚并联一个几十nF的电容一方面抑制高频干扰另一方面为内部采样电容提供一个电荷池实测下来对读数稳定性提升非常明显。3.4 保护电路怎么加才不至于弄巧成拙任何会接到外部的模拟输入端口都应该加保护但保护器件本身如果选型不当反而会成为精度杀手。输入端串联一个1kΩ到10kΩ的限流电阻是最基础的做法这个电阻可以和前面的分压网络复用。ESD或过压瞬态到来时限流电阻限制进入ADC引脚的电流把伤害降到最低。在ADC引脚对电源轨和地之间加钳位二极管也是常规操作但对高共模输入场景要特别警惕。普通二极管在反向截止时有微安甚至几十微安的漏电流而前端分压网络的电流本来就很小漏电流就会直接叠加成分压误差。我测试过不少号称低漏电的钳位方案实际在高温下漏电流会成倍增加导致ADC读数跟着温度漂移。解决思路是选用漏电流低到纳安级的专用钳位器件或者采用阀值更高的TVS管让它在正常工作电压范围内完全不导通不给精度添乱。保护器件的摆放位置也有讲究。TVS管应该放在连接器入口处、分压网络之前把大的脉冲先泄放掉钳位二极管放在ADC引脚附近做最后一道防线。两个位置混用也不是不行但布局顺序不能反过来。4. PCB布局与电源噪声处理要点4.1 电阻匹配和开尔文布线前文反复提到电阻匹配这块如果在PCB上处理不好理论计算再漂亮也会被实际误差打脸。分压网络的差分对称性要求两个输入通道的电阻温度系数尽量一致。除了选用误差0.1%以下、温度系数±25ppm/°C的高稳定电阻以外布局时还要让对应的两只电阻处于相近的等温线上不要一只靠近发热元件另一只离得很远。电源模块旁边和远离电源模块的电阻即使阻值一样温度差十几度也会让共模增益失衡变成差模误差。开尔文布线技术在这里非常有用。模拟输入端到分压电阻的走线尽量短而直然后在电阻的另一端直接引出测量线到ADC避免大电流地线上的压降串入信号回路。很多初学者把采样信号和功率地混着走结果板子的ADC数据在负载变化时跟着跳根因就是地线压降被采进去了。4.2 模拟电源和基准源的清洁度ADC参考电压引脚对噪声极其敏感。参考电压上哪怕只有几毫伏的毛刺直接折算成转换结果的误差。给基准源供电的电源轨最好单独用磁珠或RC滤波隔离与数字电源分开走。基准源芯片的输出电容按数据手册推荐放置同时在其附近加一个0.1μF到1μF的陶瓷电容做高频储能。模拟电源纹波对ADC的影响也不可小觑尤其是高分辨率Sigma-Delta型ADC。我测试过一块板模拟电源直接用开关电源输出加一级LDOLDO输出端有轻微的高频纹波ADC在输入端对地短路时读数仍然有几十微伏级的底噪。后来在LDO输出端加了一个磁珠和一个10μF电解电容底噪立刻小了一个量级。模拟电源的布局原则就是“先隔离再储能后接地”。4.3 规避时钟抖动和数字噪声的三个布局关键点这几年做ADC/DAC混合板子我总结出三个实实在在的布局要点比很多文档里写的玄学理论有用得多。第一ADC的采样时钟或者主控时钟必须离模拟输入区域足够远。时钟信号沿两端都是高频噪声源一旦耦合到模拟输入走线或参考电压引脚就会以抖动和毛刺的形式进入采样结果。实际工程中可以把时钟芯片放在数字区模拟输入连接器放在另一侧中间用地平面和过孔墙隔开。第二模拟地与数字地在ADC芯片下方单点连接不要到处短接。很多人为了防止地平面割裂把模拟地和数字地大面积连通结果数字逻辑翻转时产生的di/dt噪声通过地平面直接灌进模拟回路的输出地。真正量产稳定的板子往往是模拟地和数字地只在ADC芯片地引脚附近汇合一次其他区域用磁珠或0Ω电阻隔离。第三所有模拟信号走线尽量贴着完整地平面走不要跨越分割线。一旦走线跨过地平面的裂缝返回电流被迫绕路回路面积增大抗干扰能力急剧下降。这和天线原理一样回路面积越大接收噪声越灵敏。如果模拟输入是差分对两根线要做到等长且靠近减少差模到共模的转换。5. 常见问题与排查技巧实录5.1 读数漂移不停温度相关性明显现象是板子刚上电时读数正常运行十几分钟后数值开始缓慢漂移环境温度变化时漂移量更明显。这个问题的首要嫌疑就是分压电阻温度系数不匹配或者钳位器件漏电随温度升高。排查方法是用热风枪或电烙铁局部加热可疑元件观察读数是否跟随变化。如果加热某一只电阻时读数显著移动说明该电阻的温漂过大或者两只对称电阻温漂方向不一致。解决手段就是换用精密薄膜电阻并把对称电阻排布在等温区域。另一种可能时保护二极管的漏电。这种问题通常在高温环境下暴露得更明显可以在ADC引脚前串一个低阻通道测量实际漏电流或者直接在原型板上去掉钳位二极管对比测试。5.2 差模读数基本正确但共模一变就跟着偏这是共模抑制变差的典型表现根源几乎都在电阻网络的不对称或PCB漏电流。共模电压通过不平衡的电阻分压在ADC两端人为制造出差模误差。排查技巧是把信号源的输出模式改成一个固定共模电压正负端短接在一起看ADC读数是否为0。如果读数不为0说明共模已经转换成差模干扰。然后从输入端到ADC逐一测量各点电位找到不对称的那一级。我在实际项目中碰到过一个很隐蔽的问题分压电阻本身精度很高但它们下方的PCB表面没有做清洁处理残留在走线之间的助焊剂在潮湿环境下形成微电流通路导致共模抑制比恶化。清洗板边和过孔区域后问题彻底消失。5.3 采样数值偏低且信号越小误差越大这个现象几乎可以锁定为采样保持建立时间不足。外部源阻抗太高或者ADC输入端的并联电容过大导致采样瞬间电容电压爬升速度跟不上内部开关的采样窗口。参照3.3节的估算方法先把外部等效阻抗降下来。最简单的方法是直接提高MCU ADC采样周期配置或者减小前端滤波电容容量。如果采样周期已经很大了但问题依旧检查一下外部滤波电容是否选用了容量过大的类型。5.4 输入过压事件后ADC读数永久偏移如果没有防护措施输入接口发生过压后ADC引脚可能已经轻微损坏表现是读数出现一个固定的偏移。这种损伤用万用表不一定测得出但ADC的线性度和噪声指标会比正常时差很多。解决办法就是给板卡设计完善的保护电路包括输入端的串联限流电阻和TVS管。有一点要提醒各位TVS管不是万能的它泄放大电流后会残留一个较低的钳位电压如果后级没有限流电阻残压依然可能对ADC造成二次损伤。保护链路的顺序必须是连接器、TVS、限流电阻、二极管钳位、ADC引脚。5.5 软件滤波函数只能是辅助手段硬件设计做得差不多了很多人习惯在代码里再加一层均值滤波或中值滤波。这部分可以做一个简单的排序中值加平均的混合滤波函数用于抑制脉冲噪声和随机噪声但它无法解决共模转换误差和建立时间不足这类系统性问题。先保证硬件正确再谈软件滤波。我一般把软件滤波当作最后一道防线而不是真正的救火队员。6. 一点实操心得这套±10V高共模差分输入的前端方案我已经在不同项目里复用了很多次整体感受是先明确共模电压的范围再决定用方案A还是方案B不要一上来就堆仪表放大器也不要天真地以为一颗运放能解决所有电平转换问题。调试顺序上我习惯先短路输入信号验证零点再施加纯共模电压验证CMRR最后再来测差模精度。每一个环节都输出一个可核查的参数出了问题能很快定位到具体的电阻或者保护器件。最后再提醒一句精度指标不是从ADC手册上抄来的而是从信号源、分压网络、运放、PCB布局、基准源和滤波器的误差总和里“抠”出来的。前端电路愿意花多少心思ADC最终就会回报你多少真实性能。
返回列表