光耦的參数的理解

光耦能否够近似看做成一个带隔离功能的三级管呢?

槽型光耦也被project技术人员称作槽型光电开关或者对射式光电开关,也是以光为媒体,由发光体与受光体间的光路遮挡或由反射光的光亮变化为信号,检測物体的位置、有无等的装置。槽型光耦也是由一个红外线发射管与一个红外线接收管组合而成。它与接近开关相同是无接触式的,受检測体的制约少,且检測距离长,应用广泛。

1 引言

光耦作为一个隔离器件已经得到广泛应用,无处不在。一般大家在初次接触到光耦时往往感到无从下手,不知设计对与错,随着遇到越来越多的问题,才会慢慢有所体会。

本文就三个方面对光耦做讨论:光耦工作原理;光耦的CTR 概念;光耦的延时。本讨论也有认识上的局限性,但希望能帮助到初次使用光耦的同事。

1 理解光耦

光耦是隔离传输器件,原边给定信号,副边回路就会输出经过隔离的信号。对于光耦的隔离easy理解,此处不做讨论。以一个简单的图(图.1)说明光耦的工作:原边输入信号Vin,施加到原边的发光二极管和Ri 上产生光耦的输入电流If,If驱动发光二极管,使得副边的光敏三极管导通,回路VCC、RL 产生Ic,Ic经过RL产生Vout,达到传递信号的目的。原边副边直接的驱动关联是CTR(电流传输比),要满足Ic≤If*CTR。

图.1。

光耦通常会有两个用途:线性光耦和逻辑光耦,假设理解?

工作在开关状态的光耦副边三极管饱和导通,管压降<0.4V,Vout约等于Vcc(Vcc-0.4V左右),Vout 大小仅仅受Vcc大小影响。此时Ic<If*CTR,此工作状态用于传递逻辑开关信号。工作在线性状态的光耦,Ic=If*CTR,副边三极管压降的大小等于Vcc-Ic*RL,Vout= Ic*RL=(Vin-1.6V)/Ri * CTR*RL,Vout 大小直接与Vin 成比例,一般用于反馈环路里面 (1.6V 是粗略预计,实际要按器件资料,兴许1.6V同) 。

对于光耦开关和线性状态能够类比为普通三极管的饱和放大两个状态。

所以通过分析实际的电路,除去隔离因素,用分析三极管的方法来分析光耦是一个非常有效的方法。此方法对于兴许分析光耦的CTR 參数,还有延迟參数都有助于理解。

2 光耦CTR

概要:

1)对于工作在线性状态的光耦要依据实际情况分析;

2)对于工作在开关状态的光耦要保证光耦导通时CTR 有一定余量;

3)CTR受多个因素影响。

2.1 光耦是否能可靠导通实际计算

举例分析,比如图.1中的光耦电路,如果 Ri = 1k,Ro = 1k,光耦CTR= 50%,光耦导通时如果二极管压降为1.6V,副边三极管饱和导通压降Vce=0.4V。输入信号Vi 是5V的方波,

输出Vcc 是3.3V。Vout 能得到3.3V 的方波吗?

我们来算算:If = (Vi-1.6V)/Ri = 3.4mA

副边的电流限制:Ic’ ≤ CTR*If = 1.7mA

如果副边要饱和导通,那么须要Ic’ = (3.3V – 0.4V)/1k = 2.9mA,大于电流通道限制,所以导通时,Ic会被光耦限制到1.7mA, Vout = Ro*1.7mA = 1.7V

所以副边得到的是1.7V 的方波。

为什么得不到3.3V 的方波,能够理解为图.1 光耦电路的电流驱动能力小,仅仅能驱动1.7mA 的电流,所以光耦会增大副边三极管的导通压降来限制副边的电流到1.7mA。

解决措施:增大If;增大CTR;减小Ic。相应措施为:减小Ri 阻值;更换大CTR 光耦;增大Ro 阻值。

将上述參数稍加优化,如果增大Ri 到200欧姆,其它一切条件都不变,Vout能得到3.3V的方波吗?

又一次计算:If = (Vi – 1.6V)/Ri = 17mA;副边电流限制Ic’ ≤ CTR*If = 8.5mA,远大于副边饱和导通须要的电流(2.9mA),所以实际Ic = 2.9mA。

所以,更改Ri 后,Vout 输出3.3V 的方波。

开关状态的光耦,实际计算时,一般将电路能正常工作须要的最大Ic 与原边能提供的最小If 之间Ic/If 的比值与光耦的CTR 參数做比較,假设Ic/If ≤CTR,说明光耦能可靠

导通。通常会预留一点余量(建议小于CTR 的90%)。

工作在线性状态令当别论。

2.2 CTR受那些因素影响

上一节说到设计时要保证一定CTR 余量。就是由于CTR的大小受众多因素影响,这些因素之中既有导致CTR仅仅离散的因素(不同光耦),又有与CTR 有一致性的參数(壳温/If)。

1)光耦本身:

以8701为例,CTR 在Ta=25℃/If=16mA时,范围是(15%~35%)说明 8701 这个型号的光耦,不论何时/何地,不论什么批次里的一个样品,仅仅要在Ta=25℃

/If=16mA 这个条件下,CTR 是一个确定的值,都能确定在15%~35%以内。计算导通时,要下面限进行计算,而且保证有余量。计算关断时要以上限。

2)壳温影响:

Ta=25℃条件下的CTR 下限确定了,但往往产品里面温度范围比較大,比方光耦会工作在(-5~75℃)下,此种情况下CTR 怎么确定?还是看8701 的手冊:有Ta-CTR关系图:

