电源/新能源
在我们的家庭中,大多数电器都是由交流电源供电的,例如灯、电视和风扇等。如果需要,我们可以通过构建家庭自动化设置使用 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。交流信号的过零点如下图所示:
TRIAC 工作
TRIAC是一种三端交流开关,可由其栅极端的低能量信号触发。在 SCR 中,它仅在一个方向上导通,但在 TRIAC 的情况下,可以在两个方向上控制功率。在这里,我们使用BT136 TRIAC 进行交流灯调光。
如上图所示,通过向 TRIAC 施加一个小的栅极脉冲信号以 90 度的触发角触发 TRIAC。时间“t1”是我们必须根据调光要求给出的延迟时间。例如,在这种情况下,由于触发角为 90%,因此功率输出也将减半,因此灯也会以一半的强度发光。
我们知道这里交流信号的频率是50赫兹。所以时间周期为 1/f,即 20ms。所以对于半个周期,这将是 10ms 或 10,000 微秒。因此,为了控制我们的交流灯的功率,“t1”的范围可以在 0-10000 微秒之间变化。
光耦合器
光耦合器也称为光隔离器。它用于保持两个威廉希尔官方网站 (如直流和交流信号)之间的隔离。基本上,它由发射红外光的 LED 和检测红外光的光电传感器组成。在这里,我们使用MOC3021 光耦合器从微控制器信号(直流信号)控制交流灯。
威廉希尔官方网站 原理图:
交流调光器的威廉希尔官方网站 图如下:
TRIAC和光耦连接图:
我在 perf 板上焊接了 TRIAC 和光耦合器 MOC3021 的威廉希尔官方网站 。焊接后如下图所示:
我还在perf 板上焊接了光耦合器 MCT2E ,用于将其连接到变压器以提供交流电源:
Arduino Lamp Dimmer的完整威廉希尔官方网站 如下所示:
为交流调光器编程 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.低调光步长
2. 中等调光步骤
3. 最大调光步长:
这就是使用 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;
}
全部0条评论
快来发表一下你的评论吧 !