运放输出电压到不了电源轨的这种明坑踩了后,我选择了轨到轨的运放,哈哈,这样运放终于可以输出到电源轨了。高兴的背后是一个隐蔽大坑等着我:
 
1. 运放十坑之轨到轨
运放输出电压到不了电源轨的这种明坑踩了后,我选择了轨到轨的运放,哈哈,这样运放终于可以输出到电源轨了。高兴的背后是一个隐蔽大坑等着我:
 
看看我常用的某公司对轨到轨运放产品的介绍:“高速(>50MHz)轨到轨运算放大器支持以更低的电源电压、更接近供电轨的摆幅和更宽的动态范围工作。”看到没有:
 
“以更低的电源电压、更接近供电轨的摆幅和更宽的动态范围工作。”


“更接近供电轨的摆幅”


“更接近”


“接近”


...
 
看一个轨到轨运放的手册:

 

 

 

输出电压的确是到不了电源的 5V,why?
 
运放的输出级可以简化为下面这种的结构形式:

 

 

由于 MOS 管有导通电阻,当流过电流时,导致了电压降,因此,当负载越大时,导通压降越大,输出电压越不能达到轨。
 
所以说,轨到轨运放不是完全的可以使输出到达电源值,要使用的时候,还需要看负载和温度(影响导通电阻阻值)的关系来决定输出能达到多大电压。
 

 

 

2. 运放十坑之不可忽略的输入偏置电流 
设计了一个分压电路,理论上输入 1V,输出 2V,可是一测,总是多了近 6,7 百个 mV。这要是进 12 位 3V 量程 ADC,可是要吃掉 600 多个码。点解?

 

 

原来运放正向输入端和反向输入端由于 TVS 漏电流和管子输入偏置电流,导致了两个输入端存在输入偏置电流(而且由于没有任何一个器件和另外一个器件一模一样,这两者输入偏置电流还不尽相同);这两个偏置电流会与外部电阻一起形成偏置电压后,输出到后端,形成误差。如果你不巧选择了一个基于 BJT 设计的运放,它具有较大的输入偏置电流,就会造成很大的后级误差。如下图这种运放,真是“岂止于大,简直是莽”。

 

 

下面假设,两个输入端的输入偏置电流相同。

 

 

