资讯动态

PC817光耦不止隔离:交叉耦合无MCU LED振荡电路

发布时间:2026/10/7 1:20:34 来源:尧图企业网站定制
一堆PC817躺在元件盒里除了做信号隔离还能不能干点别的前阵子给一个隔离电源模块做“工作正常”指示灯要求不用单片机、上电就自己闪手头只有光耦、电阻和几个电解电容于是试着把两只光耦交叉耦合起来居然搭出了一个很稳的振荡电路两只LED交替亮灭频率靠电容和上拉电阻就能定。这件事让我重新认识了光耦它不只是“隔离器件”本质上还是一只开启阈值一伏多、电流增益离散性很大的“光敏三极管”。只要理解了它的输入阈值和输出增益就能用它构成LED振荡电路做出无MCU的闪灯、隔离状态指示、脉冲发生器这类小东西。下面把我试过的两种电路、参数计算、实测数据和踩过的坑整理出来适合有基本焊接和万用表使用经验、想弄明白光耦非线性特性的朋友参考小白跟着步骤也能搭起来。1. 光耦凭什么能当振荡器件用1.1 把光耦拆开看一颗红外LED加一颗光敏管PC817、TLP521这类常见光耦内部其实就两样东西一颗红外发光二极管和一颗光敏NPN三极管中间隔着一层透明的绝缘材料。发光二极管的阳极是1脚阴极是2脚光敏三极管的集电极是4脚发射极是3脚中间没有基极引出线因为它的“基极电流”完全由光来决定。输入侧流过电流IfLED发光光被对面的光敏管接收产生集电极电流Ic。两者的比值就是电流传输比CTR单位是百分比。这个结构决定了光耦既是“电—光—电”的转换器又是一个反相器件输入侧有电流时输出侧的集电极电压被拉低输入侧没电流时输出侧靠外部上拉电阻回到高电平。做振荡电路时我们正是要吃透这个“反相”和“阈值”特性。把几个关键参数列出来后面算参数全靠它们。参数符号PC817典型值在振荡电路里的意义输入正向压降Vf1.0VIf1mA1.2VIf20mA决定输入侧的“开启阈值”电流传输比CTRB档130%~260%C档200%~400%决定输出能拉多低离散性最大输出饱和压降Vce(sat)0.1~0.2VIc1mA时导通时集电极残压集电极电流上限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.85mAB档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到5V2脚阴极接GNDD1阴极接1脚、阳极接2脚U2输入1脚阳极经R2到5V2脚阴极接GNDD2阴极接1脚、阳极接2脚U1输出4脚经LED1阳极、LED1阴极、R3到5VLED1方向为VCC→R3→LED→4脚3脚接GNDU2输出4脚经LED2阳极、LED2阴极、R4到5V3脚接GND耦合电容C1一端接U1的4脚另一端接U2的1脚耦合电容C2一端接U2的4脚另一端接U1的1脚输出侧LED的接法要特别说明正确的方向是5V先过限流电阻R3再过LED的正极到负极最后进光耦的4脚。这样当光耦导通则4脚被拉到接近0VLED两端有压差灯亮光耦截止时4脚被拉高到接近5VLED两端几乎没有压差灯灭。如果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)]代入VCC5V、VD0.7V、VF1.0Vln项约等于ln(5.7/4.0)≈0.354。所以半周期约为0.354×R×C整个周期是它的两倍即T≈0.71×R×C频率f≈1.4/(R×C)。以R4.7k、C47µF为例T≈0.71×4700×47×10⁻⁶≈0.157s频率约6.4Hz。这个公式只用于起步估算实际会被CTR离散性、电源电压、电容容差影响偏差两三成很正常我实测下来的数据整理如下供你对照。RkΩCµF公式估算频率实测频率PC817B5V4.710约30Hz约26~32Hz4.747约6.4Hz约5.5~7Hz4.7100约3Hz约2.6~3.4Hz1047约3Hz约2.4~3.2Hz2.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脚经R14.7k接5V2脚接地D1反向保护4脚经LED1和R32.2k接5V3脚接地。Q1这边基极经R210k接5V同时接耦合电容C2的一端C2另一端接U1的4脚Q1集电极经LED2和R41k接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%。我试过C147µF、C268µ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的集电极电流上限我烧过一只教训。第六面包板搭这个电路时跳线

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