尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

光耦驱动继电器电路设计:5种经典方案与参数计算

发布时间:2026/9/28 15:49:07

资讯中心
01
ARTICLE

光耦驱动继电器电路设计:5种经典方案与参数计算

光耦驱动继电器电路设计:5种经典方案与参数计算
自己第一次拿单片机驱动继电器的时候以为把IO口直接怼到继电器线圈上就行结果通电的一瞬间继电器没吸合单片机先复位了。后来才知道继电器线圈属于典型的感性负载电流冲击和反向电动势都够单片机喝一壶的。从那以后我再也不敢让IO口直连继电器了规规矩矩用光耦做隔离再配三极管或者达林顿管驱动。这两年陆陆续续帮朋友改过不少控制板发现大家搜资料的时候经常看到“光耦”“继电器”“驱动电路”这几个词一起出现可找到的电路图要么太简单要么直接甩一张原理图符号完全不讲为什么。今天这篇文章就专门讲透一件事用光耦驱动继电器电路到底怎么设计参数到底怎么算以及5种可以直接抄作业的经典电路图。先强调一句安全红线继电器线圈是低压但继电器触点所接的负载很可能就是220V以上的强电。文章里的所有接线演示默认只针对低压控制侧和低压负载验证涉及高压触点的接线必须在完全断电、由有资质的人员操作的前提下进行绝对不允许带电操作。1. 光耦和继电器为什么要组合先搞清楚它们各自在等什么很多人拿到原理图就开始照着焊焊完了出问题又不知道从哪里查。所以我建议先把这两个器件的工作特点在脑子里过一遍后面所有设计和故障排查都会顺很多。1.1 光耦的隔离原理发光二极管加光敏三极管光耦的英文名叫Optocoupler最常用的型号就是PC817或者TLP521里面其实就是两个部分一个发光二极管LED和一个光敏三极管。输入端通电后LED发光光线照到光敏三极管上输出端的集电极和发射极就导通了。这里最关键的点在于输入端和输出端之间没有电气连接信号是靠光来传递的。所以光耦可以实现“电气隔离”把单片机那一侧的地和继电器/负载那一侧的地完全分开。这样做有一个很实际的好处当负载侧发生电压突变、干扰、甚至故障时高压不会直接串回单片机能减少烧IO口和MCU的概率。要注意的是PC817的CTR电流传输比有比较大的离散性常见范围是50%到600%。什么意思呢输入侧给10mA电流输出侧理论上能流过5mA到60mA。设计电路时必须按最小CTR来算不能按典型值或者最大值来算这一点在后面“参数计算”里会反复用到。1.2 继电器是机械开关不是放大器继电器说到底就是一个由电磁铁控制的机械开关。线圈通电后产生磁场吸合衔铁触点由常开变成闭合线圈断电后衔铁弹回触点恢复。继电器最大的优势是触点能承受很大的电流和电压同时控制侧和负载侧之间是物理隔离的。但它也有一个明显特点它是机械结构响应速度慢而且线圈需要的驱动电流并不小。以常见的5V继电器为例线圈电阻大约在70欧姆左右算下来吸合电流大约是70mA维持电流稍小一点。这个电流对于STM32、ESP32这种单片机来说已经超纲了单片机的IO一般只能输出几毫安到20毫安根本推不动继电器线圈。所以中间必须加一级驱动管这也是继电器驱动电路存在的根本原因。1.3 为什么不能直接用单片机IO驱动继电器直接用IO口驱动继电器的问题有三个第一电流不足。前面算了普通5V继电器线圈要70mA单片机IO口根本给不了。第二感性负载的反向电动势。继电器线圈断电瞬间会产生一个很高的反向电压这个尖峰如果不处理轻则让系统复位重则直接把IO口打坏。这也是我第一次做继电器电路时栽跟头的原因。第三隔离问题。如果继电器触点控制的是220V交流设备而单片机和继电器之间没有任何隔离那一旦触点侧有浪涌或者漏电整个控制系统都可能遭殃。所以常规做法就是单片机先驱动光耦光耦隔离后再驱动三极管或者达林顿管最后由三极管去控制继电器线圈。整套链路既解决了电流放大问题又解决了电气隔离问题。2. 驱动电路的核心参数计算动手前先算明白做电子设计最忌讳拿着别人的图直接抄却不理解里面的电阻为什么取这个值。电阻选大了驱动电流不够继电器不吸合或者吸合无力电阻选小了功耗上去了光耦和单片机都会发热。下面把参数计算完整走一遍。2.1 继电器线圈到底需要多少电流假设用一个常见的5V继电器线圈电阻标称70欧姆。根据欧姆定律线圈电流 线圈电压 / 线圈电阻 5V / 70Ω ≈ 71mA这个71mA是吸合电流的典型工作值。实际继电器还有一个“动作电压”通常是额定电压的75%左右也就是3.75V。这时候线圈电流大约是53mA。设计驱动电路的时候我一般按额定电流留出1.5倍以上裕量再考虑三极管的放大倍数和压降确保在任何温度下都能可靠吸合。如果你用的是12V继电器线圈电阻通常在200到400欧姆之间线圈电流大约是30到60mA。不同规格的继电器参数不一样选型之后第一件事就是查它数据手册里的线圈电阻和额定电流。2.2 光耦输入侧限流电阻怎么算以PC817为例输入侧LED的正向压降VF大约是1.2V正常工作电流IF选择5到20mA都可以。我习惯按10mA左右来设计这样CTR有保证功耗也不至于太大。如果单片机IO高电平是3.3V那么限流电阻R1的计算如下R1 (VOH - VF) / IF (3.3V - 1.2V) / 10mA ≈ 210Ω取标准电阻值220Ω。如果单片机IO高电平是5V则R1 (5V - 1.2V) / 10mA ≈ 380Ω取标准电阻值390Ω。有些朋友会问我电阻能不能取大一点可以但注意不要超过让光耦饱和导通的上限。如果你把IF压到2mACTR又只有50%输出侧就只有1mA后面驱动三极管就会显得吃力。所以宁可让光耦吃得饱一点也别让它饿着。2.3 输出侧三极管基极电阻与CTR匹配这一步是很多人算错的地方。光耦输出侧并不是直接接继电器而是接三极管的基极。三极管在这里起电流放大作用用几十毫安的集电极电流去驱动继电器线圈。选一个最常见的NPN三极管2N3904它的hFE直流放大倍数最小按100算。要驱动71mA的线圈电流基极最小电流是IB IC / hFE 71mA / 100 ≈ 0.71mA为了确保三极管深度饱和基极电流至少取2倍以上我通常按3倍设计也就是取2.1mA左右。光耦输出侧的供电如果是5VPC817导通时集电极-发射极饱和压降VCE(sat)约为0.2V三极管基极-发射极压降VBE约为0.7V所以基极限流电阻R2为R2 (5V - 0.2V - 0.7V) / 2.1mA ≈ 1.95kΩ取标准值1.8kΩ到2kΩ都可以。取1kΩ的话基极电流会更大饱和得更彻底缺点是功耗稍大一点但可靠性更好。这里还要注意光耦的CTR是否够用。PC817的CTR按最小50%算输入侧如果给了10mA输出侧最多可以给5mA。三极管基极需要2.1mA5mA足够。所以这个链路里光耦不会成为瓶颈。如果你用的是CTR只有30%的老旧光耦或者输入电流给得很小那就要重新核算。2.4 续流二极管为什么必须加继电器线圈是感性负载断电瞬间电流突变线圈两端会产生一个反向电动势。方向是下正上负如果不处理这个尖峰可能达到几十伏甚至更高直接打在三极管集电极上一次两次可能没事多来几次三极管必挂。解决办法是在继电器线圈两端反向并联一个续流二极管。注意方向二极管的阴极接电源正极阳极接三极管的集电极。这样线圈断电时反向电动势会让二极管导通把能量消耗在二极管和线圈回路里电压尖峰被钳位在0.7V左右三极管就安全了。续流二极管选型很简单1N4148适合电流小的继电器1N4007适合电流大一点的继电器或者用SS34这种肖特基二极管也行。有一点必须记住续流二极管方向绝对不能接反接反了等于短路一上电就炸。3. 5种经典驱动电路图与实际接线下面给出5种可以抄作业的电路每种我都用文字接线关系代替原理图符号方便你在面包板或洞洞板上直接照做。画在纸上就是一张标准的电路图。3.1 电路一PC817 NPN三极管驱动最通用这是最经典、也最适合入门的电路。输入侧接单片机IO输出侧用2N3904或者8050三极管驱动继电器。8050最大集电极电流能到500mA以上驱动普通5V继电器绰绰有余。接线关系如下单片机IO脚 - 限流电阻R1220Ω/3.3V逻辑390Ω/5V逻辑 - PC817的1脚LED阳极PC817的2脚LED阴极 - 输入侧GND隔离电源5V - PC817的4脚集电极PC817的3脚发射极 - 基极电阻R21kΩ到2kΩ - NPN三极管基极三极管发射极 - 输出侧GND隔离电源5V - 继电器线圈一端继电器线圈另一端 - 三极管集电极续流二极管D1负极接隔离电源5V正极接三极管集电极这个电路的逻辑是IO输出高电平时光耦LED点亮输出侧导通三极管基极被拉高三极管导通继电器线圈得电触点吸合。IO输出低电平时光耦不导通三极管基极通过下拉电阻到地继电器释放。需要注意光耦输出侧和输入侧的GND必须是完全分开的如果为了省事把它们接在一起光耦就失去了隔离作用。3.2 电路二PC817 ULN2003多路驱动如果需要同时驱动多路继电器逐路用三极管太麻烦直接用ULN2003这种达林顿阵列更省事。ULN2003内部集成了7路达林顿管而且每一路内部都自带续流二极管只需要把COM脚接到继电器供电电源正极即可。接线关系如下每个单片机IO脚 - 对应限流电阻220Ω/3.3V逻辑390Ω/5V逻辑 - 对应PC817的1脚每个PC817的2脚 - 输入侧GND隔离电源5V - 各路PC817的4脚各路PC817的3脚 - ULN2003对应输入脚1号到7号ULN2003的COM脚 - 隔离电源5VULN2003的对应输出脚 - 对应继电器线圈一端继电器线圈另一端 - 隔离电源5V这个电路的优势特别明显ULN2003的输出管是集电极开路结构最大输出电流500mA耐压50V7路同时用也能扛得住。最重要的是它内部已经内置了续流二极管省去了每个继电器外部加二极管的麻烦板子看起来干净很多。不过要留意一点ULN2003内部续流二极管的公共端是COM脚如果不接COM脚续流二极管就完全没起作用继电器断开瞬间照样会把ULN2003打坏。很多人第一次用ULN2003都吃过这个亏。3.3 电路三低压有效驱动适合IO默认高电平的场景有些单片机系统上电瞬间IO脚会先输出高电平如果不做处理继电器可能会在开机瞬间误动作。解决思路之一就是把控制逻辑改成“低电平有效”IO输出低电平时继电器吸合输出高电平或悬空时继电器释放。接线关系如下输入侧电源正极 - 限流电阻R1 - PC817的1脚PC817的2脚 - 单片机IO脚隔离电源5V - PC817的4脚PC817的3脚 - 基极电阻R2 - NPN三极管基极三极管发射极 - 输出侧GND隔离电源5V - 继电器线圈一端继电器线圈另一端 - 三极管集电极续流二极管D1负极接隔离电源5V正极接三极管集电极这个电路跟电路一的差别只在输入侧电路一是输入高电平点亮LED电路三是输入低电平点亮LED。IO口为高电平时PC817输入侧两端没有电位差LED不亮IO口为低电平时电流从输入侧电源正极流经电阻、LED、IO口到地LED点亮光耦导通继电器吸合。这种接法在工业控制里很常见因为很多PLC和传感器输出就是低电平有效配合这种电路可以避免上电误动作。3.4 电路四MOC3052触发可控硅代替继电器继电器虽然好用但也存在触点寿命和开关速度的问题。如果要控制交流负载又不希望频繁更换继电器可以考虑用光耦过零/随机触发可控硅比如MOC3052加上双向可控硅BTA16。这个方案本质上是“无触点继电器”在电机、加热器等频繁通断的场合非常实用。接线关系如下以低压验证电路为例单片机IO脚 - 限流电阻R1220Ω/3.3V逻辑390Ω/5V逻辑 - MOC3052的1脚MOC3052的2脚 - 输入侧GND双向可控硅T1主端子 - 交流负载一端交流负载另一端 - 交流电源一端交流电源另一端 - 双向可控硅T2主端子MOC3052的6脚 - 双向可控硅门极GMOC3052的4脚 - 双向可控硅T2主端子与门极之间串一个100Ω到330Ω电阻MOC3052本身内部就是“发光二极管光敏双向可控硅”耐压600V可以直接触发外部大功率双向可控硅。因为MOC3052是随机触发型可以做到非过零触发适合电机调速、调光等应用。如果需要过零触发适合加热器、减少干扰可以选MOC3063。这个电路我再提醒一句只要涉及交流电源就不要在带电状态下做任何接线和调试。新手想验证电路逻辑建议用24V低压交流变压器加低压灯泡做负载先把触发逻辑调通了再交给有资质的人去做强电部分。3.5 电路五带输入保护和状态指示的完整驱动模块实际做产品或者比较正式的DIY项目时不能只把核心几个元件接起来就完事。还要考虑输入保护、抗干扰、状态指示和电源去耦。下面这个电路相当于电路一的“完整版”多出来的元件分别解决不同问题。接线关系如下单片机IO脚 - 限流电阻R1220Ω/3.3V逻辑390Ω/5V逻辑 - PC817的1脚PC817的1脚和2脚之间反向并联一个1N4148阴极接1脚阳极接2脚PC817的2脚 - 输入侧GNDPC817的1脚对地接一个10kΩ下拉电阻用于防止输入悬空时误触发隔离电源5V - 去耦电容100nF - 输出侧GND隔离电源5V - PC817的4脚PC817的3脚 - 基极电阻R2 - 三极管基极三极管基极对地接一个10kΩ下拉电阻确保无输入时光耦输出不会误驱动三极管三极管发射极 - 输出侧GND隔离电源5V - 发光二极管LED限流电阻1kΩ - 发光二极管阳极发光二极管阴极 - 三极管集电极继电器线圈并联在发光二极管两端也就是线圈一端接隔离电源5V另一端接三极管集电极续流二极管D1负极接隔离电源5V正极接三极管集电极反向并联在PC817输入侧的1N4148是为了保护LED不被反向电压击穿。如果输入信号来自长线或者带感性负载的场景经常会有负向毛刺这个二极管能把这些毛刺钳位在0.7VPC817的LED就安全了。发光二极管直接串在继电器线圈回路上能直观显示继电器是否吸合。不过要注意LED压降大约2V会让继电器线圈上的电压降低约2V所以只适合线圈额定电压5V但吸合电压范围较宽的继电器。更稳妥的做法是用LED串一个电阻后并联在继电器线圈两端而不是串联在线圈回路里。我给出的是并联式指示实际接线时优先选择并联方式。4. 实操步骤从面包板到成品板参数算好了电路也选好了接下来就是动手焊。我简单梳理一遍从面包板验证到成品板制作的操作流程很多细节是踩过坑才总结出来的。4.1 器件清单和工具准备做一个常规的单路光耦驱动继电器模块需要准备以下器件PC817光耦 1个2N3904或8050三极管 1个5V/12V继电器 1个1N4148或1N4007续流二极管 1个220Ω/390Ω限流电阻 1个1kΩ基极电阻 1个10kΩ下拉电阻 2个100nF去耦电容 1个面包板或洞洞板 1块杜邦线和5V电源 若干工具方面电烙铁温度调到350℃左右焊锡丝用含铅63/37的焊点会亮很多。面包板验证的话可以不用电烙铁插线就行但要注意面包板内部接触不良的问题特别是继电器吸合瞬间电流比较大接触不良会导致电压跌落。4.2 焊接顺序与接线注意事项我在洞洞板上做样机时习惯按照信号流向从左到右焊接先焊输入侧限流电阻和PC817再焊输出侧的基极电阻和三极管最后焊继电器和续流二极管。有一点特别重要续流二极管一定要和继电器线圈并在一起而且尽量靠近三极管集电极和电源正极走线短一点。如果光耦和二极管离得太远走线电感会产生额外尖峰影响保护效果。继电器线圈的两个引脚通常间距比较大焊在洞洞板上没问题但要注意线圈引脚和触点引脚的位置不要搞混。大多数继电器的底部标有引脚图数字1和2通常是线圈其余是触点。万一接反了线圈接到了触点上焊好通电也不会吸合。4.3 用LED假负载做上电前检查正式接继电器之前我建议先用LED加一个1kΩ电阻作为假负载接到三极管集电极的位置。这样做有三个好处一是轻松验证光耦和三极管这一级是否工作正常二是避免继电器线圈带来的电流冲击影响排查三是如果电路接错了最多烧LED不会把继电器或者电源搞坏。上电后给单片机IO口一个高电平LED应该亮给低电平LED应该灭。如果LED常亮或者常灭先检查PC817引脚是否装反。PC817引脚图是1脚阳极、2脚阴极、3脚发射极、4脚集电极。很多人把1脚和3脚搞混导致光耦完全不工作。LED假负载测试通过之后再换成真正的继电器重新上电测试。这时候要观察继电器吸合是否有“咔哒”声如果有声音但触点不通可能是触点接到了常闭端或者触点氧化。没有声音的话重点测量继电器线圈两端电压是否达到动作电压。4.4 示波器实测波形如果手头有示波器建议测两个关键点。第一个点是三极管集电极的电压波形。继电器吸合时集电极电压应该接近0V释放时电压回到电源电压而且不应该出现明显的负向尖峰。如果看到几十伏的负尖峰说明续流二极管没接或者接反了。第二个点是光耦输出侧的波形。在切换瞬间看PC817集电极或发射极信号的上升沿和下降沿是否干脆。如果波形拖泥带水说明基极电流不够或者下拉电阻太大需要适当减小基极电阻。示波器测探头的地线夹要夹在对应侧的GND上不要跨接在隔离两侧否则等于人为破坏了隔离。这一点很多人不注意探头一夹光耦白隔离了。5. 踩坑记录与排查速查表最后一章聊一聊我这几年用光耦驱动继电器时遇到的典型问题。很多问题看着五花八门实际上原因就那么几个我把它们整理成一张速查表方便大家以后照着排查。5.1 问题现象、原因、解决速查表现象可能原因解决办法继电器完全不吸合PC817引脚接反或损坏对照1-4脚定义重新检查万用表二极管档测LED正向压降继电器吸合无力触点闭合不实三极管基极电流不足三极管没饱和减小基极电阻或者换hFE更大的三极管继电器吸合瞬间单片机复位续流二极管没接反向电动势干扰电源加续流二极管并给电源加100nF470µF去耦电容继电器断开后另一个继电器误动作光耦输入端/输出端下拉电阻缺失在光耦输入侧和基极各加10kΩ下拉电阻光耦发热严重输入限流电阻太小IF过大按10mA左右重新计算R1不要低于5mA用ULN2003时一路损坏COM脚没接继电器电源正极把ULN2003的COM脚接到继电器供电电源正极高压触点侧干扰导致系统重启隔离两侧布线不合理爬电距离不够光耦两侧GND严格分开PCB挖槽或加大间距继电器吸合慢有抖动基极驱动电流不够或者光耦CTR偏低提高IF换CTR更高的光耦或者加加速电容5.2 关于PC817输入侧并联电阻和反向二极管网上经常有人问“光耦1脚和2脚并联100欧电阻要选多大”这个说法其实有点误导。PC817的1脚和2脚是LED的两个脚如果需要在两端并联元件最常见的是并联一个反向二极管而不是电阻。并联二极管是为了在输入信号有负向毛刺时保护LED选1N4148就行。如果你确实看到有人在1脚和2脚并联一个大阻值电阻比如10kΩ到100kΩ那是为了给输入端一个固定偏置防止输入悬空时LED微导通造成误触发。100Ω这个阻值太小了会明显分走驱动电流导致LED亮度不够光耦输出驱动能力下降。除非输入信号源阻抗特别低、驱动能力特别强否则不建议这么干。5.3 两路继电器接电机正反转的扩展思路最后扩展一个热门应用两路继电器如何控制直流电机正反转。直流电机换向的本质是改变电枢两端电压的极性。用两个单刀双掷继电器可以构成一个简化的换向电路电机一端接继电器1的公共端另一端接继电器2的公共端继电器1的常开触点接电源正极常闭触点接电源负极继电器2反过来接常开触点接电源负极常闭触点接电源正极。这样一路继电器保持原样另一路吸合电机两端的极性就会反转。这里最大的坑是两路继电器绝对不允许同时吸合或者切换速度过快否则会造成电源正负极直接短路。所以在程序里必须先关断一路延时10到20毫秒再吸合另一路。从个人体会来说光耦驱动继电器这个电路虽然看上去只是几个元件的事但里面牵扯到隔离、驱动能力、感性负载保护、抗干扰好几个层面的问题。每一步都理解了后面再去做电机驱动、加热器控制、自动化项目都会顺手很多。先照着电路一搭通一次再逐步加入保护、指示和抗干扰设计你就能吃透这套经典的驱动方案了。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。