无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

无线电爱好网 首页 技术应用 单片机 查看内容

如何使用Arduino和TRIAC构建交流灯调光器

2022-8-25 09:35| 发布者: 闪电| 查看: 1| 评论: 0

摘要:  在我们的家庭中,大多数电器都是由交流电源供电的,例如灯、电视和风扇等。如果需要,我们可以通过构建家庭自动化设置使用Arduino和继电器以数字方式打开/关闭它们。但是,如果我们需要控制这些设备的功率,例如调 ...

 在我们的家庭中,大多数电器都是由交流电源供电的,例如灯、电视和风扇等。如果需要,我们可以通过构建家庭自动化设置使用 Arduino 和继电器以数字方式打开/关闭它们。但是,如果我们需要控制这些设备的功率,例如调暗 AC 灯或控制风扇的速度,该怎么办。在这种情况下,我们必须使用相位控制技术和TRIAC等静态开关来控制交流电源电压的相位。

  所以在本教程中,我们将学习使用 Arduino 和 TRIAC 的交流灯调光器。这里使用 TRIAC 来切换交流灯,因为这是一种电力电子快速开关器件,最适合这些应用。

  使用的组件:

  Arduino UNO-1

  MCT2E光耦-1

  MOC3021光耦-1

  BT136 TRIAC-1

  (12-0)V, 500mA 降压变压器-1

  1K、10K、330ohm电阻器

  10K电位器

  带灯交流灯座

  交流电线

  跳线

  在继续之前,我们将了解过零、TRIAC 和光耦合器。

  过零检测技术

  要控制交流电压,我们要做的第一件事就是检测交流信号的过零。在印度,交流信号的频率为 50 HZ,因为它本质上是交替的。因此,每次信号到达零点时,我们必须检测该点,然后根据功率要求触发 TRIAC。交流信号的过零点如下图所示:

poYBAGMEhX-AdbkZAADMqafFxyg549.png

  TRIAC 工作

poYBAGMEhXyABIi_AADNWf3KLJI986.png

  TRIAC是一种三端交流开关,可由其栅极端的低能量信号触发。在 SCR 中,它仅在一个方向上导通,但在 TRIAC 的情况下,可以在两个方向上控制功率。在这里,我们使用BT136 TRIAC 进行交流灯调光。

poYBAGMEhXeAEdZqAAEibjVjR20224.png

  如上图所示,通过向 TRIAC 施加一个小的栅极脉冲信号以 90 度的触发角触发 TRIAC。时间“t1”是我们必须根据调光要求给出的延迟时间。例如,在这种情况下,由于触发角为 90%,因此功率输出也将减半,因此灯也会以一半的强度发光。

  我们知道这里交流信号的频率是50赫兹。所以时间周期为 1/f,即 20ms。所以对于半个周期,这将是 10ms 或 10,000 微秒。因此,为了控制我们的交流灯的功率,“t1”的范围可以在 0-10000 微秒之间变化。

  光耦合器

pYYBAGMEhXSAOEYfAACQeD1GTd4751.png

  光耦合器也称为光隔离器。它用于保持两个电路(如直流和交流信号)之间的隔离。基本上,它由发射红外光的 LED 和检测红外光的光电传感器组成。在这里,我们使用MOC3021 光耦合器从微控制器信号(直流信号)控制交流灯。

  电路原理图:

  交流调光器的电路图如下:

pYYBAGMEhW6AM6D_AAK0US7GCaw900.png

  TRIAC和光耦连接图:

poYBAGMEhWiALGTBAACm95c7lTA988.png

  我在 perf 板上焊接了 TRIAC 和光耦合器 MOC3021 的电路。焊接后如下图所示:

pYYBAGMEhWWAILC2AAPQuDdBJ1A268.png

  我还在perf 板上焊接了光耦合器 MCT2E ,用于将其连接到变压器以提供交流电源:

pYYBAGMEhWGAAfYKAAMnpR9QfiE880.png

  Arduino Lamp Dimmer的完整电路如下所示:

pYYBAGMEhV2Ac3yhAAfBdON6fD4714.png

为交流调光器编程 Arduino:

成功完成硬件设置后,现在是时候对 Arduino 进行编程了。最后给出了带有演示视频的完整程序。在这里,我们逐步解释了代码,以便更好地理解。

第一步,声明将在整个代码中使用的所有全局变量。这里 TRIAC 连接到 Arduino 的引脚 4。然后声明dim_val以存储我们将在程序中使用的调光步骤的值。

 

诠释灯 = 4;int dim_val=0;

 

接下来,在设置函数内部将 LAMP 引脚声明为输出,然后配置一个中断以检测过零。在这里,我们使用了一个名为attachInterrupt的函数,它将 Arduino 的数字引脚 2 配置为外部中断,当它在其引脚上检测到任何中断时,它将调用名为zero_cross的函数。

 

无效设置(){  pinMode(灯,输出);  attachInterrupt(digitalPinToInterrupt(2), zero_cross, CHANGE);}

 

在无限循环中,从连接在 A0 的电位器读取模拟值。然后将其映射到 (10-49) 的值范围。要找出这一点,我们必须做一个小计算。之前我说过,每半个周期相当于 10,000 微秒。所以,让我们需要控制 50 步的调光(这是一个任意值。你也可以改变它)。我将最小步数设为 10,而不是零,因为 0-9 步会产生大致相同的功率输出,实际上不建议采用最大步数。因此,我将最大步数设为 49。

那么每一步的时间可以计算为 10000/50= 200 微秒。这将在代码的下一部分中使用。

 

无效循环(){    整数数据=模拟读取(A0);    int data1 = map(数据, 0, 1023,10,49);    暗淡=数据1;}

 

在最后一步,配置中断驱动函数zero_cross。在这里,可以通过将单个步进时间乘以 no 来计算调光时间。的步骤。然后在此延迟时间之后,可以使用 10 微秒的小高脉冲触发 TRIAC,这足以打开 TRIAC。

 

无效的零交叉(){  int dimming_TIme = (200*dim_val);  延迟微秒(调光时间);    数字写入(灯,高);  延迟微秒(10);  数字写入(灯,低);}

 

  Arduino灯调光器电路的工作

  下面是显示使用 Arduino 和 TRIAC 调光交流灯泡的三个阶段的图片。

  1.低调光步长

pYYBAGMEhVeASPFtAAmPQE4GG1E912.png

  2. 中等调光步骤

pYYBAGMEhVOAA7ecAAj2FfvkbF0751.png

  3. 最大调光步长:

poYBAGMEhU-APV-0AAaYDw7LeNA239.png

  这就是使用 TRIAC 和光耦合器轻松构建 AC 调光器电路的方式。下面给出了Arduino调光器代码

诠释灯 = 4;


int dim_val=0;


无效设置()


{


pinMode(灯,输出);


attachInterrupt(digitalPinToInterrupt(2), zero_cross, CHANGE);


}


无效的零交叉()


{


int dimming_TIme = (200*dim_val);


延迟微秒(调光时间);


数字写入(灯,高);


延迟微秒(10);


数字写入(灯,低);


}





无效循环()


{


整数数据=模拟读取(A0);


int data1 = map(数据, 0, 1023,10,49);


暗淡=数据1;


}


路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2022-8-25 09:35 , Processed in 0.140400 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部