与运算的javascript输入运算符可以是两个,也可以是多个

EXCEL中关于角度的输入、输出及转换计算技巧
我的图书馆
EXCEL中关于角度的输入、输出及转换计算技巧
EXCELEXCEL
1343245.6EXCEL
EXCELEXCEL
EXCELRADIANS()DEGREES()180/
11333243133.32431333243133+32/60+43/3600133.5452778RADIANS()
EXCELEXCEL19001111900122 2008
3944819001020103456
h:m:s15234815:23:4812415:23:480.641528
& 15:23:483. 641528
<font color="#:23:34
<font color="#00/1/1& 0:05:09
<font color="#00/1/2& 6:30:34
<font color="#00/1/3& 15:23:48
<font color="#00/1/4& 22:32:11
d:hh:mm:ssdhms0
[h]:mm:ss24
& 22:32:11
543034& 6:30:3454:30:34543034[h]mmss
EXCEL[h]mmss121-21+212
[h]mmss.00
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 5272 人关注过本帖
标题:用类表示分数,输入两个分数,能对其进行加减乘除四个运算,并输出结果。
等 级:新手上路
帖 子:23
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:7&&&
用类表示分数,输入两个分数,能对其进行加减乘除四个运算,并输出结果。
#include&iostream&
class Frac
&&&&&&void set_frac();
&&&&&&void add_frac();
&&&&&&void sub_frac();
&&&&&&void multi_frac();
&&&&&&void divi_frac();
&&&&&&void output_frac();
&&private:
&&&&&&float frac1;
&&&&&&float frac2;
void Frac::set_frac()
&&& cin&&frac1;
&&& cin&&frac2;
void Frac::add_frac()
&&& t=frac1+frac2;
void Frac::sub_frac()
&&& m=frac1-frac2;
void Frac::multi_frac()
&&& n=frac1*frac2;
void Frac::divi_frac()
&&& k=frac1/frac2;
void Frac::output_frac()
&&& cout&&frac&&
int main()
&&& f.set_frac();
&&& f.add_frac();
&&& f.sub_frac();
&&& f.multi_frac();
&&& f.divi_frac();
&&& f.output_frac();
这是我刚写的一个关于类的程序,要求用类表示分数,输入两个分数,能对其进行加减乘除四个运算,并输出结果,但是不能运行出相应结果,而且在进行除法部分的除这个符号不知道该用什么,/表示的是除后取整,而%表示的是除后取余,这个程序要怎么调一下?
搜索更多相关主题的帖子:
等 级:论坛游民
帖 子:11
专家分:13
#include&stdio.h&
int gys(int x,int y)
&&& return y?gys(y,x%y):x;
int gbs(int x,int y)
&&& return x/gys(x,y)*y;
void yuefen(int fz,int fm)
&&& int s=gys(fz,fm);
&&& fz/=s;
&&& fm/=s;
&&& printf(&the result is %d/%d\n&,fz,fm);
void add(int a,int b,int c,int d)
&&& int u1,u2,v=gbs(b,d),fz1,fm1;
&&& u1=v/b*a;
&&& u2=v/d*c;
&&& fz1=u1+u2;
&&& fm1=v;
&&& yuefen(fz1,fm1);
void mul(int a,int b,int c,int d)
&&& int u1,u2;
&&& u1=a*c;
&&& u2=b*d;
&&& yuefen(u1,u2);
void sub(int a,int b,int c,int d)
&&& int u1,u2,v=gbs(b,d),fz1,fm1;
&&& u1=v/b*a;
&&& u2=v/d*c;
&&& fz1=u1-u2;
&&& fm1=v;
&&& yuefen(fz1,fm1);
void div(int a,int b,int c,int d)
&&& int u1,u2;
&&& u1=a*d;
&&& u2=b*c;
&&& yuefen(u1,u2);
void main()
&&& int a,b,c,d;
&&& scanf(&%ld %ld %c %ld %ld&,&a,&b,&op,&c,&d);
&&& switch(op)
&&& case '+':add(a,b,c,d);
&&& case '-':sub(a,b,c,d);
&&& case '*':mul(a,b,c,d);
&&& case '/':div(a,b,c,d);
运行后输入5 4 * 5 2然后按Enter键就能算出四分之五乘以二分之五的值了...
来 自:北京
等 级:贵宾
威 望:94
帖 子:6779
专家分:16751
楼主怎么可能加减乘除这样的函数都不要参数就算呢。就一个分数和谁加呀?
2楼的虽然是 C 式的,但也很有参考价值。楼主可以看看。
等 级:新手上路
帖 子:23
回复 3楼 pangding
我就是不明白在程序里面的分数要怎么表示,如果用/表示那不是取整吗?现在知道可以分子分母分别表示了!
等 级:新手上路
帖 子:23
#include&iostream&
class Fenshu
&&& public:
&&&&&&&&void input_fenshu();
&&&&&&&&void yuefen_fenshu();
&&&&&&&&void add_fenshu();
&&&&&&&&void mul_fenshu();
&&&&&&&&void sub_fenshu();
&&&&&&&&void div_fenshu();
&&& private:
void Fenshu::input_fenshu()
void Fenshu::yuefen_fenshu()
&&& fz/=s;
&&& fm/=s;
&&&printf(&the result is %d/%d\n&,fz,fm);
void Fenshu::add_fenshu()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//作加法
&&& int u1,u2;
&&& int v,a,b,c,d;
&&& int fz1,fm1;
&&& u1=v/b*a;
&&& u2=v/d*c;
&&& fz1=u1+u2;
&&& fm1=v;
&&& void Fenshu::yuefen_fenshu();
void Fenshu::mul_fenshu()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//作乘法
&&& int u1,u2;
&&& int a,b,c,d;
&&& u1=a*c;
&&& u2=b*d;
&&& void Fenshu::yuefen_fenshu();
void Fenshu::sub_fenshu()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//作减法
&&& int u1,u2;
&&& int v,a,b,c,d;
&&& u1=v/b*a;
&&& u2=v/d*c;
&&& fz=u1-u2;
&&& void Fenshu::yuefen_fenshu();
void Fenshu::div_fenshu()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//作除法
&&& int u1,u2;
&&& int a,b,c,d;
&&& u1=a*d;
&&& u2=b*c;
&&& void Fenshu::yuefen_fenshu();
int main()
&&&&&f.input_fenshu();
&&&&&f.yuefen_fenshu();
&&&&&f.add_fenshu();
&&&&&f.mul_fenshu();
&&&&&f.sub_fenshu();
&&&&&f.div_fenshu();
&&我想用c++来写这个程序,这是我将上面的程序按c++改后的程序,可还是运行不出结果,麻烦帮我看一下!
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
程序代码:#include &stdio.h&
#include &math.h&
void easy(int * pa, int * pb)
&&& for(int i = <font color=#;i&=fabs(*pa);i++)
&&&&&&&&if(<font color=# == *pa%i && <font color=# == *pb%i)
&&&&&&&&&&&&*pa /=
&&&&&&&&&&&&*pb /=
int main()
&&& int a,b,c,d;
&&& a = b = c = d = <font color=#;
&&& a=<font color=#;b=<font color=#;c=<font color=#;d=<font color=#;
&&& int x1 = a*d;//加法
&&& int x2 = c*b;
&&& int y = b*d;
&&& int x = x1 + x2;
&&& easy(&x,&y);
&&& printf(&加法:%d/%d\n&,x,y);
&&& x1 = a*d;//减法
&&& x2 = c*b;
&&& y&&= b*d;
&&& x&&= x1 - x2;
&&& easy(&x,&y);
&&& printf(&减法:%d/%d\n&,x,y);
&&& y&&= b*d;//乘法
&&& x&&= a*c;
&&& easy(&x,&y);
&&& printf(&乘法:%d/%d\n&,x,y);
&&& y&&= b*c;//除法
&&& x&&= a*d;
&&& easy(&x,&y);
&&& printf(&除法:%d/%d\n&,x,y);
&&& return <font color=#;
}自己封装去&&&别忘了要有虚函数
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
===========深入&-----------------&浅出============
等 级:新手上路
帖 子:23
我想找个高手帮我改下我写的那个c++的程序,用c写的程序给我思考,可我还是不知道自己的程序在哪出错了……
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
你的错误:
1. 如 3 楼 pangding 所言,四则运算的函数怎么能不要参数呢?
2. 分数的四则运算过程必须分别计算分子和分母,你写的函数怎么能把自己定义的类当做 float 类型来对待呢?
你先去把基础知识好好的学一下吧,把最基本的概念搞清楚。
下面是个非常简单的 c 代码,看一下吧
程序代码:#include &stdio.h&
#include &math.h&
typedef struct {
&&& int n,
void red_frac(fraction * f) {
&&& for (i = <font color=#; i &= abs(f-&n) && i &= abs(f-&d); i++) {
&&&&&&&&while (f-&n % i == <font color=# && f-&d % i == <font color=#) {
&&&&&&&&&&&&f-&n /=
&&&&&&&&&&&&f-&d /=
&&& if ((f-&n & <font color=# && f-&d & <font color=#) || (f-&n &<font color=# && f-&d & <font color=#)) {
&&&&&&&&f-&n = -abs(f-&n);
&&& } else {
&&&&&&&&f-&n = abs(f-&n);
&&& f-&d = abs(f-&d);
void set_frac(fraction * f, int n, int d) {
&&& f-&n =
&&& f-&d =
&&& red_frac(f);
void add_frac(fraction * r, fraction lop, fraction rop) {
&&& r-&n = lop.n * rop.d + lop.d * rop.n;
&&& r-&d = lop.d * rop.d;
&&& red_frac(r);
void sub_frac(fraction * r, fraction lop, fraction rop) {
&&& r-&n = lop.n * rop.d - lop.d * rop.n;
&&& r-&d = lop.d * rop.d;
&&& red_frac(r);
void mul_frac(fraction * r, fraction lop, fraction rop) {
&&& r-&n = lop.n * rop.n;
&&& r-&d = lop.d * rop.d;
&&& red_frac(r);
void div_frac(fraction * r, fraction lop, fraction rop) {
&&& r-&n = lop.n * rop.d;
&&& r-&d = lop.d * rop.n;
&&& red_frac(r);
void put_frac(fraction f) {
&&& printf(&(%d/%d)&, f.n, f.d);
int main() {
&&& fraction a, b,
&&& set_frac(&a, <font color=#, <font color=#);
&&& set_frac(&b, -<font color=#, <font color=#);
&&& add_frac(&c, a, b);
&&& put_frac(a), printf(& + &), put_frac(b), printf(& = &), put_frac(c), printf(&\n&);
&&& sub_frac(&c, a, b);
&&& put_frac(a), printf(& - &), put_frac(b), printf(& = &), put_frac(c), printf(&\n&);
&&& mul_frac(&c, a, b);
&&& put_frac(a), printf(& * &), put_frac(b), printf(& = &), put_frac(c), printf(&\n&);
&&& div_frac(&c, a, b);
&&& put_frac(a), printf(& / &), put_frac(b), printf(& = &), put_frac(c), printf(&\n&);
&&& return <font color=#;
[ 本帖最后由 voidx 于
23:31 编辑 ]
版权所有,并保留所有权利。
Powered by , Processed in 0.059742 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved运算放大器工作原理
> 运算放大器工作原理
运算放大器工作原理
  基本上可以算得上是模拟电路的基本需要了解的电路之一,而要想更好用好运放,透彻地了解工作原理是无可避免,但是运放攻略太多,那不妨来试试这篇用电路图作为主线的文章来带你领略的工作原理吧。本文引用地址:1.综述:  运算放大器组成的电路五花八门,令人眼花瞭乱,在分析时倘没有抓住核心,往往令人头大。本文收集运放电路的应用电路,希望看完后有所收获。但是在分析各个电路之前,还是先回忆一下两个运放教材里必教的技能,就是“虚短”和“虚断”。  “虚短”是指在分析运算放大器处于线性状态时,可把两输入端视为等电位,这一特性称为虚假短路,简称虚短。显然不能将两输入端真正短路。  “虚断”是指在分析运放处于线性状态时,可以把两输入端视为等效开路,这一特性 称为虚假开路,简称虚断。显然不能将两输入端真正断路。2.经典电路图一  图一运算放大器的同向端接地=0V,反向端和同向端虚短,所以也是0V,反向输入端输入电阻很高,虚断,几乎没有电流注入和流出,那么R1和R2相当于是串联的,流过一个串联电路中的每一只组件的电流是相同的,即流过R1的电流和流过R2的电流是相同的。流过R1的电流I1 = (Vi - V-)/R1 ……a 流过R2的电流I2 = (V- - Vout)/R2 ……b V- = V+ = 0 ……c I1 = I2 ……d 求解上面的初中代数方程得Vout = (-R2/R1)*Vi 这就是传说中的反向放大器的输入输出关系式了。3.运算放大器工作原理经典电路图二  图二中Vi与V-虚短,则 Vi = V- ……a 因为虚断,反向输入端没有电流输入输出,通过R1和R2 的电流相等,设此电流为I,由欧姆定律得: I = Vout/(R1+R2) ……b Vi等于R2上的分压, 即:Vi = I*R2 ……c 由abc式得Vout=Vi*(R1+R2)/R2 这就是传说中的同向放大器的公式了。4.运算放大器工作原理经典电路图三  图三中,由虚短知: V- = V+ = 0 ……a 由虚断及基尔霍夫定律知,通过R2与R1的电流之和等于通过R3的电流,故 (V1 – V-)/R1 + (V2 – V-)/R2 = (Vout – V-)/R3 ……b 代入a式,b式变为V1/R1 + V2/R2 = Vout/R3 如果取R1=R2=R3,则上式变为Vout=V1+V2,这就是传说中的加法器了。  (编辑者注)质疑:(V1 – V-)/R1 + (V2 – V-)/R2 = (V- – Vout)/R3 ……b 图三公式中少了个负号?5.运算放大器工作原理经典电路图四  请看图四。因为虚断,运算放大器同向端没有电流流过,则流过R1和R2的电流相等,同理流过R4和R3的电流也相等。故 (V1 – V+)/R1 = (V+ - V2)/R2 ……a (Vout – V-)/R3 = V-/R4 ……b 由虚短知: V+ = V- ……c 如果R1=R2,R3=R4,则由以上式子可以推导出 V+ = (V1 + V2)/2 V- = Vout/2 故 Vout = V1 + V2 也是一个加法器,呵呵!6.运算放大器工作原理经典电路图五  图五由虚断知,通过R1的电流等于通过R2的电流,同理通过R4的电流等于R3的电流,故有 (V2 – V+)/R1 = V+/R2 ……a (V1 – V-)/R4 = (V- - Vout)/R3 ……b 如果R1=R2, 则V+ = V2/2 ……c 如果R3=R4, 则V- = (Vout + V1)/2 ……d 由虚短知 V+ = V- ……e 所以 Vout=V2-V1 这就是传说中的减法器了。7.运算放大器工作原理经典电路图六  图六电路中,由运算放大器的虚短知,反向输入端的电压与同向端相等,由虚断知,通过R1的电流与通过C1的电流相等。通过R1的电流 i=V1/R1 通过C1的电流i=C*dUc/dt=-C*dVout/dt 所以 Vout=((-1/(R1*C1))∫V1dt 输出电压与输入电压对时间的积分成正比,这就是传说中的积分电路了。若V1为恒定电压U,则上式变换为Vout = -U*t/(R1*C1) t 是时间,则Vout输出电压是一条从0至负电源电压按时间变化的直线。8.运算放大器工作原理经典电路图七  图七中由虚断知,通过电容C1和电阻R2的电流是相等的,由虚短知,运算放大器同向端与反向端电压是相等的。则: Vout = -i * R2 = -(R2*C1)dV1/dt 这是一个微分电路。如果V1是一个突然加入的直流电压,则输出Vout对应一个方向与V1相反的脉冲。9.运算放大器工作原理经典电路图八  图八.由虚短知 Vx = V1 ……a Vy = V2 ……b 由虚断知,运算放大器输入端没有电流流过,则R1、R2、R3可视为串联,通过每一个电阻的电流是相同的,电流I=(Vx-Vy)/R2 ……c 则: Vo1-Vo2=I*(R1+R2+R3) = (Vx-Vy)(R1+R2+R3)/R2 ……d 由虚断知,流过R6与流过R7的电流相等,若R6=R7, 则Vw = Vo2/2 ……e 同理若R4=R5,则Vout – Vu = Vu – Vo1,故Vu = (Vout+Vo1)/2 ……f 由虚短知,Vu = Vw ……g 由efg得 Vout = Vo2 – Vo1 ……h 由dh得 Vout = (Vy –Vx)(R1+R2+R3)/R2 上式中(R1+R2+R3)/R2是定值,此值确定了差值(Vy –Vx)的放大倍数。这个电路就是传说中的差分放大电路了。10.运算放大器工作原理经典电路图九  分析一个大家接触得较多的电路。很多控制器接受来自各种检测仪表的0~20mA或4~20mA电流,电路将此电流转换成电压后再送ADC转换成数字信号,图九就是这样一个典型电路。如图4~20mA电流流过采样100Ω电阻R1,在R1上会产生0.4~2V的电压差。由虚断知,运算放大器输入端没有电流流过,则流过R3和R5的电流相等,流过R2和R4的电流相等。故: (V2-Vy)/R3 = Vy/R5 ……a (V1-Vx)/R2 = (Vx-Vout)/R4 ……b 由虚短知: Vx = Vy ……c 电流从0~20mA变化,则V1 = V2 + (0.4~2) ……d 由cd式代入b式得(V2 + (0.4~2)-Vy)/R2 = (Vy-Vout)/R4 ……e 如果R3=R2,R4=R5,则由e-a得Vout = -(0.4~2)R4/R2 ……f 图九中R4/R2=22k/10k=2.2,则f式Vout = -(0.88~4.4)V,即是说,将4~20mA电流转换成了-0.88 ~ -4.4V电压,此电压可以送ADC去处理。11.运算放大器工作原理经典电路图十  电流可以转换成电压,电压也可以转换成电流。图十就是这样一个电路。上图的负反馈没有通过电阻直接反馈,而是串联了三极管Q1的发射结,大家可不要以为是一个比较器就是了。只要是放大电路,虚短虚断的规律仍然是符合的!  由虚断知,运算放大器输入端没有电流流过,  则 (Vi – V1)/R2 = (V1 – V4)/R6 ……a  同理 (V3 – V2)/R5 = V2/R4 ……b  由虚短知 V1 = V2 ……c  如果R2=R6,R4=R5,则由abc式得V3-V4=Vi  上式说明R7两端的电压和输入电压Vi相等,则通过R7的电流I=Vi/R7,如果负载RL&&100KΩ,则通过Rl和通过R7的电流基本相同。12.运算放大器工作原理经典电路图十一  来一个复杂的,呵呵!图十一是一个三线制PT100前置放大电路。PT100传感器引出三根材质、线径、长度完全相同的线,接法如图所示。有2V的电压加在由R14、R20、R15、Z1、PT100及其线电阻组成的桥电路上。Z1、Z2、Z3、D11、D12、D83及各电容在电路中起滤波和保护作用,静态分析时可不予理会,Z1、Z2、Z3可视为短路,D11、D12、D83及各电容可视为开路。由电阻分压知, V3=2*R20/(R14+20)=200/ ……a 由虚短知,U8B第6、7脚 电压和第5脚电压相等 V4=V3 ……b 由虚断知,U8A第2脚没有电流流过,则流过R18和R19上的电流相等。 (V2-V4)/R19=(V5-V2)/R18 ……c 由虚断知,U8A第3脚没有电流流过, V1=V7 ……d 在桥电路中R15和Z1、PT100及线电阻串联,PT100与线电阻串联分得的电压通过电阻R17加至U8A的第3脚, V7=2*(Rx+2R0)/(R15+Rx+2R0) …..e 由虚短知,U8A第3脚和第2脚电压相等, V1=V2 ……f 由abcdef得, (V5-V7)/100=(V7-V3)/2.2 化简得 V5=(102.2*V7-100V3)/2.2 即 V5=204.4(Rx+2R0)/(1000+Rx+2R0) – 200/11 ……g 上式输出电压V5是Rx的函数我们再看线电阻的影响。Pt100最下端线电阻上产生的电压降经过中间的线电阻、Z2、R22,加至U8C的第10脚,由虚断知, V5=V8=V9=2*R0/(R15+Rx+2R0) ……a (V6-V10)/R25=V10/R26 ……b 由虚短知, V10=V5 ……c 由式abc得 V6=(102.2/2.2)V5=204.4R0/[2.2(1000+Rx+2R0)] ……h 由式gh组成的方程组知,如果测出V5、V6的值,就可算出Rx及R0,知道Rx,查pt100分度表就知道温度的大小了。  本文改自:
电路相关文章:
手机电池相关文章:
电路图符号相关文章:
双控开关相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一当前位置: &
> 运算放大器是否可以用作比较器?
运算放大器是否可以用作比较器?
运算和乍看似乎可以互换,实际上,两者还是存在一些重要差异。比较器用于开环系统,旨在从其输出端驱动逻辑,以及在高速条件下工作,通常比较稳定。的用途不同于比较器,过驱时可能会饱和,使得恢复速度相对较慢。施加较大差分时,很多运算放大器的输入级都会出现异常表现,实际上,运算放大器的差分输入电压范围通常存在限制。运算放大器输出也很少兼容逻辑电路。
但是仍有很多人试图将运算放大器用作比较器。这种做法在低速和低分辨率时或许可行,但是大多数情况下结果并不理想。单靠参考运算放大器数据手册不能解决将运算放大器用作比较器的所有相关问题,因为运算放大器设计的目的并非用作比较器。
最常见的问题是速度(之前已经提到过)、输入结构的影响(保护、FET放大器的相位翻转等)、输出结构(并非用于驱动逻辑电路)、迟滞、稳定性,以及共模效应。
速度考虑因素
大多数比较器速度都很快,不过很多运算放大器速度也很快。为什么将运算放大器用作比较器时会造成低速度呢?
比较器用于大差分输入电压,而运算放大器工作时,差分输入电压一般会在负反馈的作用下降至最低。当运算放大器过驱时,有时仅几毫伏也可能导致过载,其中有些放大级可能发生饱和。这种情况下,器件需要相对较长的时间从饱和中恢复,因此,如果发生饱和,其速度将比始终不饱和时慢得多(参见图1)。
过驱运算放大器的饱和恢复时间很可能远远超过放大器的正常群延迟,并且通常取决于过驱量。由于仅有少数运算放大器明确规定从不同程度过驱状态恢复所需的时间,因此,一般说来,有必要根据特定应用的具体过驱情况,通过实验确定放大器的特性。
对这类实验的结果应持谨慎态度,通过比较器(运算放大器)的传播延迟值(用于最差条件下的设计计算)应至少为所有实验中最差值的两倍。
10:44:27 上传
图1:放大器用作比较器时的放大器速度饱和效应
输出考虑因素
比较器的输出端用于驱动特定逻辑电路系列,运算放大器的输出端则用于在供电轨之间摆动。
通常,运算放大器比较器驱动的逻辑电路不会共用运算放大器的电源,运算放大器轨到轨摆动可能会超出逻辑供电轨,很可能会破坏逻辑电路,引起短路后还可能会破坏运算放大器。
有三种逻辑电路必须考虑,即ECL、TTL和。
ECL是一种极快的导引逻辑系列。基于上述原因,当应用中涉及ECL的最高速度时,运算放大器不太可能会用作比较器,因此,通常只需注意从运算放大器的信号摆幅驱动ECL逻辑电平,因杂散造成的额外速度损失并不重要。只需采用三个即可,如图2所示。
图中选用了R1、R2和R3,当运算放大器输出为正值时,栅级电平为–0.8 V,当输出较低时,栅级电平为–1.6 V。ECL有时候采用正电源而不是负电源(即另外一个供电轨接地),
采用的基本接口电路相同,但是数值必须重新计算。
10:44:27 上传
图2:驱动ECL逻辑电路的运算放大器比较器
虽然CMOS和TTL输入结构、逻辑电平和电流差别很大(尽管有些CMOS明确规定可以采用TTL输入电平工作),但由于这两种逻辑电路都在逻辑0(接近0 V)和逻辑1(接近5 V)时工作,因此非常适合采用相同的接口电路。
10:44:27 上传
图3:驱动TTL或CMOS逻辑电路的运算放大器比较器
最简单的接口采用单个N沟道MOS晶体管和一个上拉电阻RL,如图3所示。用NPN晶体管、RL,外加一个晶体管和二极管也可以组成类似的电路。这些电路简单、廉价且可靠,还可以连接多个并联晶体管和一个RL,实现“线或”功能,但是0-1转换的速度取决于RL值和输出节点的杂散电容。RL值越低,速度越快,但是功耗也会随之增加。通过采用两个MOS器件、一个P沟道和一个N沟道,可以组成一个只需两个器件的CMOS/TTL接口,每种状态下都没有静态功耗(参见图4)。
10:44:27 上传
图4:内置CMOS驱动器的运算放大器比较器
此外,只需改变器件的位置,就可以设置成反相或同相。但是,当两个器件同时打开时,开关过程中势必会产生较大的浪涌电流,除非采用集成高通道电阻的MOS器件,否则就可能需要使用限流电阻来减小浪涌电流的影响。该图和图3中的应用所采用的MOS器件栅源击穿电压VBGS在每个方向都必须大于比较器的输出电压。MOS器件中常见的栅源击穿电压值VBGS & ±25 V,这一数值通常绰绰有余,但是很多MOS器件内置栅级保护二极管,会减小这一数值,所以这些器件不应采用。
输入考虑因素
对于用作比较器的运算放大器,还需考虑与其输入相关的多种影响因素。工程师对所有运算放大器和比较器做出的第一级假设是:它们具有无穷大的输入阻抗,并且可视为开路(电流反馈(跨导)运算放大器除外,这种运算放大器同相输入端具有高阻抗,但反相输入端只有几十欧姆的低阻抗)。
但是很多运算放大器(尤其是偏置补偿型运算放大器,如OP-07及其很多后继产品)都内置保护电路,以防止大电压损坏输入器件。
其它运算放大器则内置更复杂的输入电路,在施加的差分电压小于几十毫伏时只具有高阻抗,或者在差分电压大于几十伏时可能会损坏。因此,将运算放大器用作比较器时,如果施加大差分电压,必须仔细研究数据手册,才能确定输入电路的工作方式。(采用时,务必研究数据手册,确保其非理想特性(每个集成电路都存在一些非理想特性)兼容推荐的应用——本文中这点尤为重要。)图5所示为内置防止大差分电压输入二极管的运算放大器。
当然,有一些比较器应用不存在大差分电压,即使存在,比较器输入阻抗相对而言也不太重要。这种情况适合将运算放大器用作比较器,其输入电路表现为非线性,但是涉及的问题必须考虑,不能忽视。
10:44:27 上传
图5:具有保护功能的运算放大器输入结构
对BIFET运算放大器而言,如果其输入接近其中一个电源(通常为负电源),几乎都会表现异常。其反相和同相输入可以互换。如果运算放大器用作比较器时发生这种情况,涉及的系统相位将会反转,造成极大不便。要解决这一问题,还是必须仔细阅读数据手册,确定合适的共模范围。
而且,没有负反馈意味着与运算放大器电路不同,输入阻抗不必乘以开环增益。因此,输入电流会随着比较器开关而变化。因此,驱动阻抗和寄生反馈对影响电路稳定性起着重要作用。负反馈往往会使放大器保持在线性区域内,正反馈则会使其饱和。
运算放大器设计的目的不是用作比较器,因此,在此不太建议这种做法。尽管如此,在某些应用中,将运算放大器用作比较器却是正确的设计决策,关键是要慎重考虑后再做出决策,并确保所选运算放大器能达到预期的性能。因此,必须仔细阅读数据手册,认真考虑非理想运算放大器性能的影响,并计算出运算放大器参数对应用的影响。由于运算放大器以非标准方式使用,可能还必须进行某些实验——实验所用的放大器不一定具有典型性,因此,解读实验结果时不宜过于乐观。
参考文献:
1. Hank Zumbahlen, Basic
Design, Analog Devices, 2006, ISBN: 0-910-28-1. Also available as Linear Circuit Design Handbook, Elsevier-Newnes, 2008, ISBN-10: , ISBN-13: 978-. Chapter 4.
2. Walt Kester, Analog-Digital Conversion, Analog Devices, 2004, ISBN 0--3, Chapter 6. Also available as The Data Conversion Handbook, Elsevier/Newnes, 2005, ISBN 0-, Chapter 6.
3. Reza Moghimi, &Amplifiers as Comparators,& Ask The Applications Engineer-31, Analog ue 37,April 2003.
4. Analog Devices' Comparator Portfolio
原文下载:
(136.67 KB, 下载次数: 53)
10:45:41 上传
下载次数: 53
下载积分: 积分 -1
欢迎分享本文,转载请保留出处: &&&
相关资料下载
相关设计应用
谢谢楼主分享。
谢谢分享。
开关管跟高放管也存在类似的差异,而凑巧的是,
开关管的特点正好切合于比较器,高放管的特点跟运放正好相配。

我要回帖

更多关于 运算放大器输入阻抗 的文章

 

随机推荐