☰
PC817光耦不止隔离:交叉耦合无MCU LED振荡电路
2026/10/7 1:20:33 网站建设 项目流程

一堆PC817躺在元件盒里,除了做信号隔离,还能不能干点别的?前阵子给一个隔离电源模块做“工作正常”指示灯,要求不用单片机、上电就自己闪,手头只有光耦、电阻和几个电解电容,于是试着把两只光耦交叉耦合起来,居然搭出了一个很稳的振荡电路,两只LED交替亮灭,频率靠电容和上拉电阻就能定。这件事让我重新认识了光耦:它不只是“隔离器件”,本质上还是一只开启阈值一伏多、电流增益离散性很大的“光敏三极管”。只要理解了它的输入阈值和输出增益,就能用它构成LED振荡电路,做出无MCU的闪灯、隔离状态指示、脉冲发生器这类小东西。下面把我试过的两种电路、参数计算、实测数据和踩过的坑整理出来,适合有基本焊接和万用表使用经验、想弄明白光耦非线性特性的朋友参考,小白跟着步骤也能搭起来。

1. 光耦凭什么能当振荡器件用

1.1 把光耦拆开看:一颗红外LED加一颗光敏管

PC817、TLP521这类常见光耦,内部其实就两样东西:一颗红外发光二极管,和一颗光敏NPN三极管,中间隔着一层透明的绝缘材料。发光二极管的阳极是1脚,阴极是2脚;光敏三极管的集电极是4脚,发射极是3脚,中间没有基极引出线,因为它的“基极电流”完全由光来决定。输入侧流过电流If,LED发光;光被对面的光敏管接收,产生集电极电流Ic。两者的比值就是电流传输比CTR,单位是百分比。这个结构决定了光耦既是“电—光—电”的转换器,又是一个反相器件:输入侧有电流时,输出侧的集电极电压被拉低;输入侧没电流时,输出侧靠外部上拉电阻回到高电平。做振荡电路时,我们正是要吃透这个“反相”和“阈值”特性。

把几个关键参数列出来,后面算参数全靠它们。

参数符号PC817典型值在振荡电路里的意义
输入正向压降Vf1.0V(If=1mA),1.2V(If=20mA)决定输入侧的“开启阈值”
电流传输比CTRB档130%~260%,C档200%~400%决定输出能拉多低,离散性最大
输出饱和压降Vce(sat)0.1~0.2V(Ic=1mA时)导通时集电极残压
集电极电流上限Ic50mA驱动LED时要留余量
上升/下降时间tr / tf约4µs / 3µs决定这个振荡器的频率上限
隔离电压Viso5kVrms隔离传输场合才用得上

1.2 输入侧有阈值,输出侧有增益,合起来就是有源器件

振荡电路的第一要素是有源器件,通俗说就是能提供“增益”的元件。光耦的输入LED要两端压差超过大约1V才开始明显导通,低于这个值电流几乎为零,这就是一个天然的阈值;而输出侧的光敏管会把输入电流按CTR放大成集电极电流,只要上拉电阻选得合适,输出就能从高电平迅速跌到接近0V。这两条合在一起,光耦就等效于一只“开启电压1V左右、电流增益不确定”的三极管。它和普通三极管的差别主要有三点:基极回路的阈值更高,因为LED压降比三极管Vbe大;增益CTR离散性极大,同一批次的B档和D档能差三四倍;速度慢,光—电转换有延迟,所以频率不能做太高。明白这三点,后面调电路时就不会奇怪“为什么换一只光耦频率就变了”。

1.3 只有有源器件还不够:正反馈和储能延时缺一不可

很多人第一次尝试“一只光耦加一个电容”做闪灯,结果要么常亮要么不亮,问题就出在这里:单级反相器加纯电阻反馈,构成的是负反馈,电路会稳定在一个平衡点,不会振荡。要让电路振起来,必须满足两个条件。第一是正反馈,也就是环路的增益大于1,信号绕一圈回来相位一致,这样才能自己把自己“推”到另一个状态;第二是储能延时,靠电容或电感把翻转速度“拖慢”,让电路在两个状态之间来回跑,而不是一下子就锁死。光耦本身是反相级,所以至少需要两级反相才能构成正反馈环路,或者用电容制造“记忆”。这也是为什么我最开始推荐的是两只光耦交叉耦合:两只光耦各提供一个反相级,交叉耦合后正好是正反馈,电容负责延时,电路自然就振起来了。