对于,正向输入端来说,Ib+带来偏置电压几乎等于 0,而对于反向输入端来说,Ib- 带来的偏置电压等于 350mV(计算时,假设 Vout 接地,相当于 R1//R2)。因此,需要的是在正向输入端增加一个电阻,来补偿反向输入端带来的误差。

 

 

正如前文所述,正反相输入偏置电流不尽相同,补偿只能减小失调电压,而正反相输入偏置电流差也称为失调电流。在进行高精度或小信号采样时,可以选用低失调电流运放,因为加入补偿电阻,也代入了一个新的噪声源,要慎重加入。

 

 

偏置电流是运放的主要误差之一,在之后的坑中,还会介绍一些影响后级的误差源。
 
3. 运放十坑之快速下降的 PSRR
当我是个菜鸟工程师的时候,做运放设计从来不考虑 PSRR,当听说过 PSRR 之后,每次选运放都会在成本控制基础上选择一个有较高 PSRR 的运放。
 
比如这款运放 PSRR 达到了 160dB:

 

 

根据计算公式:

 

 

即使电源电压在 4.5V-5.5V 区间内发生变化,电源对运放输出的影响只有 10nV。
 
很可惜,这个指标是指电源电压的直流变化,而不包括电源电压交流的变化(如纹波),在交流情况下,这个指标会发生非常大的恶化。Spec. 里面提到的只是直流变化,交流变化在后面图示里面,一般情况下,非资深工程师对待图示都是滑滑地翻过去。
 
如果运放电路使用了开关电源,又没有把去耦、滤波做得很好的话,后级输入精度会受到极大的影响。来看,同一款运放的交流 PSRR。

 

 

对于 500kHz 开关频率的纹波,PSRR+恶化到只有 50dB,假设纹波大小为 100mV,那么对于后级的影响恶化会达到 0.3mV。对于很多小信号采集的应用来说,这个误差是不可接受的。因此,有些应用场景甚至会在运放电源入口做一个低通滤波(请注意电阻功耗和电阻热噪声)。
 
4. 运放十坑之乱加的补偿电容
以前有个“老工程师”对我说,反馈电路加个电容,电路就不会震荡。一看到“震荡”这么高大上的词语,我当场就懵逼了,以后所有的电路都并一个小电容,这样才 professional。

 

 

直到一天,我要放大一个 100kHz(运气很好,频率还没有太高,不然电压反馈运放都没法玩)的信号,也是按照经验并上一个电容,然后。。。信号再也没有正常。。。因为,并上了这个电容反馈阻抗对于 100kHz 的信号变成了只有不到 200Ω,导致放大系数变化。
 
然,这还不是关键,问题在于:真的需要一个补偿电容吗?
 
首先,运放内部存在一个极点(把它想成就是 RC 低通造成的),它会造成相位的改变,最大到 -90°:

 

 

如果再增加一个极点呢,它又会再次对相位进行改变,最大还可以增加到 90°:

 

 

这样相位就到了 -180°,这有什么问题呢?那就是“震荡”。看一下电压负反馈运放的增益:

 

 

当某些频率点上的环路增益 Aβ等于 1,而相位为 -180°的时候,这时,Vout/Vin 会变成无穷大,电路就不稳定了。因此,当外部增加一个零点时,运放就会在某些频率点进入震荡,比如引脚上的分布电容,如下图:

 

 

这时,我们并上一个电容,相当于人为引入一个零点,把拉下去的相位,拉上来,但是,这个分布电容一般很小,使得它环路增益 Aβ等于 1 的位置非常远,在这么远的频点上,运放早就不能正常工作了。而看手册这个运放自身在 100k 的时候,相位余量相当的高,超过了 90°,完全不需要增加额外的补偿电容。

 

 

因此,对于具体情况,要具体分析,不能被“老工程师”带着跑了。
 
5. 运放十坑之被冤枉的共模输入范围 

以前遇到过一个问题,前级运放放大后,再由运放跟随进 ADC,进 ADC 的信号是 0.3V-1.5V。感觉是个很简单的电路,但是后面实测这颗工作电压为单电源 5V 的运放,有部分板卡在输出 1.5V 左右的时候,它的输出值并没有完全跟随到输入值,而低于比 1.5V 的信号,跟随都没问题,但是一旦接近就不对。
 
当然,这个问题就上了硬件组的会议,最后讨论的结果是:“这个运放有问题,我们要找厂商嚎盘,但是我们是 xx 企业,别个又不得理我们,这样吧,我们换一个其它公司的运放”。不幸的是,我们冤枉了一颗运放,并且没有找到问题原因,幸运的是,在没有完全弄清原理的前提下,我们碰巧选到了一颗可以正常工作的运放。
 
来看下这款运放的一个指标,运放共模输入范围:

 

 

运放共模输入范围是运放输入电压的一个区间,它表征的是运放能够线性工作的区间,即输入电压共模值在这个区间内,当输入电压发生变化时,输出电压能够线性的发生变化。
 
对于跟随电路,由于存在负反馈,基本上可认为正相输入端电压和负相输入端电压是同一个值,而这颗运放在 5V 供电时,它的共模输入范围是 -0.1V 至 1.5V。因此,当输入电压在 1.5V 左右的时候,运放就存在不能正常线性跟随的情况。
 
为什么不能跟随呢?来看一个三极管放大电路,它也是运放的组成部分之一,来进行举例说明。

 

 

当输入的 Vb 发生变化时,Ie 就会随着 Vb 发生相应的变化,从而引起 Vc 的变化,这就是跟随。若 Vb 继续增大到,使得 Vc=Vcc-Ie x Rc 计算值为负数的时候,而实际上 Ie x Rc 并不能超过 Vcc,这时放大电路达到饱和甚至电流反相,导致输出电压固定或削峰或反向等。
 
6. 运放十坑之不可忽略的压摆率 
做 1pps 驱动电路,要求上升沿≤5ns,FPGA 输出的信号用运放跟随增强驱动后,发现上升沿达不到要求。为什么呢?因为没有考虑到一个重要的指标,压摆率。压摆率是指:输入为阶跃信号时,闭环放大器的输出电压时间变化率的平均值。即输入一个理想的阶跃信号,输出会是一个带斜率信号,这个信号的爬升速率就是压摆率。

 

 

看一下这个运放的压摆率:

 

 

根本达不到要求啊,5ns 只能爬升 20mV,所以,上升沿根本达不到设计需求。怎么办呢?后期飞线增加了一个脉冲增强电路。

 

 

脉冲增强电路 C4 和 R4,相当于一个微分电路 C4 和 RL(当 C x RL 远小于压摆率时间)加一个直流电阻 R4,使得负载 RL 上的信号边沿变得更加陡峭。分析一下:
 
a. 电容 C4 与 RL 形成分压电路,根据下图的计算公式,C4 上电压的变化率等于 RL 上的电压值。

 

 

b. 那么假设电容电压变化率在 0-τ范围内是几乎不变化的,那么负载 RL 上面的电压也是几乎不变的,一旦电容开始充电(电压发生变化),负载 RL 的电压就上升到顶点。记为波形 1,如下图。

 

 

c. 然后在电容充电结束后开始下落,为了解决没有变化率就没有电压的问题,增加一个直流电阻 R4 维持波形,它是一个直通波形,也就是原始波形,记为波形 2。

 

 

d. 两个波形合在一起后,由于波形 1,波形 2 的上升沿得到极大增强,从而使得合成波形上升沿得以改善。
 
7. 运放十坑之被遗忘的反馈电阻 
为了扩大外部驱动能力,一般会在最后一级增加一个跟随电路,选择电流反馈运放 -CFA 增加运放的输出带宽。好简单哦,可惜你就是调不出来。还是先看图吧。好简单哦,可惜你就是调不出来。还是先看图吧。

 

 

什么电源轨、共模输入范围、增益积带宽、带载能力、压摆率。。。我全都考虑了啊,还是不对呢?
 
因为,CFA 和 VFA(电压反馈运放)不一样,读书时学的运放,基本上老师都是拿 VFA 进行举例和讲解。下图是 CFA 运放的模型:

 

 

它与 VFA 区别是,输入端不再是两个都虚断,反相输入电阻 ZB 是个非常小的值,但又绝对不能认为是零;它的开环增益 Gout 不再是非常大,而是约等于 1;它的跨阻 Z 可以认为是无穷大。
 
因此,CFA 的跟随电路的电路模型如下:

 

 

解出 Aβ等于:

 

 

它的闭环增益是:

 

 

当没有反馈电阻 ZF 的时候,A 约等于 1,ZF 趋近于 0,Aβ趋近于无穷,增益趋近于 0,和想要的跟随电路完全不一样,也就是网上常说的“CFA 不加反馈电阻就没信号”。(没找到这句话,忘记是在哪里看到的了,只能看下 CFA 手册上对反馈电阻的介绍)

 

 

因此,要增加一个反馈电阻,电路就会正常工作了。
 
PS:上面推导计算有技巧,只能从 Aβ进行计算推导,因为 CFA 的计算前提是反相输入电阻 ZB 是个非常小的值;它的跨阻 Z 可以认为是无穷大,所以,要在求极限是找到一个单一变量,如果按照最终表达进行求极限,一个函数,三个变量(ZF 趋近于 0,ZB 趋近于 0,Z 趋近于无穷),没法玩,如下图。

 

 

8. 运放十坑之失效的 AD620 
在我读大学的年代,仪用放大器绝对是一个高 X 格的词语,在那个还常见三运放搭差分运放的年代,仪放是超高共模抑制比、高温度稳定性的代名词,正相反相两个电压差一减,就得到了结果,这绝对是一个采集 EEG 信号的好东西啊。
 
由于 EEG 信号幅度很小,加上前级放大,也不过 1V 左右,因此,屡试不爽也没什么问题。后来要做一个工业现场信号检测,就不正常了。还是先看图吧:

 

 

采集 4-20mA 电流,得到 1V-5V 电压差,放大 2 倍后进入后级 ADC。为了防止电阻功耗过高,R128,R129,R130 三个电阻采用了并联取值的方式,最终取到了 250Ω这个值。
 
分析一下,正相输入端 2V-10V,符合器件输入范围(VCC-1.4V),反相输入端 1V-5V,我加了负电,那更是符合了;然后看放大倍数 2 倍,Vmax=10V,也符合器件输出范围(VCC-1.4V);电源、放大倍数、去耦等等都没有问题。这是一个显得没有任何错误的原理图,但是实际上,它会在高输入电压值时发生错误。
 
看下内部原理,就明白了(这里选一个手上有的资料,非 AD620 的内部原理,其实仪放原理都差不多)

 

 

正相输入电压和反相输入电压体现在仪放内部的 R2 处,而真正进行输出的电压,是由 V1out 和 V2out 体现的,换一句话说,最终增加的电压值平分为两份,一份由 V1out 提供,它会比 V1 高,另外一份由 V2out 提供,它会比 V2 低。
 
再看原理图,在 20mA 的时候,Vin+达到了 10V,Vin- 是 5V,放大 2 倍,在仪放内部需要将 Vin+放大到 12.5V。这已经超过了仪放供电电压,因此,是绝对不可能正常工作的。
 
9. 运放十坑之 ADC 的采样时间被运放拖累 

ADC 采集信号,信号稳定的时候,很准确;信号变化的时候,数据不稳定。当然了,ADC 有采样时间,软件工程师也知道,他采了 10 次,只取后 5 次,但是数据还是有不稳定的状态。让硬件来看电路,硬件工程师说,电路当然没有问题了,全是从别人那里扣来的,怎么在我这就有问题了?
 
先看 ADC 的指标 Tcycmin=500ns 和 Tacqmin=80ns,这是颗 SAR 型 ADC,速度能上 Mbps,还算挺快的。所以,它连续采样 10 次,所用时间也才 10μs 左右。

 

 

 

而运放从信号输入到输出,并不是一个无延时的过程,而是一个有延时还带震荡的过程,同时,这个过程的时间还会因为后级线路的 PCB 设计而增大。如下图:

 

 

看一下运放的指标,当 4V 时,达到 0.01%,时间为 5.1μs,此时带来的波动误差是 0.4mV,而在 4V 范围内,一个 16 位 ADC 的 1LSB 为 0.06mV。误差可以吃掉 6,7 个码字,如果再加上分布电容和走线电阻,这个时间会进一步增加,使得后级稳定时间增长,从而导致误差变得更加的大。

 

 

后来,软件工程师调低了采样率,增加了采集时间,问题得以解决。
 
10. 运放十坑之被遗忘的功耗
做过一款板卡,功耗要求很严格,因此,设计完成后,就画了电源树,计算了每个器件的功耗,没有超,然后投版,调试,一上电,功耗超标。
 
后面一检查,发现是运放功耗计算的时候出现了问题,下图这样的运放电路用了 5 个。

 

 

由于是直流驱动,在计算的时候,只考虑了运放本身的静态功耗,PD=15V x 4.2mA =63mW,按照最大静态功耗来考虑,功耗余量还绰绰有余。

 

 

实际上,忽略了一个重要的功率消耗点:运放供电电压 15V 到输出电压(1V-4.5V)之间的电压差,全部在运放里面消耗了,按照最大压差计算,一个电路就消耗 140mW。这种耗散功率,以前从来没有考虑过,所以,全部都选择性的忽略了,当遇到功耗要求紧张的需求时,问题就暴露出来了。
 
后面改版的时候,选择了低电压给运放供电,减少了耗散功耗,满足了指标要求。