一、运算放大器是不是非线性器件
▌01 运算放大器的非线性
1.运算放大电路

作为信号处理的常用器件,运算放大器,在其信号处理范围之内,通常认为是线性器件。也就是它的增益不随着信号的幅度变化而改变。影响运算放大电路精度的因素,或者说它的线性特性主要是由它的输入偏置电压、偏置电流造成的输出零点的偏移。这一点往往可以通过增加零点补偿调整电阻进行消除。

但是对于运放的非线性,即它的开环增益随着信号幅度变化而变化的特性往往并不为人所重视。这是因为在常见到的运算放大电路中,通常采用反馈放大器的形式,只要运算放大器的增益足够大,电路的放大倍数是由外部的反馈电阻网络决定的。比如下面的电路:

嵌入式分享合集78_运算放大器

 它的增益为:

嵌入式分享合集78_传递函数_02

其中:α 是反馈电阻网络的比值:,是运放的开环电压增益。如果足够大,电路的增益将会由R1,R2的比值决定。

但是作为精密放大电路,特别是要求放大倍数比较高的时候,随着输入电压的变化,也就是运放的非线性就不能够忽略了。特别是,这种非线性无法向电压零点补偿那样容易消除。

2.如何测量运放非线性?

通常在运算放大器芯片的数据手册中不会给出芯片的非线性指标。那么如果评估芯片增益的非线性呢?

一些主要提供运放器件的半导体厂家会在其网站给出一些测量他们运放产品开关增益测量方案,比如TI公司 TI:Gain and Linearity Testing for Precision Operational Amplifiers,或者ADI公司 AD:Op-Amp Open Loop Gain and Open Loop Gain Nonlinearity

这些方案也都是比较成熟的测量方式。为了能够对于通常比较大的运放开环电压增益(通常大于100000)进行测量,所采用的方法是对反馈电压再经过分压之后连接至运放的负极性输入端口。这样便可以将运放输入端微小的电压放大之后反映在电路的输出端口。

比如下面个电路就是分别来自TI,ADI公司的测量方案:

嵌入式分享合集78_运放_03


 

通过在输入端加入低频三角波形(10~50Hz)信号,通过观察输出信号的变化可以获得器件的开环电压增益以及对应的非线性。

▌02 实验结果

下面的实验来测量一款常见的运放它的电压增益的非线性。

1.测试芯片

用于实验的芯片为 HA17741[3] 是一款由HITACHI提供的频率相位补偿的通用运算放大器,主要用于测试与控制领域。开环增益约106dB (200,,000倍),最大工作电压±18V。下图给出了期间的管脚功能定义。

 

嵌入式分享合集78_传递函数_04

HA17741内部的等效电路如下图所示。 

嵌入式分享合集78_运放_05

根据内部结构可以看到芯片的输入电压偏置补偿是通过PIN1,PIN5提供的。使用数字万用表测量PIN1,PIN5对于PIN4(VEE)之间的电阻,阻值分别为(976Ω,975Ω)。下图给出了外部通过一个三端电位器对芯片进行输入偏置电压进行补偿。

2.测试电路

根据前面ADI测测试方案,在面包板上简单搭建起测试电路。其中放大器件偏置电压信号是由R3、Ros的比值决定。它们实际上与运放一起,减少了前向放大增益,进而在输出信号增加了运放输入信号放大之后的成分。

固定R3=1MΩ不变,通过改变Ros的大小,观察输出信号的变化。

嵌入式分享合集78_运算放大器_06

3.测量结果

下面分别选择Ros为∞Ω,100Ω,22Ω,10Ω,记录运放的输出信号。输入信号为峰峰值10V,频率为10Hz的三角波信号。

□ Ros=∞Ω

下图显示,输入输出信号保持严格的反向,增益为 -1。此时运放的非线性(增益随着输入电压变化)的特性没有反映到输出信号中来。

嵌入式分享合集78_运算放大器_07

□ Ros=100Ω

嵌入式分享合集78_运算放大器_08

