
简介《程控电流放大器的设计》文档面向电子信息、自动化等专业学生及参加电子设计竞赛的读者围绕可编程增益与电流放大电路方案展开。内容从系统框图入手梳理前级AD603两级级联放大、AGC反馈、后级分立元件推挽互补输出以及ADUC812单片机程控增益和输出电压有效值显示等模块并对AD7520数控衰减、集成芯片与分立元件后级等方案作比较附LM317T稳压电源等电路分析便于课程设计、竞赛题复盘与硬件调试参考。资源包共1个doc文件约246KB篇幅集中适合快速查阅整体设计思路与关键参数。已有406人学习可为需要搭建程控放大链路、理解增益分配和输出级设计的读者提供较完整的方案参照。1. 一套 60dB 的程控放大器设计增益分配比选芯片更值得先算清楚程控电流放大器的设计里最容易走偏的一步是先盯着芯片选型把增益预算留到最后。手上这套方案的电路图由三块拼起来AD603 两级级联的可控增益前级带 AGC、分立元件搭的单电源互补推挽后级、以 ADUC812 为核心的控制与显示模块输出有效值要求做到 8V 以上。它的价值不在用了多贵的器件而在于把 60dB 总增益拆成前级可调 40dB、后级固定 20dB 两段每段都能单独拿出来测、单独排查。适合正在做程控放大器课程设计、或者要把毫伏级小信号推到几伏有效值输出的人。下面按信号从输入到输出的顺序把这套设计里能抄的部分和会翻车的地方一次讲清。2. 前级增益链路AD603 两级级联怎么分掉 40dB2.1 三条增益控制路线的取舍分立三极管、AD7520 电阻网络、AD603分立元件方案的电路图看着最“基础”实际上最难调。为了凑到 60dB得做好几级三极管放大再用二极管检波产生反馈电压去改前级的工作点做自动增益。问题是每级的工作点都互相牵扯温度一变静态电流就飘增益的定量调节基本靠试多级级联之后分布电容和电源内阻把相位裕度吃掉自激是家常便饭。这条路能出波形但出不了可重复的指标做课程设计想拿分不建议碰。AD7520 那条路走的是另一套思路用 10 位 D/A 的电阻权网络去改反馈系数输出 Vout Dn × Vref / 1024理论上有 1024 挡精度和数控性都不错。坑在参考电压——AD7520 对 Vref 的幅度有要求想让输入信号从 mV 到 V 每个数量级都放大得准得在它前面加一级适应性放大再让前后级增益积正好等于 1024 去抵消衰减。这个配平一旦算错整条链路的增益就是非线性的而且它的带宽只有几 kHz频带要求一上来直接判死。AD603 把 R-2R 梯形衰减网络和固定增益放大器封在一颗片子里衰减量由加在增益控制口的电压决定控制口输入电阻高达 50MΩ外接电路几乎不用考虑负载效应。直流到 30MHz 以上可用单级实际工作能给出 20dB 以上两级级联 40dB 以上再接后级就能在高频段做到 60dB。三条路线的对比如下方案增益调节方式可用带宽定量精度主要风险分立三极管多级检波反馈改工作点取决于管子和级数差难以定量工作点漂移、级联自激AD7520 电阻网络10 位 D/A 改反馈系数几 kHz1024 挡理论精度高Vref 幅度限制、非线性误差AD603 级联控制电压 Vg 连续调节90MHz / 9MHz 两档与 Vg 线性相关输入阻抗仅 100Ω需匹配选 AD603 的真正理由不是“集成度高”这种空话而是增益和控制电压之间有一条能写进代码的线性关系单片机才能查表赋值。2.2 增益公式 GAIN 40 × Vg 20 与 5、7 脚的三种接法AD603 的增益只跟两个控制脚之间的差值有关Vg Vpos − Vneg与各自对地的绝对电压无关。线性区的经验式是G(dB) 40 × Vg 20 (-0.5V ≤ Vg ≤ 0.5V)把 Vg 从 −0.5V 扫到 0.5V单级纸面增益就从 0dB 走到 40dB。注意这是控制电压到增益的映射关系实际能取到多少还受 5 脚和 7 脚的接法限制5 脚与 7 脚增益范围−3dB 带宽典型用途断开951dB9MHz大增益、窄带场合短接−1131dB90MHz宽带、中小增益之间串电阻窗口平移介于两者之间定制增益区间这套设计取的是短接宽带模式。原因是每级只工作在 20dB 附近离 31dB 上限还有 11dB 余量相位裕度大两级级联后不容易在高频段累积相移而自激断开模式虽然单级能顶到 51dB但带宽压到 9MHz两级串起来在几百 kHz 以上就开始看出群时延带来的波形畸变。做实物时把这一点定下来后面调自激会省很多事。增益预算用一段脚本算清楚别在纸上拍脑袋import math vin, vout 10e-3, 8.0 # 标称输入 10mVrms目标输出 8Vrms g_total 20 * math.log10(vout / vin) print(f总增益需求 {g_total:.1f} dB) # 约 58.1dB按 60dB 设计留余量 g_pre 40.0 # 前级两级 AD603 各 20dB print(f后级固定增益取 {g_total - g_pre:.1f} dB实做 20dB(10 倍)) for g_stage in (10, 20, 30): # 单级增益 - 控制电压 - D/A 码值 vg (g_stage - 20) / 40 code round((vg 0.5) / 1.0 * 1023) # -0.5~0.5V 映射到 0~1023 print(f单级 {g_stage:2}dB - Vg{vg:.3f}V, AD7520 码值 {code})脚本输出里最有用的一行是“单级 20dB → Vg 0.000V → 码值 512”。这意味着中点码值就是标称工作点零点漂移一眼能看出来上电后量 AD603 的 1 脚只要明显偏离 0V先查 D/A 的参考和运放偏置别急着怀疑芯片。参数上还有一条Vg 的有效区间是 ±0.5V但实际只用到 −0.5V0V 这一段覆盖 040dB剩下半段留给 AGC 和校准余量这是刻意的不是浪费。2.3 输入端的射极跟随器100Ω 输入阻抗必须先抬起来AD603 的差分输入阻抗只有 100Ω信号源内阻稍微大一点就是实打实的分压损失而且前后级的阻抗匹配会变得很难看。常见做法是在最前面加一级射极跟随器用高频三极管搭取 β ≈ 150、发射极电阻 Re 1kΩ输入阻抗按 Rin ≈ β × Re 估能到 150kΩ 量级对前级信号源基本不构成负载。这里有个血泪经验β × Re 只是上限估算实际输入阻抗还要并联基极偏置电阻。如果偏置分压取 10kΩ 和 10kΩ实际输入阻抗直接掉到 5kΩ 附近前面那级跟随器就白搭了。稳妥的取值是偏置电阻抬到 100kΩ 以上或者用自举把偏置网络对交流“抬起来”。另外跟随器本身有约 0.60.7V 的直流偏移和 0.95 左右的交流传输系数做增益预算时要把它算进去别到最后一测总增益差 0.5dB 找不到原因。单端输入时还有一个容易忽略的点运放另一个输入端要和信号输入端做阻抗平衡否则在共模干扰下会把这部分干扰转成差模信号放大出去。做法是在另一个输入端串一只和信号源内阻等值的电阻到地。2.4 级间 104 电容用高通滤波顺手把 50Hz 工频切掉两级 AD603 之间串一只电容和下一级的 100Ω 输入阻抗构成一阶高通转折频率按 f 1/(2πRC) 算。取 C 0.1μF104 磁片、R 100Ωimport math def hpf_c(f_target, r100.0): return 1 / (2 * math.pi * r * f_target) for f in (15.9e3, 10e3, 3.4e3): print(f转折 {f/1e3:4.1f}kHz - C {hpf_c(f)*1e6:.3f} μF) print(f0.1μF 100Ω 的实际转折: {1/(2*math.pi*100*0.1e-6)/1e3:.1f} kHz)0.1μF 配 100Ω 算出来约 15.9kHz。实做时用频谱看10kHz 附近就已经掉 3dB 了比算出来的低——原因是前级跟随器的输出阻抗、PCB 走线电感和 AD603 输入端的寄生电容一起把等效 R 抬大了转折点自然往低走。这个偏差不是错误反而是好事20kHz 以上幅频特性平坦同时 50Hz 工频和它的低次谐波被压得很干净。如果做的版本低频段要求下探到 1kHz把电容换到 0.47μF转折推到 3.4kHz 左右同时要重新确认级间不会因为容抗变小而引入额外相移。3. 后级功率级分立推挽怎么把 8V 有效值顶出来3.1 集成芯片方案为什么被放弃AD811 与 HA-2539 的稳定性代价前级两级 AD603 出来的是电压摆幅有限要顶到 8V 有效值约 11.3V 峰值必须再加一级功率放大。最省事的想法是找颗高压摆的集成运放AD811、HA-2539 这类片子输出电压幅度是够的电路图也简单照数据手册搭就能出波形。问题出在稳定性上这类高带宽电流反馈型运放对负载电容极其敏感PCB 上多几厘米走线、示波器探头挂上去那十几 pF就足以让它在几百 kHz 处振起来反馈电阻的取值窗口很窄换一批片子可能要重新调。更麻烦的是这类失稳往往不是持续振荡而是“大信号时才发作”静态测一切正常一加输入就出毛刺排查起来像黑匣子。所以最后走了分立元件自行搭推挽的路子设计麻烦、调试繁琐但输入输出阻抗、放大倍数、静态电流全是自己算出来的电阻电容想换就换出问题能一层层量下去。3.2 单电源互补对称输出级静态工作点必须死磕在 Vcc/2后级电路图是一个典型的单电源供电互补对称结构。T1、T2 组成前置放大级T3、T4 组成对称输出级输出对管选高频孪生对管B649A 与 D669A 这一对ft 高带宽才不会被输出级拖死。输入为 0 时调 R1 的阻值给三极管合适的偏置使 R9 和 R10 之间的电位落在 Vcc/2静态输出点必须稳定在这个值否则正负半周不对称大信号一来先削一边。工作点稳定性靠 R9、R10 和 C5 把输出端反馈回 T1、T2 的输入端来保证R9、R10 采样输出直流电平C5 对交流呈短路形成交流负反馈但直流反馈系数为 1把中点牢牢钉住。闭环电压增益近似为A_cl ≈ (R9 R10) / R10取 R9 9.1kΩ、R10 1kΩA_cl ≈ 10.1即 20.1dB正好补上前级剩下的那段增益。这里别用 1 R9/R10 去套反馈取自输出端分压点而不是反相输入端两种写法差一个量级算错了输出会小一半。有源负载的频率特性和噪声特性都差所以电路里用电阻做负载牺牲一点增益换带宽和噪声。输入阻抗在指标允许的前提下尽量压低减少空间辐射耦合进来的干扰——这跟前级抬阻抗的做法方向相反别把两级的思路搞混。单电源输出必须隔直耦合电容按下限频率算import math def coupling_c(f_min, r_load): return 1 / (2 * math.pi * f_min * r_load) c coupling_c(20, 50) print(f20Hz、50Ω 负载需要 C ≥ {c*1e6:.0f} μF取 1000μF/50V) print(f1000μF 在 20Hz 的容抗 {1/(2*math.pi*20*1000e-6):.1f}Ω f对 50Ω 负载衰减 {20*math.log10(50/math.hypot(50, 1/(2*math.pi*20*1000e-6))):.2f} dB)算下来 20Hz 时容抗约 8Ω相对 50Ω 负载只带来 0.1dB 左右的衰减可以接受如果负载是 600Ω同样的电容容抗占比更小反而更宽裕。注意电容耐压要按 Vcc/2 往上留一倍余量30V 供电就选 50V 规格。3.3 电源LM317T 扩出 10V 与 30V 两路非标电压5V 给单片机、数码管和锁存器±15V 给运放这两路用 7805、7815、7915 这类固定三端稳压就能解决。麻烦的是前级 AD603 要的 10V 和后级推挽要的 30V市面上没有对应的固定输出型号得用 LM317T 这类可调稳压扩出来。输出电压由两只电阻决定Vout 1.25 × (1 R2 / R1)R1 取 240Ω反算 R2def lm317_r2(vout, r1240.0): return r1 * (vout / 1.25 - 1) for v in (10.0, 30.0): print(f{v:4.1f}V 输出 - R2 {lm317_r2(v):.0f} Ω)10V 对应 R2 1680Ω30V 对应 R2 5520Ω都用 1% 金属膜电阻实际值会有几十毫伏偏差靠后级标定补掉。ADJ 端对地并一只滤波电容纹波抑制比能明显改善前级小信号放大对电源干净程度很敏感这一只电容不要省。保护二极管不能漏输入端意外掉电时输出电容上的电压会比输入高电流倒灌进 LM317T 会直接损坏芯片在输入输出之间反接一只二极管把这条通路短路掉。功耗也要算输入取 35V、输出 30V、负载电流 150mA压差 5V 就是 0.75WTO-220 封装必须加小散热片别指望裸片扛。输出轨器件主要负载电流预算备注5VLM7805ADUC812、数码管、74LS373300mA数码管动态扫描时峰值较高±15VLM7815 / LM7915运放、检波电路100mA与数字地分开走10VLM317T两片 AD60360mA每片约 2030mA30VLM317T后级推挽200mA加散热片注意压差功耗3.4 前后级增益预算表把每一段都摊开算把前面几节的数字合到一张表里调试时逐段对哪一段对不上就查哪一段比整体瞎调快得多环节电压增益分贝输出摆幅备注输入射极跟随器0.95−0.4dB跟随输入β150Re1kΩAD603 第一级110 可调020dB≤2Vrms宽带模式5、7 脚短接级间高通≈1通带内0dB—0.1μF 100Ω转折约 16kHzAD603 第二级110 可调020dB≤2Vrms与第一级同 Vg 控制后级推挽10.120.1dB≥8VrmsR99.1kR101k合计—2060dB≥8Vrms输入 10mVrms 时满量程表里“≤2Vrms”这一列是前级的输出上限AD603 在 10V 供电下摆幅有限两级都想吃到 10 倍是不现实的。实际调的时候让第一级吃大部分增益、第二级留小一点噪声系数更好看反过来把增益堆在第二级第一级的噪声会被一起放大输出本底明显变差。4. 数字控制与有效值显示ADUC812 那一侧怎么接4.1 内置 D/A 为什么被弃用控制电压纹波会直接变成输出噪声ADUC812 片内自带 D/A最省事的做法是直接用它产生 AD603 的增益控制电压。实际一试就翻车输出纹波大且不好滤因为片内 D/A 和数字电路共地数码管动态扫描的开关电流全耦合进来。这个纹波加在 AD603 的增益控制脚上等于对信号做幅度调制输出端听到的是“沙沙”的本底示波器上能看到包络随扫描频率起伏。控制电压这条路对纹波的要求比一般偏置严得多增益对 Vg 的斜率是 40dB/V也就是 1mV 的控制电压波动对应 0.04dB 的增益抖动看着不大但两级级联再乘以后级 10 倍增益输出幅度抖动就到了能听出来的程度。所以改成外置方案电阻网络 D/A 负责产生基准电压两级运放做 I/V 转换和电平搬移中间加 RC 滤波。多花几颗件换的是输出本底的干净程度。4.2 AD7520 加 74LS373控制电压链路与 −0.50.5V 的电平搬移链路是这样的单片机 → 74LS373 锁存 → AD7520 → 第一级运放做 I/V 转换 → 第二级运放做电平搬移和缩放 → 送到两片 AD603 的 1 脚。AD7520 本身没有锁存器数据总线上必须挂 373 保持否则写别的端口时 D/A 输出会跟着乱跳。第一级把 AD7520 的电流输出转成电压Vout1 −Vref × D / 1024取 Vref 2.5V则 D 从 0 到 1023 对应 Vout1 从 0 到 −2.5V。第二级要做的是把 0−2.5V 映射到 −0.50.5V斜率是 −0.4截距 −0.5V。用反相求和放大实现Vout2 −(0.4 × Vout1 0.5) 取 Rf 10kΩVout1 支路 R1 25kΩ2.5V 基准支路 R2 50kΩ对着算一遍D0 时 Vout10Vout2−0.5VD1023 时 Vout1−2.5VVout20.5V。两端都对得上中间线性。写进单片机的就是下面这段#include REG812.H sbit LE P3^0; /* 74LS373 锁存使能 */ #define DAC_BUS P0 /* AD7520 是 10 位并行输入低 8 位走 P0 经 373 锁存高 2 位走 P2.0/P2.1 p a hrefhttps://download.csdn.net/download/w516780018/3090763 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p