2. 两种能实际跑起来的电路方案

2.1 方案A:两只光耦交叉耦合,两个LED交替闪

这个方案的骨架和经典的晶体管无稳态多谐振荡器一模一样,只是把两只NPN三极管换成了两只PC817。具体连接是:U1和U2各自的输入发光二极管,阳极经一只上拉电阻接到+5V,阴极直接接地,这样输入侧始终有约0.8mA的电流想往里灌;U1、U2的输出三极管,集电极经一只限流电阻加一只指示LED接到+5V,发射极接地,光耦导通时集电极被拉低,指示LED点亮。关键的交叉耦合电容接在两个“错位”的节点上:C1从U1的集电极接到U2输入阳极,C2从U2的集电极接到U1输入阳极。这样U1导通时集电极变低,通过C1把U2的输入阳极往下拽,U2截止,它的集电极保持高电平,又通过C2把U1的输入阳极往上顶,让U1导通得更深——正反馈成立。电容充满到阈值后翻转,两只LED就交替闪烁。这个方案的全部有源器件都是光耦,最适合用来观察光耦的开关特性。

2.2 方案B:一只光耦配一只三极管,成本更低更好驱动

方案A的两级都用光耦,好处是“纯粹”,坏处是光耦的CTR离散性会让输出驱动能力偏弱,指示LED可能不够亮。方案B把其中一只光耦换成普通NPN三极管(比如S8050或者2N3904),另一级仍然用光耦,交叉耦合关系保持不变。三极管的基极阈值只有0.7V、电流增益β通常在100以上,所以这一级驱动LED非常轻松,整机亮度也更稳定。代价是失去了“全光耦”的对称性,而且三极管那一级的阈值和光耦那一级不一样,占空比会稍微偏向一边。如果你只是想做一个能闪的指示灯,方案B更容易一次成功;如果你想研究光耦、或者需要一个能体现隔离概念的振荡源,方案A更有价值。两种方案我都搭过,实际都能稳定工作,关键差别在参数选取和调试难度上。

2.3 两张表说清怎么选

对比项方案A 双光耦方案B 光耦+三极管
有源器件PC817 × 2PC817 × 1 + S8050 × 1
输入阈值两路都是约1.0V一路约1.0V,一路约0.7V
驱动LED能力受CTR限制,偏弱强,亮度稳定
频率对称性较好略偏,可调
元件成本稍高更低
调试难度中等中等偏易
典型用途学习光耦、隔离指示通用闪烁灯
选型维度选方案A选方案B
只想看到灯在闪可以推荐
想讲清光耦原理推荐一般
手头只有一个光耦不行可行
需要较高频率(数百Hz以上)一般更好
后续要加隔离输出推荐也可以

3. 方案A实战:搭一个双光耦LED交替闪烁电路

3.1 元件清单与选型理由

先列清单,再逐条说为什么这么选。核心器件是两只PC817,建议直接用B档或C档,D档也可以,但D档CTR高,容易过驱动;A档电流传输比只有80%~160%,配4.7k上拉时输出可能拉不到饱和,LED会偏暗。输入侧上拉电阻R1、R2取4.7k,这个值是我试出来的折中点:电阻再小,输入电流变大,充电时间常数变小,频率会偏高;电阻再大,输入电流不足,光耦输出拉不低,电路容易维持在中间态不振。按4.7k算,输入电流约(5V−1.0V)/4.7k≈0.85mA,B档CTR按150%估,输出能灌约1.3mA,配2.2k的负载电阻刚好能让LED亮起来。定时电容C1、C2用47µF/16V的电解电容,耐压选16V是给5V电源留足余量,容量决定闪烁速度。输出侧的LED选高亮红色或绿色,高亮LED在1mA左右就有不错的可见度,这一点很关键,因为光耦能提供的电流有限。每只光耦的输入两端还要并联一只1N4148做反向保护,后面会解释原因。