□ Ros=22Ω

此时电路放大倍数已经降低可-0.5左右。输出信号的非线性比较明显了。特别是当信号比较大的时候,也就是输入信号三角波的定点,对应的输出信号变得圆滑了。

嵌入式分享合集78_运算放大器_09

 □ Ros=10Ω

嵌入式分享合集78_嵌入式硬件_10

下图是将输出信号通过示波器放大之后,可以更加明显体现出运放的增益中存在的严重的非线性。 

 

嵌入式分享合集78_运算放大器_11

▌结论

通过运放开环增益测量电路看到运算放大器是一个严重的非线性器件。在实际应用中是通过电压反馈来抑制了运放对放大电路的影响。

二、开关电源环路笔记-TL431及光耦传递函数的推导

如何求出从TL431到光耦的传递函数?

下图是反激的TL431的典型电路,我们的目标就是求出传递函数Vout (s)/Verr(s)。

嵌入式分享合集78_传递函数_12

相关器件的处理过程

TL431的处理

求解的第一个问题就是那个TL431不好处理,不是很好下手,它不是我们熟知的运算放大器,也不是跨导放大器(有些地方说是可以看成跨导放大器,但我觉得看成跨导放大器也不好计算吧),那怎么办呢?  

我们看下TL431等效电路,翻开TL431的手册,下图是Ti 的TL431手册中的等效电路图:

嵌入式分享合集78_运放_13

等效电路可看作是两级放大,第一级为运放,第二级为三极管放大。准确的说,第二级是三极管放大,不过集电极需要上拉到电源才能放大,好在我们的电路就是通过电阻和光耦的发光二极管上拉到电源。

嵌入式分享合集78_运算放大器_14

如果理解为两级放大,那就就简单了,我们把它合并为一级就好了,当然两级增益会较一级更大,不过不影响,第一级都能看成理想运放了(增益无穷),两级增益更大,一样看成是无穷就好。

不过需要注意,第一级放大是同相放大器,输入增大,输出也增大;第二级的三极管放大,信号是反相的,基极B电压增大,会导致集电极输出电压减小,信号反相。所以两级合并之后,变成了反相放大器,REF接的是负相端“-”。

想想,输入电压REF增大,第一级运放输出也会增大,输入到三极管的基极B,集电极C电压会减小,是不是这样?

所以,我们可以把TL431进一步等效为我们熟悉的运放了,就是下面的东东:

 

嵌入式分享合集78_嵌入式硬件_15

光耦处理

处理完LT431,还有光耦,其实光耦不用处理,因为当其工作在线性区的时候,总会有一个公式成立,那就是光耦的电流传输比CTR:

嵌入式分享合集78_运放_16

我们只需要计算出光耦发光管的电流IF,然后就能根据电流传输比CTR(光耦手册一般有标注),得到光敏晶体管端的电流Ic,然后乘以电阻,就可以得到output的电压了。

嵌入式分享合集78_运算放大器_17

但是问题又来了,IF如何得到呢?发光二极管本身的电压和电流是非线性的,那怎么办呢?

二极管导通时,其可用一个电压源Vf和动态电阻Rd来表示,Vf即二极管的导通压降。

 

嵌入式分享合集78_运放_18

然后我们结合实际的情况,二极管的Rd一般都比较小,以PC817为例,下图是PC817的发光二极管的曲线。 

嵌入式分享合集78_传递函数_19

我们从曲线上非常粗糙的得到Rd=12.5Ω,这是一个非常糙的值,虽然不准,但是我们可以知道它的量级是几十欧姆,比较小。另外一方面,Rled和Rbias的值一般都是kΩ级别的,因此Rd相对于它俩来说可以忽略掉。

因此,为了简单,我们分析这个电路的时候,完全可以认为二极管两端电压恒定不变,等效为一个电压源,即为Vf不变。

