ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

光耦隔离电路实战:从洗衣机控制板到PLC输入模块的选型与计算

光耦隔离电路实战:从洗衣机控制板到PLC输入模块的选型与计算 做电子这行没人能绕过“隔离”这两个字。早几年我在维修洗衣机控制板时被220V侧的干扰搞到单片机疯狂复位后来改成光耦隔离一次解决再到后来给客户的设备做PLC输入扩展模块又是靠光耦把24V传感器信号干干净净地搬到内部逻辑电平。这两件事放在一起恰好构成了一堂完整的光耦安全隔离实战课。这篇文章不聊虚的就从洗衣机控制板和PLC输入模块这两个真实场景出发手把手拆解光耦隔离电路的设计思路、元件选型和参数计算。如果你正被共地干扰、信号串扰、地电位差这些问题折磨或者想自己搭一个可靠的隔离输入电路这篇文章可以直接当参考手册用。1. 为什么要做“隔离”从两个真实场景说起1.1 洗衣机控制板的信号串扰与安全短板洗衣机控制板是个典型的“强电弱电混装”环境。220V交流进来经过阻容降压或者开关电源变成低压但这只是电源隔离的第一步真正让维修师傅头疼的是信号层面的干扰。洗衣机里有几个必须跟单片机交换信息的强电节点双向可控硅驱动的洗涤电机、排水阀、进水阀还有用于检测电网状态的过零信号。电机启停瞬间电流变化率极高会在共地回路上感应出尖峰脉冲。如果单片机和可控硅驱动电路直接共地这些尖峰就可能顺着地线窜进单片机的复位脚或中断脚表现就是洗涤中途死机、排水阀误动作。更不要说NTC温度传感器这类微弱信号一旦被污染测出来的温度能偏好几度。安全角度同样重要。阻容降压方案的电路板是“热地”带电操作时人体碰触就会有触电风险哪怕是开关电源方案强电侧的浪涌也可能在故障时通过信号线倒灌进弱电侧。光耦的作用就是把强电侧的信号“用光”搬到弱电侧两边没有任何电气连接干扰传不过来危险电压也过不来。这是隔离的第一个价值安全。第二个价值才是性能。光耦切断的是物理通路地电位差、共模噪声、长线缆感应这些因为“共地”而生的麻烦全部被隔离在两侧各自解决这比在软件里加滤波、加去抖要彻底得多。洗衣机控制板如此工业PLC输入模块更是如此。1.2 PLC输入模块为什么非隔离不可工业现场的PLC数字量输入模块面对的环境比洗衣机恶劣一个数量级。传感器到PLC的线缆往往要走几十米甚至上百米中间可能经过变频器、电机、接触器这些巨大的干扰源。更麻烦的是不同的设备可能有不同的接地系统两端的“地”之间存在着实打实的电位差有时候这个差值能达到几十伏。我见过一个厂房的改造项目PLC和变频器之间就因为没有做好输入隔离信号线屏蔽层单端接地结果变频器一启动PLC的输入点直接“跳舞”十几个I/O口一起乱跳。后来检查就是地线上的共模电压串了进来让输入端一直处于不确定状态。PLC输入模块的标准做法就是在每一路输入端内部放一个光耦。24V直流输入信号经过限流电阻进入光耦的LED输出侧则是内部逻辑电平。传感器那一侧的干扰、浪涌、电位差都被光耦的绝缘层挡在外面。这也是PLC厂家敢对外宣称“输入点每通道隔离”的底气所在。理解了这两类场景的共性和差异我们再回头看光耦本身。它到底是怎么做到“不接触却传递信号”的关键参数又该怎么挑。2. 光耦选型与关键参数这五个指标必须吃透2.1 光耦内部结构一副“光电望远镜”光耦的核心就是一个发光二极管和一个光敏三极管封装在同一个壳子里中间是透明的绝缘介质。输入侧电流流过LED让它发光光穿过绝缘层照射到输出侧的光敏三极管让三极管导通。输入输出之间没有导线自然就没有电的连接。这个结构决定了光耦的本质属性单向传输、电气隔离、抗干扰。你用万用表量输入侧和输出侧之间的电阻任何档位都是无穷大因为那层绝缘材料在物理上就是把两边分开了。真正的电气隔离耐压可以达到几千伏。用生活类比来说它就像一扇密封玻璃窗屋里的人能看到窗外的情况信号传出去了但窗外的风雨尘土干扰、危险电压全被玻璃挡住屋里始终安全。这也是我维修时反复跟年轻人讲的一句话光耦不是普通的元件它是一道安全屏障设计时每颗电阻都要为这道屏障负责。2.2 CTR、隔离耐压、速度三个选型维度选光耦只看型号是不够的必须看参数。我跟大家讲三个最关键的点遇到任何项目都能用上。第一个是CTR全称电流传输比Current Transfer Ratio定义是输出集电极电流IC与输入LED电流IF的比值。CTR100%的含义是输入侧灌进去10mA电流输出侧理论上最多能拉出10mA。但要注意这个参数是个范围同一颗光耦在不同批次、不同温度下差别非常大。PC817后缀带A/B/C/D分别代表CTR范围是80%-160%、130%-260%、200%-400%、300%-600%。设计时永远按最小值算别按典型值算否则批量生产时早晚翻车。第二个是隔离耐压。普通PC817是5kV rms6N137高速光耦也是5kV而一些工业级的会做到7.5kV以上。洗衣机控制板或者PLC输入模块这类应用5kV已经够了但如果用在医疗设备或动力电池BMS这种对安全等级要求极高的场合就得专门选加强绝缘的型号。第三个是响应速度。PC817这类三极管输出的光耦上升沿和下降沿都在微秒到几十微秒级别拿来传开关量没问题但传高速信号就力不从心了。PLC还有洗衣机控制板里的信号频率都很低PC817完全够用。如果你要做通讯接口、编码器信号隔离就需要6N137或者高速数字光耦它们的传输延迟能压到几十纳秒。下面的表格是我常用的选型速查直接抄作业就行应用场景推荐型号CTR范围响应速度隔离耐压通用开关量隔离PC817C系列200%-400%微秒级5kV低速工业输入TLP521-150%-600%微秒级5kV继电器驱动PC817三极管组合200%-400%微秒级5kV交流过零检测PC817或双向光耦200%-400%微秒级5kV高速通讯隔离6N1371500%(逻辑型)纳秒级5kV2.3 热议话题光耦1脚2脚并联100欧电阻到底行不行现在网上关于光耦1脚和2脚之间并联电阻的说法挺多尤其有人问“光耦1脚和2脚并联100欧电阻这个电阻该选多大”。这个问题的问法本身就有点误导。光耦的1脚是LED阳极2脚是LED阴极在它们之间并联一个电阻这个电阻到底干什么用它的作用通常是三个一是给输入端提供一个固定的静态电平防止信号源悬空时产生误触发二是给输入端的分布电容和线路感应电流提供一个泄放通道三是在和串联限流电阻搭配时共同决定LED的实际导通电流。选多大合适我说句实在话在绝大多数应用里输入端并联电阻不应该小于4.7kΩ更不应该用100Ω。原因很简单这个电阻和限流电阻是并联分流的关系。举一个具体例子输入信号是24V限流电阻取4.7kΩ如果并联一个10kΩ电阻并联电阻上会分走大约2.4mA的电流留给LED的电流相应减少如果你真的并联100Ω那么100Ω上的电流就是24除以100足足240mA。先不说这个电流会不会把输入电源干废光耦LED早就被欠流逼到临界导通状态限流电阻的计算也完全失去意义了。那什么情况下会见到100Ω这种小阻值通常是出现在三极管基极驱动回路或者某些把LED当作负载的特殊恒流驱动电路里而不是光耦输入LED两端。如果你是在网上看到一个电路图光耦1脚2脚之间挂着100Ω电阻建议仔细检查一下是不是画错了或者那本来就不是并联在LED两端而是并联在输入端子之间做阻抗匹配用的。我在实际项目里的经验是输入端并联电阻阻值取限流电阻的2到5倍比较合理常用10kΩ到100kΩ。具体取值配合目标触发电流一起算下文会有完整例子。2.4 双向光耦方案电路最简但有死区隐患输入侧需要处理交流信号时比如洗衣机控制板的过零检测或者PLC模块检测220V交流状态就有两种做法。一种是用两颗PC817把它们的LED反并联一个检测正半周一个检测负半周另一种是直接用一颗双向光耦像MOC3063这类内部是双向可控硅输出还集成了过零检测电路。网上热词里讲“双向光耦方案电路最简”这个说法没错一颗MOC3063加上两个电阻就能搞定交流检测或可控硅触发外围元件极少。但它的缺点也非常明确MOC3063内部带过零检测只有在交流电过零点附近才允许触发输出因此它天然存在一个零点死区。这个死区意味着你无法精确控制可控硅的导通角做不了高精度的移相调压。如果你是想做一个可控硅移相调速、调光、调温的项目非要用PWM波形精确控制导通角那双向过零光耦就帮不上忙了只能老老实实改用“光耦隔离MCU过零检测软件移相”的方案。搞清楚这些底层逻辑后面两节实战就不会瞎选型了。3. 实战一洗衣机控制板的信号隔离电路怎么搭3.1 需求梳理哪些信号必须隔离洗衣机控制板上有三个典型的信号值得做隔离正好覆盖光耦隔离的三大应用场景。第一个是交流过零检测。双向可控硅触发需要知道市电的过零点以便在合适的角度触发电机或加热管。这个信号直接从220V侧取出必须隔离否则单片机引脚就要直接面对220V的浪涌。第二个是可控硅触发信号。单片机输出触发脉冲经过光耦隔离后驱动双向可控硅的门极隔离高压侧和低压侧。第三个是NTC温度检测。NTC通常布置在筒体或加热管附近信号线较长容易受电机启停干扰用光耦隔离可以切断干扰路径。第三个场景实际中有人会用隔离运放或直接加RC滤波但光耦方案最经济。还要注意像进水阀、排水阀这些由可控硅驱动的负载本质上和电机是同类驱动电路可以共用一套隔离思路。下面我以过零检测为例把计算和电路设计完整展开。3.2 过零检测电路的参数计算从220V到单片机引脚过零检测的原理很直观把220V交流经过电阻限流后送进光耦LED交流电接近零点时LED两端电压太低不足以点亮其余时间里LED被点亮光耦输出导通。这样输出端的下降沿就对应交流过零点。先算输入限流电阻。设光耦LED的正向压降VF为1.2V取峰值正向电流IF_peak为10mA。220V交流的峰值电压是220乘以根号2约311V。限流电阻的阻值就是(311-1.2)除以0.01约31kΩ工程上取标准值33kΩ。这个电阻承受的功耗要认真算。流过LED的电流是半波整流波形近似计算时取等效有效值约为峰值电流的一半也就是大约5mA那么电阻功耗就是I平方乘R约0.55W选型时至少要选1W的绕线电阻或金属氧化膜电阻。为了可靠性我通常会用两个33k欧电阻串联一个放在火线上一个放在零线上既分摊功率又提高了耐压能力。还有LED的反向保护。PC817的LED反向耐压只有几伏交流负半周时如果不加保护反向电压会把LED击穿。最简做法是在LED两端反向并联一个1N4007二极管负半周由二极管承担反向电压。如果你手头有整流桥也可以在输入端串进去把交流整成半波但反向并联二极管是最省钱可靠的做法。输出侧光敏三极管的发射极接地集电极接一个上拉电阻到单片机电源比如5V。上拉电阻取4.7k到10k都行因为过零检测只要捕捉下降沿不要求速度多快。输出直接进单片机的外部中断引脚配合软件滤波就能拿到每个过零点。3.3 可控硅触发隔离与继电器驱动的经验洗衣机控制板里双向可控硅的触发信号常用MOC3021或MOC3063这类光耦来隔离。MOC3021不带过零检测适合随意控制导通角的场合MOC3063带过零检测只适合在过零点附近导通好处是电磁干扰小洗衣机这种负载对相位控制要求不高用MOC3063反而更省事电路最简。如果项目里是用继电器去控制外部负载而不是可控硅那我建议光耦输出侧接三极管再驱动继电器。光耦PC817输出能力理论上有50mA但小型继电器线圈电流常常接近这个值直接驱动会长期处于临界状态触点抖动、线圈发热都跟着来。我一般用PC817加一个8050三极管继电器线圈并联续流二极管基极电阻取1k左右。这样光耦只负责“传递信号这个小活”真正驱动大电流的脏活累活交给三极管各司其职寿命和稳定性都好得多。4. 实战二PLC输入模块的光耦隔离电路设计4.1 先搞清PLC的漏型与源型输入做PLC输入模块之前必须先搞清楚PLC的数字量输入有两种接线方式。漏型输入Sink是输入信号的电流从外部流入模块内部公共端接正极传感器输出低电平时导通源型输入Source则相反电流从模块内部流出公共端接负极传感器输出高电平时导通。不同品牌PLC对这两种方式的称呼还不一样西门子管漏型叫M型接法三菱直接叫漏型输入源型输入选型时非常容易混。我的经验是不管名字怎么变打开接线图看电流方向电流是“流进输入点”还是“流出输入点”一眼就明白。自己搭一个光耦输入模块来和PLC对接时电路结构可以设计成既能接NPN传感器又兼容PNP传感器。最常见的方法是在光耦输入端做一个桥式整流或两路并联但我更推荐的做法是针对确定的接法定向设计因为通用型输入模块内部电路往往更复杂成本也高。自家项目里明确是NPN传感器就做漏型输入明确是PNP就做源型输入简简单单可靠性最高。4.2 PLC输入前端电路限流电阻、反压保护与滤波以漏型输入为例外部传感器给出低电平有效信号也就是传感器导通时24V经过传感器流进光耦输入端。输入回路里我来逐个计算关键元件。第一个是限流电阻。PLC输入点的典型驱动电流是5到10mA取IF为5mA24V减去LED压降1.2V再减去传感器饱和压降0.3V得22.5V除以5mA得到4.5k取标准值4.7k。实际电流是22.5除以4700约4.8mA刚好在PLC输入电流范围内。第二个是LED反向保护。虽然直流输入一般不会反接但现场接线工人难免接错一旦输入线正负极接反光耦LED就会承受反向电压。最稳妥的方法是在输入端串联一个二极管或者反向并联一个1N4148避免LED反向击穿。第三个是滤波电容。光耦输出端在上拉电阻和地之间并联一个0.1uF电容可以有效滤除输出毛刺防止信号抖动。但是电容也不能选太大否则会让输出边沿变慢给高速计数造成困难。PLC普通输入点扫描周期本来就不快0.1uF非常合适。上面的讨论基于直流24V输入。如果PLC输入模块需要检测交流信号状态比如判断某个220V接触器是否吸合那么输入端就要按前文讲过的交流处理方案来做反向并联二极管加限流电阻或者直接用双向光耦。这里我多说一句交流检测不要用单颗PC817直接接220V负半周的反压问题不解决用不了几天光耦就坏了。4.3 双向光耦在交流信号检测里的应用与上限在需要同时检测交流正负半周的场景中双向光耦方案确实最省元件一颗MOC3063就能完成隔离和过零触发网上的热度很高。但回到热词里那句话“电路最简缺点存在固有零点死区不适合高精度移相”。我结合PLC场景解释一下MOC3063内部集成了过零检测只有在交流电压接近0V的很短窗口内可控硅输出才会触发。这个窗口对应的时间范围对于50Hz工频来说每次过零前后可能只有几十微秒到数百微秒。如果你的PLC模块只是做出“有没有电”的状态判断这个死区无所谓但如果你要做的是精确检测交流电相位甚至给可控硅做移相调压这个死区就完全不能接受了。替代方案是用高速比较器加普通光耦做相位检测或者用两颗PC817反并联分别检测正负半周再用MCU计算过零时刻。虽然外部元件多了一点但精度和灵活性都远超一颗MOC3063。所有把“电路最简”挂在嘴边的时候都要先问一句这个应用对死区敏感吗5. 常见问题与排查技巧实录5.1 光耦输出波形边沿缓、甚至输出不对光耦输出波形上升沿下降沿很缓最多见的原因有三个。一是上拉电阻取值过大。上拉电阻和负载电容共同决定RC时间常数电阻越大边沿越慢。比如10k上拉配上0.1uF电容时间常数就是1ms对快速信号影响很大。二是光头耦本身的响应速度不够PC817在几十kHz级别已经很吃力了高速应用请换6N137。三是输出侧的负载太重光耦的灌电流能力有限被负载拉低了。排查方法很简单示波器直接点输出引脚看波形形状和幅值。边沿缓就优化上拉电阻和电容速度还不够就换高速光耦基本都能解决。5.2 光耦发热严重寿命让人担心光耦发热十有八九是输入侧电流太大。有人为了追求输出深度饱和把输入电流拉到20mA甚至30mALED功耗接近50mW外壳摸着烫手。时间和温度一上来CTR下降隔离性能也跟着退化。处理方案是重新算限流电阻。PC817这类普通光耦输入电流取5到10mA完全足够配合后面的三极管或整形电路输出逻辑已经非常干净。与其加大输入电流不如把输出级设计得更合理一点比如用施密特触发器整形比单纯加大电流更科学。5.3 继电器误动作、PLC输入点跳动继电器误动作或PLC输入点跳动本质都是输出信号不干净。输入侧如果长线传输感应的尖峰很可能让LED在信号关闭时仍然微导通。我在输入端并联一个10k电阻加一个小电容把微导通和感应干扰泄放掉问题立刻缓解。输出侧如果直接驱动逻辑芯片建议加施密特整形或者加一个0.1uF电容再去抖。还有一点经常被忽略光耦两侧的电源退耦。输出侧供电如果不稳开关瞬间的电流变化也会造成逻辑误判所以在光耦输出供电脚旁边加一个100nF退耦电容是标配。5.4 问题排查速查表现象可能原因处理办法输出一直是高电平输入侧没导通或LED损坏测输入侧电压电流确认LED方向输出一直是低电平输出光耦击穿或上拉电阻短路断开输出量光耦两端电压波形边沿太缓上拉电阻过大、电容过大减小电阻、换高速光耦继电器误动作输入侧感应干扰、无续流二极管输入端并联电阻电容输出加续流输入电阻发烫限流电阻功率不足增大电阻功率或重新计算阻值交流信号检测异常LED反向击穿加反向保护二极管或桥式整流CTR衰减导致输出逻辑翻转失败光耦老化或批次CTR偏低按CTR最小值校核电路再提供一个我自己的独家排查顺序先电源再输入侧最后输出侧。先量光耦供电是否正常接着量输入LED两端的电压正常应该在1V上下最后量输出端集电极电压看有没有正常翻转。一套下来百分之九十的问题都能定位。写在最后的一点操作体会从我修洗衣机控制板到给客户搭PLC输入扩展模块光耦这个元件每次都没让我失望但前提是设计时把参数算清楚、把余量留够。特别是输入端那个并联电阻的问题网上的信息鱼龙混杂100欧这种值真的不要随便用在LED两端照着我上文的分流计算方法一分钟就能判断该不该用。还有双向光耦方案它的“最简”是优点但零点死区就是它的天花板。做高精度移相、调压、调流之前先问清楚自己的应用吃不吃得下这个死区。最后分享一个小技巧光耦输出端如果直接接单片机或PLC内部逻辑最好在中间加一级施密特整形。这不是必须的但我做过很多块板子之后发现加了施密特整形的方案抗干扰能力和批量一致性都明显好一大截。光耦负责隔离整形负责让逻辑电平干净利落两者配合才是一套真正成熟可靠的安全隔离电路。
返回列表