位号型号/参数数量说明
U1、U2PC817B / PC817C2光电耦合器
R1、R24.7kΩ 1/4W2输入侧上拉兼限流
R3、R42.2kΩ 1/4W2输出侧限流
C1、C247µF / 16V2定时电容,决定频率
LED1、LED2高亮红/绿 3mm2交替闪烁指示
D1、D21N41482输入LED反向保护
电源5V / 200mA1稳压电源或USB供电

3.2 逐节点连接说明

这个电路的连接不复杂,但极性接错就完全不工作,我按节点把每一根线说清楚,照着接就行。

节点连接内容
U1输入1脚阳极经R1到+5V,2脚阴极接GND,D1阴极接1脚、阳极接2脚
U2输入1脚阳极经R2到+5V,2脚阴极接GND,D2阴极接1脚、阳极接2脚
U1输出4脚经LED1阳极、LED1阴极、R3到+5V(LED1方向为VCC→R3→LED→4脚),3脚接GND
U2输出4脚经LED2阳极、LED2阴极、R4到+5V,3脚接GND
耦合电容C1一端接U1的4脚,另一端接U2的1脚
耦合电容C2一端接U2的4脚,另一端接U1的1脚

输出侧LED的接法要特别说明:正确的方向是+5V先过限流电阻R3,再过LED的正极到负极,最后进光耦的4脚。这样当光耦导通则4脚被拉到接近0V,LED两端有压差,灯亮;光耦截止时4脚被拉高到接近+5V,LED两端几乎没有压差,灯灭。如果LED方向接反,灯永远不亮,这是新手最容易犯的错之一。另外C1和C2是电解电容,有正负极,接入前先用万用表确认极性,接反了电容会漏液鼓包。

3.3 振荡过程推演:正反馈和延时是怎么配合的

上电瞬间,两只光耦的输入侧都开始有电流倾向,但实际中两只器件的CTR、阈值总有差异,假设U1的输入LED先导通得更充分一点。U1的输出三极管开始导通,4脚被拉低,通过C1把U2的输入阳极电压往下拉。U2输入LED电流减小,输出三极管截止,U2的4脚被LED2和R4上拉到接近+5V。这个高电平通过C2耦合到U1的输入阳极,让U1的输入电流进一步增大,U1导通更深,4脚更低——这是正反馈的上半程,整个过程在微秒级完成,电路迅速锁定到“U1导通、U2截止”的状态。此时LED1亮、LED2灭,C2上存着约4V的电压,左端是U1的输入阳极约1V,右端是U2的4脚约5V。

接下来进入延时阶段。U2的4脚是高电平,C2在这里相当于一个已经充好电的电容,它要通过U1的输入回路上拉电阻R1缓慢放电、再反向充电。随着电荷移动,U1输入阳极的电压慢慢下降,当它降到接近LED阈值以下时,U1的输入电流不足以维持输出饱和,U1的4脚开始升高。这个升高通过C1耦合到U2的输入阳极,使U2输入电流增大、U2开始导通、4脚降低,通过C2又把U1的输入阳极拉得更低——正反馈再次启动,电路迅速翻转到“U1截止、U2导通”,LED1灭、LED2亮。之后C1和C2互换角色,重复上面过程,两只LED就交替闪烁。理解了这个过程,你就明白为什么电容大小和上拉电阻大小直接决定闪烁频率,而CTR只影响亮度、不影响频率的大致量级。

3.4 频率怎么估:一个够用的经验公式

估算半周期,可以把翻转条件近似成“电容充电到输入LED开启阈值”。这里要引入两个电压:一个是反向保护二极管带来的钳位电压VD,约0.7V,因为正反馈翻转瞬间输入阳极会被拉到负压,1N4148首先导通把电压钳在-0.7V附近;另一个是输入LED开始明显导通的阈值VF,约1.0V。半周期的充电过程是从-0.7V充到+1.0V,充电目标是+5V,于是有:

半周期 t ≈ R × C × ln[(VCC + VD) / (VCC − VF)]

