交流信号ADC采样必看:差分加法电路实现直流偏置与增益解耦

发布时间:2026/9/24 3:36:01
交流信号ADC采样必看:差分加法电路实现直流偏置与增益解耦 1. 为什么交流信号进 ADC 前必须“抬起来”半个周期被吞掉的真相1.1 那个“只剩一半”的波形第一次用单片机采集交流电压时我在示波器上看到的是一片漂亮的正弦波可数据传到上位机后波形只有正半周负半周像被一刀切掉。查了好几天最后发现根本不是程序 bug——交流信号包含 -1V 到 1V 那样的负压部分而 ADC 只能测量 0 到参考电压之间的正值。负电压一进引脚就被内部保护二极管钳位或直接被采样保持电路当作 0 处理于是下半边“消失”了。这个问题几乎所有做交流采样的同学都会遇到。不管你是用互感器测电流还是用电阻分压测电压只要信号源输出的不是以地为参考的正电压ADC 前端就几乎必须要做“电平搬移”——把波形整体抬高让最低点大于 0V最高点低于 ADC 参考电压。否则你采回来的数据用来算有效值、功率、相位全都是错的。1.2 为什么不能用“直接并联 2.5V”这种粗暴偏置很多人第一反应是既然要加直流偏置那我在信号线上直接接一个 2.5V 电源不就行了实际这样做的后果是2.5V 电源的输出阻抗会把交流信号短路掉信号直接缩水就算串一个大电阻隔离偏置点的电压也会随着信号源阻抗变化而漂移低频信号还会被电容衰减。真正的工程做法是让直流偏置和交流信号通过运放的反馈网络在输出端“加权相加”互不影响。这里就轮到标题里的差分运放登场了。它并不是什么特殊型号而是指一种典型的差分差动放大拓扑两个输入支路各带一个电阻反馈网络决定增益同时把一个参考电压接进同相端就能把输出整体抬到以参考电压为中心的位置。这个拓扑在仪表放大器芯片里极其常见我们完全可以用一片普通运放加四个电阻复现。2. 差分加法偏置电路把增益与偏置分开设计2.1 电路结构和一页纸推导电路图我直接描述清楚跟着画就行运放同相输入端信号 Vin 经过电阻 Rg 接入2.5V 基准 Vref 经过电阻 Rf 接入同一点。运放反相输入端信号地或差分输入负端 Vin-经过电阻 Rg 接入输出 Vout 经过反馈电阻 Rf 接回反相端。四个电阻两两对称输入侧两个 Rg反馈/参考侧两个 Rf。写出节点方程Vp (Vin/Rg Vref/Rf) / (1/Rg 1/Rf)Vn (Vin-/Rg Vout/Rf) / (1/Rg 1/Rf)利用运放虚短 Vp Vn两项中的公共分母直接约掉得到Vin/Rg Vref/Rf Vin-/Rg Vout/Rf再整理Vout (Vin - Vin-) × Rf/Rg Vref对单端输入Vin- 接地输出就是Vout Vin × (Rf/Rg) 2.5V这个公式就是整篇内容的灵魂前面一项是信号按比例放大后面一项是直流偏置。Rf/Rg 只影响增益Vref 只影响直流中心位置。2.2 为什么这个拓扑比“同相加法器”更适合做偏置如果只用同相加法器输出是 Vout (1 Rf/Rg) × (Vin Vref) / 2仔细算会发现调增益时偏置也会跟着变两者绑死。很多新手按那种电路搭调完增益发现波形中心点从 2.5V 飘到 4V还以为是运放坏了。实际上就是拓扑没选对。相比之下本文这个差分加法结构把“增益”和“偏置”解耦了。你想让波形更大把 Rf 换成大阻值想让中心从 2.5V 挪到 3V单独调 Vref 就行。这在实际调电路时非常省事尤其当你需要快速适配不同传感器输出幅度时只改一个电阻或一个基准电压即可。我印象很深的一次是给一个电流互感器做采样前端互感器输出约 ±0.3V按这个电路把 Rf/Rg 调到 4输出直接变成以 2.5V 为中心、幅度 ±1.2V 的正弦距离电源轨上下各留了 1.3V 余量采样数据马上正常。2.3 仪表放大器里那个 REF 引脚原理一模一样如果你用过 INA128、AD620 或者 INA159 这类仪表放大器会发现它们都有一个 REF 引脚数据手册里的输出公式是 Vout G×Vin − Vin- Vref。看到没和我们这个单运放推导完全同构。仪表放大器内部的差分输入级很大程度就是这个拓扑的工程化实现只是它用激光修调电阻、多级放大把匹配精度和输入阻抗做得更好。所以这个标题其实没有夸张给交流信号加直流偏置的最正统方法就是用差分结构。单运放版本适合手搓、成本低仪表放大器版本适合高精度、高共模抑制的应用。你先把这个单运放电路玩明白以后看仪表放大器的 REF 接法、数据手册、以及各种“交流电流采样电路”的参考设计都会觉得眼熟。3. 参数选取与基准生成先把电阻算明白再动手3.1 从信号摆幅反推 Rf/Rg拿到一个交流采样需求第一步不是连线而是算上限。假设你的 ADC 参考电压是 5V0~5V我们通常让输出中心在 2.5V 附近再留 0.2~0.5V 的裕量防止削波。举例信号源输出 ±1V如果 RfRg输出范围是 1.5V~3.5V完全在安全区间但分辨率浪费了一半。如果想把量程拉满设定输出 0.5V~4.5V那么信号峰峰值从 2V 放大到 4V增益就是 2也就是 Rf/Rg 2。取 Rg10kΩRf20kΩ 即可。给一个对照表方便直接抄输入峰值期望输出范围增益 Rf/Rg示例电阻±0.5V1.5V~3.5V2Rg10kΩ, Rf20kΩ±1V0.5V~4.5V2Rg10kΩ, Rf20kΩ±1V1.5V~3.5V1Rg10kΩ, Rf10kΩ±2V0.5V~4.5V1Rg10kΩ, Rf10kΩ注意最后一个例子里输入 ±2V、增益 1输出范围是 0.5V~4.5V因为中心在 2.5V正负恰好各留 0.5V。如果输入超过这个范围就需要降低增益或提高 Vref 可用的摆幅。核心公式就一个输出峰峰值 输入峰峰值 × Rf/Rg然后把中心对到 2.5V。3.2 电阻匹配精度决定了共模抑制好坏别看公式简单四个电阻的匹配精度会影响实际性能。差分拓扑之所以能减掉共模信号依赖的是两个增益臂严格成比例。如果两个 Rg 一个是 10kΩ 一个是 10.2kΩ两个 Rf 一个是 20kΩ 一个是 19.8kΩ那么一部分共模信号和 Vref 分量就会漏到输出表现为输出中心点偏移、波形不对称。普通交流采样场合5% 精度贴片电阻就能跑误差主要影响中心电压和增益通常可以靠软件校准。但如果信号源本身带着较大的共模干扰比如电机驱动里的电流采样建议上 0.1% 或 0.5% 的精密电阻四只一起买同一个批次温度和漂移特性更一致。这个细节在仿真里看不出来但实物板子上影响非常明显。Vref 的实现也讲究。最简单是两个 10kΩ 从 5V 分压得到 2.5V但分压点阻抗有 5kΩ会通过 Rf 改变电路工作点导致实际中心偏低。稳妥的做法是分压后接一级电压跟随器也就是用双运放芯片剩下的另一半做缓冲。要求更高时直接用 TL431 或专用基准 REF5025输出噪声低、负载能力强尤其适合给 ADC 同时做参考电压。3.3 别忘了运放不是理想的输出范围与输入阻抗单电源 5V 供电时运放的输出电压不是真正的 0~5V。像 LM358 这种非轨到轨运放输出通常只能到 0.2V~3.8V 甚至更窄因为内部输出管有饱和压降。所以算 0.5V~4.5V 的理论范围在 LM358 上可能已经削顶了。要么把增益调小要么换成轨到轨运放比如 OPA2333、MCP6002、SGM8521 这类输出才能贴近电源轨。另外这个电路的输入阻抗约等于 Rg。如果信号源内阻较高比如几千欧会跟 Rg 分压实际增益变成 Rf/(RgRs)和计算值对不上。解决办法是先加一级跟随器或者把 Rg 选大比如 100kΩ。不过 Rg 太大又会放大运放输入偏置电流的影响所以高阻源最好的方案还是“跟随器 本电路”两级结构。还有一点容易被忽略Vref 不要直接从开关电源的 5V 分压除非你只想做功能验证。开关纹波会直接通过 Rf 混进信号输出ADC 采样值上会出现几十毫伏的抖动。想要采样稳定基准这路必须干净。4. Multisim 仿真搭建实操从元件摆放到波形验证4.1 新建工程前的两个环境问题开始仿真前先说两个 Multisim 常见问题很多人在打开软件阶段就被卡住了。一个是“Multisim 访问数据库发生错误”或“主数据库无法访问”一般出现在安装路径带中文、杀毒软件拦截了数据库文件、或者首次启动没自动解压元件库的时候。解决办法依次是以管理员身份运行、把安装路径改成纯英文、关闭实时防护后重装一次基本上都能解决。另一个是仿真跑起来后特别慢尤其在运放电路里。可以先减小仿真总时长或者把“最大积分步长”调大一点也可以把信号频率调低到 50Hz~1kHz 验证原理。Multisim 的瞬态仿真在步长太小时一个波形周期要算几千个点自然会卡。别急着怀疑电路先把仿真步长和显示刷新率调对。4.2 从零开始搭这个偏置电路仿真环境准备好之后按下面步骤操作大约五分钟就能跑出波形新建 Design从 Place Component 里找到运放。可以直接搜“LM358AD”用真实 SPICE 模型想省事也可以选虚拟五端运放两者仿真结论一致但真实模型更贴近实物。放两个 10kΩ 电阻作为 Rg两个 10kΩ 电阻作为 Rf再准备一个直流电源2.5V和一个交流信号源 AC_VOLTAGE。注意交流源的“Voltage”默认是峰值Peak不是有效值要分别设置。连接信号源正端到第一个 RgRg 另一端进运放同相端Vref 直流源正端接第二个 RfRf 另一端也进同相端。反相端同样经 Rg 接地反馈电阻 Rf 从输出接回反相端。给运放接电源V 接 5VV- 接地。单电源供电负电源引脚别悬空。示波器两个通道分别接输入信号和输出信号地线接信号地。运行仿真。如果想看增益为 2 的效果把反馈电阻和同相端到 Vref 的两个 10kΩ Rf 都换成 20kΩ输入正负各 1V 时输出就会在 0.5V~4.5V 之间摆动。4.3 波形验证与读数技巧仿真跑通后打开示波器面板用光标工具测量 Vmax 和 Vmin。输入 ±1V、RfRg 时输出应该在 1.5V~3.5V 区间中心正好 2.5V。如果发现输出底部被削平先看是不是运放型号轨到轨能力不足把输出范围需求调低后重跑。在 Multisim 里还可以加一个虚拟电压表测平均值理想情况下平均值应该稳定在 2.5V。如果平均值偏了优先检查 Vref 是不是真的 2.5V、电阻有没有放错位置。这里有个容易被误导的点交流信号源频率很低时示波器上能看到波形慢慢爬升那是初始瞬态等几个周期后读数才有效。4.4 仿真文件内容说明我在文末附的仿真文件里有三个场景场景一是增益 1、±1V 输入场景二是增益 2、±1V 输入场景三是把交流信号源替换成两个独立源模拟真差分信号方便做电流采样差分输入的对照。文件用 Multisim 14.0 以上版本打开即可模型库选用了 LM358AD。如果你打开后元件显示异常多半是本地数据库缺少模型替换成虚拟运放重新连线就行。这个文件的用途不只是“看着过瘾”你可以把频率从 50Hz 改到 1kHz、把 Vref 改成任何值看看公式是否始终成立。仿真最大的价值就是帮你建立直觉改一个电阻波形幅度怎么变改一个基准中心怎么挪。有了这个直觉再去画实物板子心里是有底的。5. 从仿真到实物的距离运放选型、去耦与常见坑5.1 理想公式与实际运放的现实差距仿真里用的运放模型增益无穷大、失调为零实际芯片可不是。LM358 这类便宜运放输入失调电压可能有 2~7mV再乘以增益反映到输出就是几毫伏到十几毫伏的直流误差。对 50Hz 工频信号采样这点误差基本无所谓但如果做的是精密电流采样满量程只有几十毫伏那就要选低失调运放比如 OPA2333、SGM8551 这类自动调零运放失调只有微伏级。输入偏置电流也值得注意。当你把 Rg 和 Rf 都选到 100kΩ 级别时LM358 的偏置电流会在这些电阻上产生可见的直流压降导致输出中心点偏离计算值。解决方法是把电阻降到 10kΩ 附近或者选用 JFET 输入运放TL072、LF353它们的偏置电流只有 pA 级电阻对直流精度的影响基本可以忽略。5.2 电源去耦与 Vref 噪声是“第一生产力”实物调试时运放电源脚旁边必须放 0.1μF 陶瓷电容位置要尽量靠近引脚如果电源线较长再并联一个 10μF 左右的电解电容。很多仿真里不需要的东西实物都省不了。特别是 Vref 分压点就算加了电压跟随器也应该在基准输出端放一个小电容滤掉高频毛刺。我踩过的一个坑是Vref 直接用可调电阻分压结果可调电阻在震动或温度变化时阻值轻微漂移输出中心电压跟着慢慢飘ADC 读数一会偏大一会偏小。后来改成固定比例电阻加 TL431问题立刻消失。所以如果你想做一个长期稳定运行的采集板别在偏置基准上省钱。5.3 和 ADC 引脚对接时别忘了采样时间运放输出送到单片机 ADC 引脚前通常要串一个小电阻并加一个对地电容滤掉采样保持开关产生的电荷注入干扰。但这个 RC 会限制带宽R1kΩ、C10nF 时截止频率约 15.9kHz对于 50Hz~1kHz 交流采样足够如果信号频率更高就要减小 C。ADC 本身的采样时间也要和前端输出阻抗匹配。STM32 这类 MCU 的 ADC 采样保持期间内部采样电容要从外部源快速充电如果源阻抗太高采样值会偏小。运放输出阻抗一般只有几十欧直接驱动没问题但如果你在中间串了 10kΩ 的电阻就要把 ADC 采样周期调到最大或者把电阻改小。5.4 上电前的检查清单与“炸板”经验最后列一个排查清单都是我实际调试时用过的顺序用万用表确认运放供电脚电压正确正负别接反单电源方案里负电源脚必须接到系统地。检查 Vref 分压点电压是否稳定在 2.5V不在 2.5V 就调整分压或基准。用直流电压从小往大加先测 0V 输入时输出是否落在 2.5V 附近如果输出偏到电源轨多半是虚短/虚断条件不满足也就是反馈没接对。再加交流小信号用示波器看输出是否以 2.5V 为中心出现削底先怀疑增益太高或运放输出范围不够而不是先怀疑 ADC。我早期接反过电源运放冒烟后换了芯片还把 ADC 引脚打坏了一个。从那以后养成习惯任何板子先不插芯片量电源轨没短路再上电上电后摸一下芯片温度异常发烫立刻断电。这一套流程看起来慢实际省的时间比被迫排查问题快得多。做这个电路前后的最大体会是模拟前端没有那么多玄学大部分问题都出在“没算输出电压范围”和“偏置不干净”这两件事上。先用差分加法这种拓扑把增益和偏置解耦再把 Vref 做得足够稳定后面接入 ADC 的事情就顺了。如果你手上正有一块开发板和一片双运放建议今天就按文中的电路在 Multisim 里跑一遍改几个电阻看波形变化再搭实物验证这个过程比只看文章学到的要多得多。