本文作者:任俊如
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信号(脑电波(Electroencephalogram,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。这种耗散功率,以前从来没有考虑过,所以,全部都选择性的忽略了,当遇到功耗要求紧张的需求时,问题就暴露出来了。
后面改版的时候,选择了低电压给运放供电,减少了耗散功耗,满足了指标要求。
评论