代入VCC=5V、VD=0.7V、VF=1.0V,ln项约等于ln(5.7/4.0)≈0.354。所以半周期约为0.354×R×C,整个周期是它的两倍,即T≈0.71×R×C,频率f≈1.4/(R×C)。以R=4.7k、C=47µF为例:T≈0.71×4700×47×10⁻⁶≈0.157s,频率约6.4Hz。这个公式只用于起步估算,实际会被CTR离散性、电源电压、电容容差影响,偏差两三成很正常,我实测下来的数据整理如下,供你对照。

R(kΩ)C(µF)公式估算频率实测频率(PC817B,5V)
4.710约30Hz约26~32Hz
4.747约6.4Hz约5.5~7Hz
4.7100约3Hz约2.6~3.4Hz
1047约3Hz约2.4~3.2Hz
2.247约13.5Hz约11~15Hz

从表里能看出两件事:一是R和C同时决定频率,想慢就加大电容,想快就减小电阻,但减小电阻会增大输入电流、改善输出驱动,属于“一箭双雕”的调法;二是实际频率会比公式值略低一点,因为光耦从输入有电流到输出真正拉低还有几微秒的传输延迟,再加上翻转点比理想阈值高一些。做指示灯时这点偏差无所谓,做定时用途就得实测校准。

3.5 焊接、上电与调试步骤

我的习惯是先面包板后焊接,省得拆焊。第一步,在面包板上按3.2节的节点表接好所有元件,两只光耦的1脚和2脚千万别接反,接反了输入LED反向偏置,电路完全不工作。第二步,上电前用万用表二极管挡测一下电源正负极有没有短路,尤其是电解电容极性。第三步,上电,正常的话1秒内就能看到两只LED交替闪,如果只有一只亮或者两只都常亮,先断电检查C1、C2是否接错节点。第四步,用示波器看U1和U2的4脚波形,应该是两路反相的方波,上升沿因为上拉电阻和杂散电容会略缓,下降沿很陡,占空比接近50%说明对称性良好。第五步,想改频率就直接换电容,47µF换100µF差不多慢一半,换成10µF快三倍。没有示波器也能调,用一只LED并联在输出侧看闪烁节奏,或者用万用表的频率挡测输出端,多数带频率挡的万用表能读到几十赫兹的信号。

4. 方案B实战:光耦配一只三极管也能振

4.1 电路结构与连接

方案B把方案A里的U2换成一只NPN三极管Q1,其余思路照搬。U1保持原样:1脚经R1(4.7k)接+5V,2脚接地,D1反向保护,4脚经LED1和R3(2.2k)接+5V,3脚接地。Q1这边:基极经R2(10k)接+5V,同时接耦合电容C2的一端,C2另一端接U1的4脚;Q1集电极经LED2和R4(1k)接+5V,同时接耦合电容C1的一端,C1另一端接U1的1脚;Q1发射极接地。交叉耦合关系是:U1的4脚通过C1去控制Q1基极,Q1集电极通过C2去控制U1的输入阳极。这样U1截止时4脚高,通过C1给Q1基极充电,Q1导通、集电极拉低,通过C2把U1输入阳极拉低,U1保持截止;等C1充到Q1基极阈值以上,Q1导通,翻转发生。两只LED同样交替闪烁,Q1那一侧的LED因为三极管β大,可以配更小的限流电阻,亮度明显更高。

4.2 和全光耦版本的差异在哪里

最明显的差异是阈值电压不一样。U1的输入LED开启阈值约1.0V,而Q1的基极阈值约0.7V,这就导致两边的充电时间不一样,占空比会偏离50%,实测大约是45%比55%,看不出来的时候无所谓,追求对称的话可以把R2稍微调小一点来补偿。第二个差异是驱动能力,Q1集电极可以直接灌十几毫安,LED2用1k限流也能很亮,而U1那一侧的LED1仍然受CTR限制,亮度偏弱。第三个差异是温度特性,三极管的Vbe有约-2mV/℃的温漂,光耦的LED压降也有温漂,但两者方向不完全一致,所以方案B的频率随温度的变化会比方案A略大一点点,常温环境下差别可以忽略。

