原创 线性光耦原理与电路设计

2008-8-3 09:37 3311 4 5 分类: 模拟

1. 线形光耦介绍


光隔离是一种很常用的信号隔离形式。常用光耦器件及其外围电路组成。由于光耦电路简单,在数字隔离电路或数据传输电路中常常用到,如UART协议的20mA电流环。对于模拟信号,光耦因为输入输出的线形较差,并且随温度变化较大,限制了其在模拟信号隔离的应用。


对于高频交流模拟信号,变压器隔离是最常见的选择,但对于支流信号却不适用。一些厂家提供隔离放大器作为模拟信号隔离的解决方案,如ADI的AD202,能够提供从直流到几K的频率内提供0.025%的线性度,但这种隔离器件内部先进行电压-频率转换,对产生的交流信号进行变压器隔离,然后进行频率-电压转换得到隔离效果。集成的隔离放大器内部电路复杂,体积大,成本高,不适合大规模应用。


模拟信号隔离的一个比较好的选择是使用线形光耦。线性光耦的隔离原理与普通光耦没有差别,只是将普通光耦的单发单收模式稍加改变,增加一个用于反馈的光接受电路用于反馈。这样,虽然两个光接受电路都是非线性的,但两个光接受电路的非线性特性都是一样的,这样,就可以通过反馈通路的非线性来抵消直通通路的非线性,从而达到实现线性隔离的目的。


市场上的线性光耦有几中可选择的芯片,如Agilent公司的HCNR200/201,TI子公司TOAS的TIL300,CLARE的LOC111等。这里以HCNR200/201为例介绍


2. 芯片介绍与原理说明


HCNR200/201的内部框图如下所示


其中1、2引作为隔离信号的输入,3、4引脚用于反馈,5、6引脚用于输出。1、2引脚之间的电流记作IF,3、4引脚之间和5、6引脚之间的电流分别记作IPD1和IPD2。输入信号经过电压-电流转化,电压的变化体现在电流IF上,IPD1和IPD2基本与IF成线性关系,线性系数分别记为K1和K2,即


xxgo-b.gif


K1与K2一般很小(HCNR200是0.50%),并且随温度变化较大(HCNR200的变化范围在0.25%到0.75%之间),但芯片的设计使得K1和K2相等。在后面可以看到,在合理的外围电路设计中,真正影响输出/输入比值的是二者的比值K3,线性光耦正利用这种特性才能达到满意的线性度的。


HCNR200和HCNR201的内部结构完全相同,差别在于一些指标上。相对于HCNR200,HCNR201提供更高的线性度。


采用HCNR200/201进行隔离的一些指标如下所示:


* 线性度:HCNR200:0.25%,HCNR201:0.05%;


* 线性系数K3:HCNR200:15%,HCNR201:5%;


* 温度系数: -65ppm/oC;


* 隔离电压:1414V;


* 信号带宽:直流到大于1MHz。


从上面可以看出,和普通光耦一样,线性光耦真正隔离的是电流,要想真正隔离电压,需要在输出和输出处增加运算放大器等辅助电路。下面对HCNR200/201的典型电路进行分析,对电路中如何实现反馈以及电流-电压、电压-电流转换进行推导与说明。


3. 典型电路分析


Agilent公司的HCNR200/201的手册上给出了多种实用电路,其中较为典型的一种如下图所示:

点击看大图


设输入端电压为Vin,输出端电压为Vout,光耦保证的两个电流传递系数分别为K1、K2,显然,,和之间的关系取决于和之间的关系。


将前级运放的电路提出来看,如下图所示:


xxgo-d.gif


设运放负端的电压为,运放输出端的电压为,在运放不饱和的情况下二者满足下面的关系:


Vo=Voo-GVi  (1)


其中是在运放输入差模为0时的输出电压,G为运放的增益,一般比较大。


忽略运放负端的输入电流,可以认为通过R1的电流为IP1,根据R1的欧姆定律得:


xxgo-e.gif


通过R3两端的电流为IF,根据欧姆定律得:


xxgo-f.gif


其中,为光耦2脚的电压,考虑到LED导通时的电压()基本不变,这里的作为常数对待。


根据光耦的特性,即

    K1=IP1/IF  (4)


将和的表达式代入上式,可得:
点击看大图

    上式经变形可得到:


xxgo-h.gif


将的表达式代入(3)式可得:

点击看大图


考虑到G特别大,则可以做以下近似:


xxgo-j.gif


这样,输出与输入电压的关系如下:


xxgo-k.gif


可见,在上述电路中,输出和输入成正比,并且比例系数只由K3和R1、R2确定。一般选R1=R2,达到只隔离不放大的目的。


