发 帖  
原厂入驻New
[创意DIY] 如何使用Arduino构建隔离的数字交流调光器
2020-5-18 16:18:26  778 Arduino
分享
交流负载无处不在,因为至少为家用电器提供了电源。因此,我们始终面临着需要完全控制(调光)交流负载(例如灯,电动机,吸尘器等)的情况。
我们应该知道,控制交流负载与直流负载并不相同。因此,我们应该为此使用不同的电子电路


免责声明:该电路直接连接到电源电压。使用设备之前,您必须注意所有安全预防措施。
交流负载无处不在,因为至少为家用电器提供了电源。因此,我们始终面临着需要完全控制(调光)交流负载(例如灯,电动机,吸尘器等)的情况。
我们应该知道,控制交流负载与直流负载并不相同。因此,我们应该为此使用不同的电子电路。
图1显示了频率为50Hz(有时为60Hz)的电源正弦波。要构建调光器,过零点(波改变其极性的点)很重要。要抓住这些点,我们必须使用过零检测器。图2展示了整个电路的原理图。

图1,电源正弦波(绿色箭头显示零交叉点)

图2数字交流调光器示意图
R1,R2,IC1 [1],D1和C3构成过零检测器电路。它旨在与电源电压进行适当的隔离(光学隔离)。因此,我们可以期望获得无噪声的信号,该信号可以安全地连接到Arduino I / O。图3显示了过零检测器的输出信号(IC1的Pin-4)。根据tlp521-1数据表:“ TOSHIBA TLP521-1,-2和-4由光电合到砷化镓红外发光二极管光电晶体管组成。” 可以肯定的是,您也可以使用类似的光耦合器,但是我也将此零件用于其他设计,并且效果很好。

图3,过零检测器电路的输出信号
显而易见,我们将使用零交叉脉冲作为主控制电路的触发器。简单来说,在触发之后(零交叉),我们必须决定要提供多少功率。通过稍后演示Arduino代码和输出波,更容易理解。
IC3是BT138 [2] Triac。负载与三端双向可控硅开关元件和AC线串联,因此,三端双向可控硅开关元件应确定应传递给负载的功率。根据BT138的数据表:“采用SOT78(TO-220AB)塑料封装的平面钝化四象限双向可控硅,旨在用于需要高双向瞬态和阻断电压能力以及高热循环性能的应用中。典型的应用包括电机控制,工业和家庭照明,加热和静态开关。”
注意:BT138 Triac的安装基座(默认情况下,用于安装散热器)已连接到Pin-2。这意味着您切勿触摸散热器或将其拧到金属外壳上!
R4,R5和C2为IC2实现了缓冲电路[3],而C1和R7为IC3实现了缓冲电路[3]。这些部件帮助设备与各种负载兼容,例如电感负载。
IC2是一个光电三端双向可控硅开关元件,可在数字端和交流线之间进行适当的电流隔离。所选的零件号为moc3021 [4]。您也可以使用相似的部件号,但请注意不要使用带有嵌入式零交叉检测器的部件。这些部件可用于切换交流负载(开/关),而不用于调光。
我没有IC1,IC2和IC3的示意图和示意图。因此,我不是从头开始设计库,而是浪费时间,而是使用免费的SamacSys altium Designer插件将库直接安装在文档[5] [6] [7]中。图4显示了插件UI中的选定部分。

图4,为IC1,IC2和IC3选择的原理图符号和封装库
图5显示了设计的PCB布局。本应承载大量电流的AC线已拉得更粗,更双面。此外,两个走线的侧面都通过一些过孔进行了加固,以降低电阻并增加PCB走线的电流传输能力。

图5,交流调光器的PCB布局
所有组件均为浸入式。因此,每个人都可以轻松地快速焊接组件并将电路用作模块。R2,R4,R5和R7是1W电阻器。R1是R6是1 / 4W。可以从MKT或聚酯型电容器中选择C1和C2,但要确保它们的额定电压至少为400V。250V额定电容似乎还可以,但是250V有点接近输入电压边界。因此,400V是电容器电压的明智选择。C1的节距为10mm。对于C2,此数字为10.5毫米。K1是间距为5.08mm(MKDSN-2.5 / 4-5.08)的MKDSN连接器。P1是传统的4针公头连接器。

PCB板在IC1和IC2下方有一个切口。它在电路板的两个部分之间提供了更好的电流隔离。

图6展示了电路板的第一个原型。本文提供的PCB布局和Gerber文件是最终版本[8]。

安装的散热器仅用于简短测试。对于长期的实际使用,您必须使用更大的散热器。IC3的位置(靠近PCB边框)使散热器的安装任务变得更加容易。

图6,电路的第一个原型
现在是时候将电路连接到Arduino板并控制AC负载了。我选择了一个Arduino Nano,它为该项目引入了足够的资源,但是您也可以使用其他开发板。AC调光器的示例Arduino代码如下:
1.常量字节ZCP = 2;
2. const unsigned int dim = 5000;
3. void setup(){
4. pinMode(ZCP,INPUT);
5. pinMode(10,输出);
6. digitalWrite(10,LOW);
7.}
8. void loop(){
9. IF(digitalRead(ZCP)== HIGH)
10. Zero_Cross();
11.}
12. void Zero_Cross(){
13. digitalWrite(10,LOW);
14. delaymicroseconds(dim);
15. digitalWrite(10,HIGH);
16.}
无需编写复杂的代码来测试我们的调光器。嗅探过零检测器脉冲有两种方法:轮询和中断。在第一次尝试中,我使用中断解决了此问题,但在某些情况下我遇到了负载闪烁的问题。闪烁是令人讨厌的情况,某些调光器会发生这种情况。原因是错误的时机。正如我前面提到的,零交叉点非常重要,任何随机时移都会导致不稳定。使用中断会引入一些抖动,并且此抖动会导致某些调光器设置闪烁。因此,我将方法切换为轮询(第8至11行)。

我们要做的就是在两个周期中都改变三端双向可控硅开关的关断时间,因此“ dim”变量定义了向负载传输的功率。首先,我将调光器设置在中间。这意味着在5mS的时间内,双向可控硅保持关闭状态。因此,让我们通过检查负载波形来确认我们的理论。

注意:切勿将示波器探头直接连接到电源。探头的接地连接可与电源端子建立闭环,并炸毁路径中的所有物体,包括电路,探头或示波器,甚至您自己!

有几种解决方案可以解决此问题,例如使用隔离器或使用差分探头等。我使用了普通的变压器(220V至12V)并仅通过此方法验证了输出。请检查图7中的连接。我必须注意,必须连接负载,否则您将看不到真正的波形。

图7,探测负载和所需的连接
图8显示了输出波形(50%)。您可以扩展代码并添加两个按钮来增加和减少输出功率。您可以开发代码并使用自己的Arduino开发板和您的特定需求对其进行修改。

图8,以50%的功率输出波形(dim = 5000)

0
2020-5-18 16:18:26   评论 分享淘帖
高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表