4.3 调试要点与波形观测

调方案B时,重点先看Q1是否真的在饱和和截止之间切换。如果Q1一直停在放大区,LED2会是半亮不闪的状态,原因通常是R2太大或C2太小,基极驱动不够。把R2从10k降到4.7k试试,或者把C2改成10µF以上。另外U1输出侧的负载电阻R3不要选太大,超过4.7k时输入电流又小,光耦可能拉不低4脚,正反馈会不完整。我实测R3在1k~2.2k之间最稳。观察波形时把示波器探头接在U1的4脚,正常情况下能看到幅度约0到4.5V的方波,边沿有一点圆角是正常的,那是上拉电阻和光耦输出电容形成的RC。如果波形顶部塌陷严重、幅度不到3V,多半是光耦没完全截止,检查输入侧电流是否被耦合电容长期拉低。

5. 常见问题与排查技巧实录

5.1 不振荡、常亮、单边亮:按顺序排查

这个电路出问题时,症状通常集中在三类,我把它整理成速查表,按顺序查效率最高。

现象可能原因处理方法
两只LED都常亮不闪耦合电容没接对节点核对C1是否从U1的4脚接到U2的1脚,别接到2脚
一只亮一只灭,永远不变正反馈断了,某只光耦4脚始终高检查输入侧限流电阻是否虚焊
两只都不亮电源没上、光耦1234脚接反万用表量光耦1、2脚压差,导通时应约1V
闪烁很慢或干脆进入半亮态输入电流不足,光耦停在放大区把输入上拉电阻从10k减小到4.7k或2.2k
频率比预期高很多定时电容容量偏小或极性接反换电容,检查电解电容极性
上电后要等几秒才起振电容初始充电慢,属于正常现象一般可接受,想快就减小电容

排查时我用得最多的工具是万用表直流电压挡,而不是示波器。先量两只光耦输入端的压差,正常工作时应该在导通和截止之间跳变;再量4脚对地电压,应该在接近0V和接近4.5V之间跳。如果4脚一直停在中间某个值,说明光耦处于放大区,正反馈没有建立,这时候优先增大输入电流、减小输出负载电阻。

5.2 频率和占空比不对怎么调

频率偏差好办,直接套用3.4节的经验公式换电容或者电阻就行,但要注意两个细节。第一,改电阻会同时改变输入电流,进而改变LED亮度和电路能否可靠翻转,所以优先改电容,电容调不动再动电阻。第二,两只耦合电容不一定要完全相同,如果发现两只LED亮的时长明显不一样,可以给亮得短的那一路适当加大电容,用不对称的电容值把占空比拉回接近50%。我试过C1=47µF、C2=68µF的组合,能把原本40%比60%的占空比调到46%比54%。另外电源电压也会影响频率,5V换到3.3V供电时,因为阈值电压不变而充电目标变低,频率会明显下降,想在3.3V下工作,最好把电阻减小一些或者换用低阈值的光耦型号。

5.3 六个容易踩的坑,都是实测踩出来的

第一,输入LED一定要加反向保护二极管。正反馈翻转的瞬间,耦合电容会把输入阳极拉到负电压,没有1N4148钳位时,光耦内部的红外LED会承受反向电压,虽然电流受限不一定马上坏,但长期工作会加速老化,表现为用久了闪烁频率漂移。第二,两只光耦尽量用同一档次、同一批次,混用B档和D档时两只LED的亮度差会非常明显,严重时CTR低的那一路根本拉不低,电路不振。第三,电源要加去耦电容,在电源入口并一只100µF电解加一只0.1µF瓷片,光耦翻转瞬间电流是脉冲式的,电源内阻大时会在电源线上产生尖峰,干扰另一只光耦的状态。第四,耦合电容别用瓷片电容凑数,几十微法级别要用铝电解,瓷片电容容值不稳、体积又大,温漂会让频率飘。第五,光耦的4脚到LED之间的限流电阻不要省,直接接LED会瞬间超过50mA的集电极电流上限,我烧过一只,教训。第六,面包板搭这个电路时跳线

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询