上面说得有点啰嗦,其实主要是为了说明道理。另外一方面,如果二极管的偏置电流比较小,那么Rd会比较大(从上图可以看到,当电流小,伏安特性曲线的切线斜率会小,即Rd会比较大),还是忽略Rd的话,计算可能就不是很准确。关于这个,具体细节就不深究了,如果感兴趣,完全可以不忽略Rd进行计算,计算方法都是一样的,我写这个的目的也不是为了给出一个电路的计算结果,而是希望通过这样一个例子,让兄弟们知道这种电路该咋搞。

下面来看看具体计算过程。

计算过程

有了上面的分析,我们可以把原来的电路等效为下图,现在所有的器件都是我们熟知的器件,计算出传递函数应该就不在话下了。

嵌入式分享合集78_传递函数_20


 传递函数计算过程如下: 

嵌入式分享合集78_运放_21

1、电路稳定后,当Vout增加了△Vo

2、根据运放的“虚短”,负相端电压为2.5V不变,那么R1增加的电流为:△Vo/R1

3、负相端电压2.5V不变,那么Rlower的电流不会有变化;同时根据运放的“虚断”,负相端节点电流一直为0,即不会变化;根据运放的负相端节点电流总和为0,那么R1增加的电流是从Zc流过,即Zc的电流增加量也为:△Vo/R1。

4、Zc电流增加了△Vo/R1,那么意味着Zc两端电压增加了:△Vo*Zc/R1,而Zc右边电压为2.5V不变,那么只有可能是Zc左边的电压发生了变化,变化量为:-△Vo*Zc/R1。因为Zc的电流是往左增大,所以Zc左边的电压是减小的,所以加了一个负号。

5、Zc左边的电压,也就是放大器的输出电压,即放大器输出端电压增加了:-△Vo*Zc/R1。

6、运放输出端电压增加了-△Vo*Zc/R1,Rbias两端电压为VF不变,那么RLed下端的电压也就增加了-△Vo*Zc/R1,而Rled上端电压增加了△Vo,因此,RLed两端电压增加了:△Vo-(-△Vo*Zc/R1)=(1+Zc/R1)*△Vo

7、知道了Rled的电压增量,那么Rled的电流增量为:(1+Zc/R1)*△Vo/Rled

8、又因为Vf恒定不变,那么Rbias的电流恒定不变,所以Rled的电流增量全部流过二极管。即二极管的电流增量为:△If= (1+Zc/R1)*△Vo/Rled

9、二极管电流增量为△If,那么光耦的晶体管电流增量为:△Ic=CTR*△If= CTR* (1+Zc/R1)*△Vo/Rled

10、Rpullup的电流增量也为△Ic,那么Rpullup两端的电压增量为△Ic*Rpullup,这个电压增量也就是Verr的电压减小量,所以△Verr=- CTR* (1+Zc/R1)*△Vo*Rpullup/Rled,我们把公式变换下,即:△Verr/△Vo=- CTR* (1+Zc/R1) *Rpullup/Rled,至此,我们的传递函数就求出来了。

三、为什么单片机的I/O口需要驱动

    为什么单片机的I/O口需要驱动呢?这个问题需要从I/O口的电气特性上进行解释。

    首先,给出单片机典型的I/O口,即P1口电气结构图,如图所示。P1口通常是作为通用I/O口使用,不需要多路转换电路MUX。其输出级电路内部有上拉电阻,与场效应管共同组成输出驱动电路。因此,P1口作为输出时,不需要再外接上拉电阻,而当P1口作为输入口使用时,仍然需要先向锁存器写“1”,截止场效应管。

嵌入式分享合集78_运算放大器_22

    内部上拉电阻阻值很大,经过测量大致在330KΩ左右,而内部电源Vcc仅仅+5V,这样以P1.X高电平驱动发光二极管为例,场效应管截止,相当于Vcc通过330KΩ的电阻向二极管提供电流,5/330*10-3=0.015mA,而二极管的点亮电流为5mA至10mA,这就说明单片机的端口只是驱动TTL电平,不提供或提供很小的驱动电流,所以在带负载时,单片机应当在I/O口加上驱动芯片。