光耦长这样,相信小伙伴们都见过,下图是最为常用的型号PC817
怎么用?我们先看图,如下图1:
Vin为输入信号,一般接MCU的GPIO口,由于这里的VCC1为3.3V,故MCU这边的供电电源不能超过3.3V。
这里主要计算R1和R2的阻值
首先R1,要计算R1必须得知道PC817左边发光二极管的正向导通电流If和正向导通电压Vf的值,可以在PC817中的手册中找到,如下图所示:
图2 中的If最大为50MA,一般在实际的应用中是不能让电流达到50MA的,会对光耦的寿命造成很大的影响。其实光耦中的发光二极管和普通我们常用的发光二极管的导通电流是相差不大的,一般都是10MA~20MA即可满足要求,甚至还有10MA以下的。那10MA到底行不行呢?我们再看下图4:
从图4中可以看出,即使If=5MA的情况下,CTR范围是50~600%,那10MA呢?看图5可知If=10MA时为130%左右,CTR是什么?我们接着往下聊。
什么是CTR呢?
三极管有电流放大倍数,那光耦就有电流传输比,直白的讲就是左边(发光二极管)的电流传到右边(受光器或光敏三极管)的电流比例,当然这个电流是直接通过光为媒介传输过去的。公式如下:
CTR = ( Ic / If ) x 100%
那由图5可知If=10MA时CTR=130%。通过计算可得Ic=13MA。
由于VCC1为3.3V,If=10MA,Vf=1.2(取最小),故可以算出
R1=(3.3V-1.2V)/10MA=210Ω
知道了Ic=13MA,那如何保证右边(受光器或者光敏三极管)处于饱和状态呢?因为我们的目的是输出逻辑信号,也就是开关量,所以我们只需要光敏三极管工作在饱和区与截止区就可以了。我们可以按照处理三极管的方式去处理。
那其实要让光敏三极管进入饱和状态的条件:
导通时:Uce≈0V。光敏三极管的CE极之间是有压差的,这里我们取0.2V
结论:R2=(5V-0.2V)/13MA=369Ω。取常用的阻值390Ω,R1同理取常用的阻值220Ω。