ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用BT136和MOC3021自制交流固态继电器全攻略

用BT136和MOC3021自制交流固态继电器全攻略 做小制作的朋友第一次在家里插座边干活时心跳都是加速的。你玩单片机久了一定想过一件事能不能用 3.3V 或 5V 的小信号去控制家里 220V 的灯泡、风扇、加热棒大多数人第一反应是机械继电器但机械继电器体积大、有噪音、触点还会打火开关个几千次心里就没底。我第一次知道 BT136 和 MOC3021 可以组合出一个交流固态继电器时手里那些成品继电器瞬间就不香了——这套方案便宜、小巧、完全无触点还能扛住频繁开关是电子 DIY 从低压逻辑跨到交流电领域的经典入门路径。网上关于 BT136 和 MOC3021 的资料不少但很多只贴一张原理图然后让你“照着焊”。真正动手时你会遇到一堆原理图上没写的事光耦输入电流到底给多大栅极电阻用 180Ω 还是 390Ω为什么灯接上以后关不掉为什么一上电就“啪”一声这篇文章就是把原理、计算、焊接、测试和排故一次讲透让你照着做能跑起来也让你知道每一步为什么要这么做。适合谁看想给智能家居模块加交流开关的人、玩 Arduino/ESP32 想控制交流负载的人以及刚开始碰强电的电子爱好者。动手前请把安全提醒读三遍220V 不是闹着玩下面内容默认你已经具备基本电子常识最终安全由你自己的操作习惯负责。1. 项目概述交流固态继电器是什么为什么自己 DIY1.1 固态继电器与机械继电器的差异以及适用场景固态继电器英文叫 Solid State Relay缩写 SSR。它没有线圈也没有触点核心是用半导体开关元件通常是双向可控硅或晶闸管来完成通断。你给它一个控制信号它就导通信号撤掉它就在交流电过零点附近自然关断。整个过程中没有任何物理接触所以没有机械磨损也不会有触点拉弧问题开关寿命可以做到几十万次甚至上百万次操作频率远超机械继电器。机械继电器的问题恰恰在这些方面。线圈动作有延迟每分钟只能开关几十次触点通断瞬间会产生电弧带感性负载时电弧尤其明显用久了触点表面会氧化变黑接触电阻越来越大。最要命的是机械继电器线圈侧和触点侧中间只有一层绝缘一旦受潮或者高压打火低压控制电路就可能被交流电“串进来”这是很多设备烧单片机的元凶之一。固态继电器就不太会有这类问题。以 BT136 和 MOC3021 组合为例控制信号和 220V 之间隔着光电隔离交流侧的意外浪涌很难直接打到单片机引脚上。它没有可动部件装在电表箱、机柜、智能家居模块里都不占地方。当然它也不是没有缺点半导体导通时有饱和压降会发热对过流、过压更敏感需要散热和吸收回路关断时存在微小漏电流。理解了这些你才能在设计时知道该在哪里加散热器、在哪里加阻容吸收、在哪里加保险丝。这套 DIY 组合适合做白炽灯开关、加热棒温控、电烙铁/小电机通断这类通用交流控制。成本算下来核心元件不到十块钱比买一个几十块的成品 SSR 划算得多而且坏了能自己修。它的定位不是要替代工业级模块而是让你在理解原理的基础上拥有一个可裁剪、可复用的交流开关核心。1.2 为什么选择 BT136 与 MOC3021 组合选这个组合是典型的“够用、便宜、资料多”逻辑。BT136 是一颗 600V/6A 的双向可控硅TO-220 封装栅极触发电流在 10mA 级别适合直接由光耦驱动。配合散热器在 220V 环境里控制几千瓦以内的阻性负载都很从容。MOC3021 是专门驱动双向可控硅的光耦内部集成了一个红外 LED 和一个光敏双向开关输出端峰值阻断电压 400V对于 220V 交流电的约 311V 峰值电压来说是够用的但在电网波动较大的地区后面一定要加压敏电阻保护。MOC3021 的另一个特点是“随机导通”。它不像 MOC3061/MOC3063 那样内置过零检测也就是说只要 LED 亮输出端就会立刻导通不管这个瞬间交流电压是 0V 还是 311V。这个特性让它既能做普通通断开关也能做简单的相位控制调光、调速。如果你只需要开关从来没有调光需求那用 MOC3063 这类过零型光耦会更好导通瞬间更柔和电磁干扰也更小。但入门阶段用 MOC3021 能学到更多东西因为你必须自己去处理“随机导通带来的干扰”和“维持电流带来的关断问题”。选型时还有一个常见误区有人拿 BT136 当“固态继电器成品”用觉得 6A 电流就一定能控制 6A 负载。实际上6A 是壳温允许的前提下的额定电流实际长期运行建议按 60%~70% 降额也就是控制在 4A 左右比较稳。负载是电机这种带启动冲击的感性设备触发瞬间电流可能是额定电流的 5 到 7 倍更要留足余量。总之别把半导体功率元件当成无限容量来用。2. 原理详解MOC3021 与 BT136 如何协同工作2.1 光电耦合触发MOC3021 内部的“无物理接触”开关MOC3021 是一个六脚 DIP 封装的器件但它的核心结构并不复杂。输入侧是一只红外发光二极管两个引脚通常为 1、2 脚接低压控制信号输出侧是一个光敏双向开关引脚 4 和 6 就是它的两个输出端子。当输入侧通过几个毫安的电流时LED 发光内部光敏双向开关接收到光信号后导通把输出侧接通。整个传导过程不依赖任何物理接触输入和输出之间靠光传递信息所以两侧之间不存在直接电气通路。这正是整个项目最关键的安全屏障。单片机一侧的地和 220V 交流电的零线、火线之间在理想情况下是完全隔离的。即使交流侧发生短时浪涌或者绝缘异常高压也无法顺着控制线直接灌进 MCU 引脚里。你可能会问光耦隔离是不是绝对可靠不任何隔离都不能保证绝对但相比机械继电器线圈与触点之间的空气间隙光耦的隔离介质是半导体和封装材料失效模式更可控配合保险丝和压敏电阻使用整体安全性高一个量级。MOC3021 的触发电流参数要特别注意。常见型号的典型触发电流在 15mA 上下设计时最好让 LED 工作在 15~20mA。电流太小器件可能不导通电流太大LED 老化会加快。这也是很多新手焊好板子后“控制信号到位了却不动作”的主要原因之一——限流电阻选成 1kΩ、2kΩ实际电流只有两三毫安光耦根本没进入导通区。后面参数计算那节我会给出具体数值。还有一点必须说清楚MOC3021 输出侧内部的双向开关只能承受小电流它不能直接驱动大负载它的任务是给 BT136 的栅极提供一个触发电流。你可以把 MOC3021 想象成一个“扳机”真正扣动大电流“扳机”的是 BT136。这就是两件套的分工。2.2 双向可控硅导通与关断BT136 如何“锁存”交流电BT136 属于双向可控硅TRIAC结构上有三个引脚MT1、MT2 和 G栅极。MT1 和 MT2 之间可以双向导通所以它能在交流电的正半周和负半周都工作。导通的触发条件是栅极和 MT1 之间有一个足够大的触发电流脉冲。一旦触发它就会进入导通状态并且只要 MT1 和 MT2 之间的电流不小于维持电流Ih它会一直保持导通即使触发信号已经撤掉。这个性质叫“自锁”是双向可控硅和普通三极管最大的区别。因为交流电每个周期都会过零两次过零时电流会自然降到零。如果此时栅极触发信号已经撤除BT136 就会在这个过零点自然关断。也就是说你给一个 1 秒的高电平BT136 不会在信号拉低的一瞬间立刻关断而是要等到下一次交流电过零时才会真正切断负载。这个延迟最多也就 10ms 左右50Hz 电网半周期对灯、加热器、电机这种负载来说完全感知不到。但如果你的控制程序要求毫秒级精确切断就得用固态继电器内部过零检测逻辑去配合这是题外话。BT136 的栅极触发电流也很关键。不同批次和不同温度下触发电流会有差异通常在 5~10mA 之间。MOC3021 的输出能力完全足够但如果你把栅极电阻选得太大实际触发电流不足就会出现“时通时断”的现象——用万用表量触发电压是有的但灯泡就是不亮或者只在某个半周导通灯泡亮度明显偏低。这里面还包括栅极悬空的问题栅极如果不加一个下拉电阻到 MT1外界稍微有一点干扰电压就有可能让 BT136 误触发。所以在栅极和 MT1 之间并一个 1kΩ 左右的电阻是新手最容易忽略但绝对不能省的步骤。再补充一个概念维持电流与负载电流的关系。如果负载太轻比如只接一个 LED 指示灯负载电流可能低于 BT136 的维持电流结果就是可控硅导通了但电流不够“自锁”它在电流还没到零时就提前关断灯会闪烁或亮度不稳定。所以这种 SSR 不适合带很轻的负载。我在实际测试中就遇到过用 220V 小功率开关电源做负载关断后仍有小幅度输出原因之一就是负载里有电容存在。2.3 阻容吸收网络与过零设计为什么还不是“完美 SSR”MOC3021 是随机导通型如果它在交流电压峰值附近触发瞬间加载到负载上的电压会非常高产生很大的电压变化率dv/dt同时电流变化率di/dt也很大。这会在回路里激发出高频振荡和电磁干扰轻则干扰周围电器重则让 BT136 发生 dv/dt 误触发——即器件还处于关断状态但因为过大的电压变化率让它错误导通。解决 dv/dt 问题的常规手段就是在 BT136 的 MT1 和 MT2 之间并联一个 RC 串联吸收网络通常取值是几十到几百欧姆的电阻串联几纳法到几十纳法的电容。这个 RC 网络的作用不是“吸收”峰值能量而是减缓开关瞬间电压上升的速度给可控硅一个更平缓的电压变化过程。对于纯阻性负载它不那么关键但对于电机、接触器线圈、开关电源等感性或容性负载它是保命的配置。工业上很多成品 SSR 会直接选用内置过零检测的光耦比如 MOC3063。它只有在交流电零点附近才允许触发这样导通瞬间加在负载上的电压非常接近 0V电磁干扰小得多。但这也意味着它不能用来做移相调光只能做通断。如果你最终只是想让单片机控制一个加热棒开关而不是让灯亮度渐变我更建议把 MOC3021 换成 MOC3063原理图都几乎不用改安全体验直接上一个台阶。不过按本文标题我们还是以 MOC3021 为主线把随机导通型调光和通断两种玩法都搞清楚。最后提一下压敏电阻。MOC3021 的输出侧耐压是 400V而 220V 交流电峰值约 311V看似够用但电网里常有浪涌尖峰特别是在雷雨季节或附近有大功率设备启停时。一旦尖峰超过 400VMOC3021 就可能击穿。所以我会在交流电源入口处并联一只 10D471K 压敏电阻把浪涌钳位在 470V 左右。这是花几毛钱给整个模块上的一份保险不要省。3. 电路设计与物料清单3.1 完整电路结构与连线说明下面这套接法是经过我多次验证、也适合新手复刻的典型方案。先看连接关系我用简单文字描述交流火线先经过保险丝接到 BT136 的 MT1 脚负载一端接 BT136 的 MT2 脚负载另一端接交流零线。这样接线相当于把 BT136 串在火线回路上关断时负载与火线断开安全性更好。MOC3021 的 6 脚也接到 BT136 的 MT1 这一侧4 脚通过一个 390Ω 电阻接到 BT136 的栅极 G。同时在 BT136 的栅极和 MT1 之间并联一个 1kΩ 电阻用于防止误触发。RC 吸收网络100Ω 串联 10nF并联在 BT136 的 MT1 和 MT2 之间。控制侧MCU 引脚通过一个 220Ω 电阻接到 MOC3021 的 1 脚MOC3021 的 2 脚接到控制地。这个电路里MOC3021 输出侧的参考点是 BT136 的 MT1也就是火线侧。你可能担心光耦输出端会不会“带电”确实会而且在工作时 MT1 对地电位就是交流电位。所以再次强调光耦输出侧、BT136 所在的区域都应按强电对待绝对不能和低压侧共地也不能用手触摸。整个模块必须装进绝缘外壳里。很多人喜欢在 MOC3021 的输入侧并联一个 LED 指示灯用来观察控制信号有没有到。这个建议很好但要注意 LED 也要串限流电阻比如 1kΩ不要直接并上去。指示灯接反了不会亮但不会烧元件放心。3.2 关键参数计算限流电阻、栅极电阻、缓冲吸收先说 MOC3021 输入侧限流电阻。驱动电压是 5V 时LED 导通压降约 1.2~1.3VMOC3021 触发电流取 15~20mA。公式是 R (Vcc - Vf) / I 设计。I 取 20mA 时R (5 - 1.3) / 0.02 ≈ 185Ω所以标准阻值选 220Ω 最合适。如果你用 3.3V 单片机比如 ESP32R (3.3 - 1.3) / 0.015 ≈ 133Ω可以选 150Ω。但注意 ESP32 的 GPIO 在 3.3V 下驱动能力有限实测有些引脚只能稳定输出 10mA 左右如果出现触发不稳定建议加一级三极管缓冲而不是硬让引脚扛 20mA。然后是 BT136 栅极限流电阻也就是 MOC3021 4 脚和 BT136 栅极之间这个电阻。它一方面限制 MOC3021 输出侧电流保护光耦内部的双向开关另一方面也限制栅极触发电流的上升速率。按 BT136 栅极触发电流 ≤10mA 来算390Ω 是比较稳妥的常用值。如果你用的是 180Ω触发会更强但光耦输出侧电流也更大如果你用 1kΩ也不是不行但触发强度会下降在一些较冷的温度下可能出现触发不可靠。栅极并联电阻 1kΩ 的选择要理解它的作用是给栅极提供一个到 MT1 的低阻抗泄放路径防止栅极悬空时被干扰误触发。阻值不能太小不然触发电流会被它分流太多也不能太大失去下拉作用。1kΩ 是常见折中。有些人用 4.7kΩ 也能跑但我实测在电磁环境复杂的场合1kΩ 更让人放心。RC 吸收网络里电容通常选 10nF/400V 以上的 CBB 电容或安规电容电阻选 100Ω/0.5W 或者 1W。如果负载是纯阻性比如白炽灯RC 网络可有可无但接上也无害。如果负载是电机、变压器、电磁阀务必焊上。需要注意的是这个电容在交流回路里会有持续的充放电电流所以耐压一定要够别用 50V 的瓷片电容代替否则可能直接击穿冒烟。3.3 物料清单、散热与 PCB 布局要点完整的物料清单如下表照着买基本不会错项目型号/规格数量作用MOC3021DIP-6 光耦1低压控制侧与高压侧隔离及触发BT136TO-220 双向可控硅1主功率开关电阻 220Ω1/4W1MOC3021 输入限流电阻 390Ω1/4W1BT136 栅极限流电阻 1kΩ1/4W1栅极泄放防误触发电阻 100Ω0.5W 或 1W1RC 吸收回路电容 10nF400V 以上 CBB 安规电容1RC 吸收回路保险丝2A/250V 慢熔1过流保护压敏电阻10D471K1浪涌钳位散热片TO-220 小型散热片1BT136 散热绝缘云母片绝缘粒与 TO-220 配套1散热片绝缘安装接线端子5.08mm 或 7.62mm若干强电接线PCB 布局上最重要的原则是把低压区和高压区在物理上隔离开。MOC3021 位于中间输入侧电阻、控制接口放在板子一侧BT136、保险丝、接线端子放在另一侧。交流走线之间最好留 2mm 以上间距低压和高压区域之间至少留 6mm如果空间允许8mm 更安心。 BT136 的散热点就是背部金属片它内部和 MT2 脚是相连的所以装散热片时必须在两者之间垫云母片或硅胶绝缘垫再用绝缘粒固定螺丝否则散热片会带电手一碰就是事故。很多人焊完散热片后拿手去摸结果被电到就是因为忘了这一步。4. 实操焊接、调试与带载验证4.1 焊接顺序与工艺细节焊接顺序建议从低到高、从弱电到强电。先把 MOC3021、电阻这些小元件焊到洞洞板或 PCB 上再焊 BT136最后再接保险丝、接线端子这类大体积元件。MOC3021 是 DIP 封装注意方向芯片上有半圆缺口对应 1 脚位置别插反了。焊接时间不要太长DIP 脚间距小焊锡桥接是新手常见问题焊完用放大镜或手机微距检查一遍。BT136 三个引脚的间距也是标准的 TO-220 间距但引脚比较粗散热快焊接时烙铁温度要稍微高一些接触时间也要够否则会出现虚焊。焊完后用万用表蜂鸣档测量相邻引脚之间有没有短路。尤其是 BT136 的 MT1 和 MT2一旦焊锡桥接上电就直接短路。我见过好几次“上电保险就炸”的案例拆开检查都是 BT136 引脚间有锡桥。散热片安装要在焊接前规划好。先把云母片涂上薄薄一层导热硅脂贴在 BT136 金属背上然后用绝缘粒和螺丝固定散热片再把引脚插进 PCB 焊接。如果先焊好 BT136 再装散热片螺丝会把焊点拉扯开裂得不偿失。固定完毕后用万用表测量散热片与 BT136 各引脚之间是否导通正常应该完全不通否则就是绝缘垫装歪了。4.2 弱电检测用万用表确认光耦输入输出第一次上电调试别急着接 220V。先把低压控制部分测清楚。给 MOC3021 输入端接入 5V 直流电压串联 220Ω 电阻然后用万用表二极管档测光耦输入侧 1、2 脚之间的正向压降正常应该在 1V 左右。如果不导通检查电阻是否断路、光耦是否插反。接下来给 MOC3021 的 1、2 脚通一个 5V 电压电流限制在 20mA 左右。这时用万用表电阻档测 4、6 脚之间的阻值应该在低阻值状态。撤掉输入电压后4、6 脚恢复高阻。通过这一步就能确认光耦部分工作正常。很多人跳过这一步直接上强电结果有问题前后分不清到底是控制侧坏了还是功率侧坏了排查成本高得多。顺便写一个最简单的 Arduino 测试程序用于后续控制。这里用 5V 单片机的数字引脚输出高电平来驱动输入侧1 秒开、1 秒关const int ssrPin 3; void setup() { pinMode(ssrPin, OUTPUT); } void loop() { digitalWrite(ssrPin, HIGH); // 光耦导通BT136 触发 delay(1000); digitalWrite(ssrPin, LOW); // 光耦熄灭BT136 在下一个过零点关断 delay(1000); }如果你的控制方式是低电平触发就把 HIGH 和 LOW 对调。建议程序里先不接交流负载只接一个万用表在光耦输入端确认引脚拉高时电压是 5V、拉低时是 0V再做强电实验。4.3 强电测试接灯泡、接风扇如何观察波形低压测试没问题后就可以进入强电部分。第一轮带载测试强烈建议只用白炽灯这种纯阻性负载。找一个带开关的绝缘接线盒把模块放进去保险丝已经串在火线侧负载灯泡接在 BT136 的 T2 端与零线之间。上电前把程序改成 1 秒开、1 秒关然后通电观察。如果程序正常灯泡应该以 1 秒间隔闪烁。但要注意灯灭的那一刻不是按钮拉低瞬间而是之后最近的一个交流过零点所以你用耳朵听会感觉到灯灭得比程序切换略微晚了一点点这是正常现象不用怀疑程序写错了。此时用万用表交流电压档量负载两端电压开的状态下应接近市电电压关的状态下应接近 0V。注意数字万用表在悬空时有时会显示几十伏的感应电压不代表模块漏电接上灯泡看实际亮度即可。如果你有示波器可以夹在 BT136 的 MT1 和 MT2 之间看波形。导通时波形接近完整的交流正弦波关断时波形应该是接近零的平线只有很微小的漏电流波形。如果关断状态下仍有明显正弦波形且灯泡微亮说明 BT136 没有真正关断或栅极误触发需要检查栅极并联电阻是否虚焊、RC 吸收电路是否过大导致泄漏电流太大。风扇类负载可以在灯泡测试通过后再试。电机类感性负载在关断瞬间会产生反电动势如果用示波器能看到 MT1 和 MT2 之间有过冲尖峰这时候压敏电阻和 RC 吸收网络的价值就体现出来了。如果没有压敏电阻建议别拿电机去挑战 MOC3021 的 400V 耐压极限。5. 常见问题与排查技巧实录5.1 故障速查表误导通、不关断、发热、误触发实践中遇到的问题十有八九都能在下面这个表里找到答案异常现象可能原因处理办法控制信号有但负载不动作MOC3021 输入电流不够检查限流电阻按 15~20mA 计算负载只有半周导通亮度不足BT136 触发电流不足减小栅极电阻检查 390Ω 是否偏大控制信号断开负载仍然导通BT136 已损坏或击穿短路断电后检测 MT1-MT2 是否短路更换一上电负载就通不受控制MOC3021 输出击穿或 1kΩ 栅极电阻没焊检查光耦输出侧阻值补焊轻负载下闪烁负载电流低于维持电流改用重负载或在负载端并联泄放负载模块发热严重散热不良或负载过流加散热片/云母片降额使用关断后仍有微亮RC 电容漏电流或可控硅漏电流确认 RC 电容最小化必要时换更高品质电容附近有大功率设备启停时误触发dv/dt 干扰栅极电阻失效检查 1kΩ 并联电阻加强 RC 吸收这里要说一个很经典的案例有个朋友焊好一套模块接 100W 白炽灯一切正常但换成一个几十瓦的小风扇之后电机在“关断”状态下居然还在慢转而且转得毫无规律。这不是可控硅坏了而是风扇这种感性负载在断电瞬间会产生反电动势通过 RC 吸收网络和 PCB 走线反过来给栅极灌入电流导致 BT136 在半周内反复误触发。解决办法是把 1kΩ 栅极泄放电阻降到 390Ω同时把 RC 吸收电容从 10nF 减小到 4.7nF平衡 dv/dt 保护和误触发的矛盾。关于发热一定要看负载类型。BT136 导通时会有大约 1V 左右的管压降通 4A 电流就是约 4W 的发热量。这个热量如果没有良好散热TO-220 封装很快就会烫到无法触摸。所以长期大电流场合散热片是必须的。我不止一次看到有人为了省事直接让 BT136 悬空裸奔结果焊点热到开裂。5.2 几条经验性的安全建议最后这部分每条都是我用教训换来的请认真看。第一永远在火线上串保险丝。保险丝的额度按负载电流的 1.5~2 倍选比如控制 2A 以内的负载就用 2A 或 3A 的慢熔保险丝。它不能保证模块永不损坏但能在短路时保护你和电网。没有保险丝的强电模块就是一颗定时炸弹。第二测试时如果有条件一定要用隔离变压器。工频隔离变压器能把示波器探头的地和电网大地分开避免你用示波器测量时把某一侧短路。我身边就有同事在测开关电源时因为示波器探头地线接错直接“放炮”的经历。没隔离变压器的话至少也要戴绝缘手套穿绝缘鞋并保证桌面干燥。第三不要把 220V 电路放在面包板上做实验。面包板的触点间距太小耐压不够很容易在高速开关瞬间发生爬电或飞弧。洞洞板做样品已经是底线最好直接画一块 PCB。初次通电时周边不要放易燃物手不要接触任何金属端子用木柄镊子调整接线。第四低压侧和高压侧绝对不能共用参考地。MOC3021 两侧中间靠光隔离如果你为了省事把控制地接到交流零线上整个低压系统就会带上危险的对地电位轻则误触发重则电击。正确做法是把低压电源的控制地只当作“相对地”220V 交流侧的一切端子都按强电视之。第五模块做完后一定要装进绝缘外壳里固定好。即使是测试阶段也不能让两块裸板直接放在金属桌面上。散热片带电是常态把它封在盒子里只露出接线端子和控制端子是对自己和家人负责。我在实际使用中的一点体会是BT136 和 MOC3021 这个组合看起来简单但每次做都会遇到新的干扰问题。不要指望一次成功第一次通电前把所有焊点、电阻值、绝缘措施都检查一遍比烧几个元件再回头查要划算得多。做熟之后你还可以把它扩展成双路 SSR 控制、配合温湿度传感器做 PID 加热控温甚至装进自己 DIY 的智能家居模块里用手机控制家里的灯光和风扇。先把这个基础模块跑稳后面一切都会顺手很多。
返回列表