4. 辅助电路与参数确定


上面的推导都是假定所有电路都是工作在线性范围内的,要想做到这一点需要对运放进行合理选型,并且确定电阻的阻值。


4.1 运放选型


运放可以是单电源供电或正负电源供电,上面给出的是单电源供电的例子。为了能使输入范围能够从0到VCC,需要运放能够满摆幅工作,另外,运放的工作速度、压摆率不会影响整个电路的性能。TI公司的LMV321单运放电路能够满足以上要求,可以作为HCNR200/201的外围电路。


4.2 阻值确定


电阻的选型需要考虑运放的线性范围和线性光耦的最大工作电流IFmax。K1已知的情况下,IFmax又确定了IPD1的最大值IPD1max,这样,由于Vo的范围最小可以为0,这样,由于


考虑到IFmax大有利于能量的传输,这样,一般取


另外,由于工作在深度负反馈状态的运放满足虚短特性,因此,考虑IPD1的限制,


这样,


R2的确定可以根据所需要的放大倍数确定,例如如果不需要方法,只需将R2=R1即可。


另外由于光耦会产生一些高频的噪声,通常在R2处并联电容,构成低通滤波器,具体电容的值由输入频率以及噪声频率确定。


4.3 参数确定实例


假设确定Vcc=5V,输入在0-4V之间,输出等于输入,采用LMV321运放芯片以及上面电路,下面给出参数确定的过程。


* 确定IFmax:HCNR200/201的手册上推荐器件工作的25mA左右;


* 确定R3:R3=5V/25mA=200;


* 确定R1:;


* 确定R2:R2=R1=32K。


注:光电耦合器的种类较多,但在家电电路中,常见的只有4种结构:


1.第一类,为发光二极管与光电晶体管封装的光电耦合器,结构为双列直插4引脚塑封,内部电路见表一,主要用于开关电源电路中。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


2.第二类,为发光二极管与光电晶体管封装的光电耦合器,主要区别引脚结构不同,结构为双列直插6引脚塑封,内部电路见表一,也用于开关电源电路中。

3.
第三类,为发光二极管与光电晶体管(附基极端子)封装的光电耦合器,结构为双列直插6引脚塑封,内部电路见表一,主要用于AV转换音频电路中。

 

4.第四类,为发光二极管与光电二极管加晶体管(附基极端子)封装的光电耦合器,结构为双列直插6引脚塑封,内部电路见表一,主要用于AV转换视频电路中。

 


PC817 PC818 PC810 PC812
PC502 LTV817 TLP521-1
TLP621-1 ON3111 OC617
PS2401-1 GIC5102

第二


TLP632 TLP532 TLP519
TLP509 PC504 PC614 PC714 PS208B PS2009B
PS2018 PS2019


TLP503 TLP508 TLP531
PC613 4N25 4N26 4N27
4N28 4N35 4N36 4N37
TIL111 TIL112 TIL114
TIL115 TIL116 TIL117
TLP631 TLP535


TLP551 TLP651 TLP751
PC618 PS2006B 6N135
6N136

文章评论1条评论)

登录后参与讨论

用户1400544 2008-12-17 09:29

很详细经典的解读,谢谢分享!
相关推荐阅读
用户461316 2009-08-17 17:57
Zigbee星型网络组网程序段
最近一直在做Zigbee的星型网络的组网试验,由于时间的原因,现在只是在最高的应用层上来编写程序。即协议栈的程序是2430的开发商(无限龙)编写的,我只是调用相应的函数来完成组网的,星型网络组网部分的...
用户461316 2009-08-17 17:14
VB6的标题栏使用上真彩色图标
模块 ModIcon.Bas 代码: Option Explicit Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long...
用户461316 2009-08-17 16:58
AppendToLog一个API方式存取日志文件的模块
'**************************************' 模块名称: AppendToLog' 功能描述:一个很不错的日志文件写入模块,不同于'     open/print/...
用户461316 2009-08-17 16:57
(VB自定义函数)去除字符串中的空格
'去除字符串中的空格(方法一)Public Function DelBlank(SearchString As String)   DelBlank = Replace(SearchString, C...
用户461316 2009-08-17 16:56
(VB自定义函数)对任意输入的汉字,可以得到它的拼音的第一个字母
调用方法:Command1.Caption = getHzPy("你")'//函数入口为汉字串,返回值为该汉字的第一个字母Public Function getHzPy(hzStr As String...
用户461316 2009-08-17 16:54
VB_代码执行速度测试
'**************************************'Windows API/Global Declarations for :[ '     A Simple] code ...
我要评论
1
4
关闭 站长推荐上一条 /2 下一条