从图中看出,以25 度的为基准,在其它条件不变的情况下,-5 度下的CTR 是25 度下的0.9 倍左右,75 度下最小与25 度下的CTR 持平。

所以在 16mA/(-5~75℃)条件下,8701的CTR 最小值是15%*0.9 = 13.5%

3) 受If 影响。

如果如果实际的If是3.4mA,那么怎样确定CTR在If=3.4mA / Ta=(-5~75℃)条件下的最小CTR 值。

查看 8701 的If-CTR 曲线。图中给出了三条曲线,代表抽取了三个样品做測试得到的If-CTR 曲线,实际仅仅须要一个样品的曲线就可以。

注:此图easy理解为下限/典型/上限三个曲线,事实上不然。大部分图表曲线仅仅是一个相对关系图,不能图中读出绝对的參数值。

计算:选用最上面一条样品曲线,由图中查出,

If=16mA 时CTR 大概28%,

在If=3.4mA时CTR 大概在46%。3.4mA 是16mA 时的46%/28% = 1.64倍;

所以,在 If=3.4mA / (-5~75℃),CTR下限为13.5% * 1.64 = 22.2%

以上全部分析都是基于8701 的,其它光耦的特性曲线须要查用户手冊,分析方法一样。

3 光耦延时

上述CTR 影响到信号能不能传过去的问题,类似于直流特性。以下主要分析光耦的延时

特性,即光耦能传送多快信号。

涉及到两个參数:光耦导通延时tplh 和光耦关断延时tphl,以8701 为例:在

If=16mA/Ic=2mA 时候,关断延时最大0.8uS,导通延时最大1.2uS。所以用8701 传递500k

以上的开关信号就须要不能满足。

光耦的參数的理解

时间: 2024-10-12 08:55:15

光耦的參数的理解的相关文章

将方法作为方法的參数 —— 理解托付

<.NET开发之美>上对于托付写到:"它们就像是一道槛儿,过了这个槛的人,认为真是太easy了,而没有过去的人每次见到托付和事件就认为心里别得慌,混身不自在."我认为这句话就像是在说我自己一样.于是我决定好好看看关于这方面的知识. 一.托付与接口 事实上非常多时候我感觉托付所起的作用与定义一个仅仅是含有一个方法的接口全然一样的.他们实现的功能是同样的. 如果有这样一个样例: 事实上这个样例非常easy,就是定义了一个IGreeting接口,里面有一个Greetingpeop

[Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop參数

本文翻译自Elasticsearch官方指南的Proximity Matching一章. 邻近匹配(Proximity Matching) 使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每一个字段,视作"一大袋的单词"(Big bag of Words).match查询可以告诉我们这个袋子中是否包括了我们的搜索词条,可是这仅仅是一个方面.它不能告诉我们关于单词间关系的不论什么信息. 考虑下面这些句子的差别: Sue ate the alligator. The alligat

ionic新手教程第七课-简要说明几种界面之间的參数传递及优缺点

截至2016年4月13日19点32分,我公布的ionic新手教程,已经公布6课了, 总訪问量将近6000,平均每节课能有1000的訪问量.当中訪客最多的是第三课有2700的訪客. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 事实上我開始的时候计划的挺好的,就依照我这阶段的安排,慢慢的带大家做一个

Java參数传递方式

原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数传递. 1.基本类型參数的传递方式 这里的内存模型涉及到两种类型的内存:栈内存(stack)和堆内存(heap).基本类型作为參数传递时,传递的是这个值的拷贝. 不管你怎么改变这个拷贝,原值是不会改变的. 看下边的一段代码,然后结合内存模型来说明问题: public class ParameterT

C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数

在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中,在运行函数的时候,从最后一个(最右边)參数開始入栈.因此栈底高地址,栈顶低地址,举个样例说明一下: void test(int a, float b, char c); 那么,在调用test函数的时候,实參char c先进栈,然后是float b,最后才是int a,因此在内存中变量的存放次序是c-

管理线程之向线程函数传递參数

向线程函数传递參数在构造线程对象时就可以完毕.可是要记住,默认情况下是把參数复制到线程内部,即使在函数中使用的是引用.比如 void f(int i,std::string const &s); std::thread t(f,3,"hello"); 上面代码中,函数f的第二个參数是std::string,传递的是char const *会转换为string. 当使用指针指向自己主动变量时.要特别注意: void f(int i, std::string const&

可变參数学习笔记

一.什么是可变參数 我们在C语言编程中有时会遇到一些參数个数可变的函数,比如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个參数format固定以外,后面跟的參数的个数和类型是可变的(用三个点"-"做參数占位符),实际调用时能够有下面的形式: printf("%d",i); printf("%s",s); printf("the number is %d ,s

Hadoop Ls命令添加显示条数限制參数

前言 在hadoop的FsShell命令中,预计非常多人比較经常使用的就是hadoop fs -ls,-lsr,-cat等等这种与Linux系统中差点儿一致的文件系统相关的命令.可是细致想想,这里还是有一些些的不同的.首先,从规模的本身来看,单机版的文件系统,文件数目少,内容不多,而HDFS则是一个分布式系统,里面能容纳巨大数量的文件文件夹.因此在这个前提之下,你假设任意运行ls或lsr命令,有的时候会得到恐怖的数据条数的显示记录,有的时候我们不得不通过Ctrl+C的方式中止命令.所以对于未知文

malloc()參数为0的情况

以下的代码片段输出是什么?为什么? char *ptr; if((ptr = (char *)malloc(0))==NULL) puts("Got a null pointer"); else puts("Got a valid pointer"); 解析:......有益把0值传给了函数malloc.得到了一个合法的指针,这就是上面的代码,该代码的输出是"Got a valid pointer". 这个"解析"根本就没有解