在我们的家庭中,大多数设备都由交流电源供电,例如电灯,电视和风扇等。如果需要,我们可以使用Arduino和继电器通过构建家庭自动化设置以数字方式打开/关闭它们。但是,如果我们需要控制这些设备的电源,例如使交流电灯变暗或控制风扇的速度,该怎么办?在这种情况下,我们必须使用相位控制技术和诸如TRIAC的静态开关来控制AC电源电压的相位。
因此,在本教程中,我们将学习使用Arduino和TRIAC的交流电调光器。在这里,可控硅(TRIAC)用于切换交流灯,因为这是最适合这些应用的电力电子快速切换设备。让我们关注有关该项目的硬件详细信息和编程的完整文章。另外,请查看我们以前关于调光的教程:
- 红外遥控可控硅调光电路
- 使用PWM的基于Arduino的LED调光器
- 1瓦LED调光器电路
- 使用ATmega32单片机的功率LED调光器
使用的组件:
- Arduino UNO-1
- MCT2E光耦合器-1
- MOC3021光耦合器-1
- BT136三端双向可控硅-1
- (12-0)V,500mA降压变压器-1
- 1K,10K,330ohm电阻器
- 10K电位器
- 交流灯座
- 交流电线
- 跳线
在继续之前,我们将了解零交叉,TRIAC和光耦合器。
过零检测技术
要控制交流电压,我们要做的第一件事是检测交流信号的过零。在印度,交流信号的频率为50 HZ,并且实际上是交变的。因此,每次信号到达零点时,我们都必须检测到该点,然后根据功率要求触发TRIAC。交流信号的零交叉点如下所示:
可控硅工作
TRIAC是三端交流开关,可由其栅极端的低能量信号触发。在可控硅中,它仅在一个方向上传导,但是对于TRIAC,可以在两个方向上控制功率。在这里,我们将BT136 TRIAC用于交流灯调光。
如上图所示,通过向其施加较小的栅极脉冲信号,以90度的触发角触发TRIAC。时间“ t1”是根据调光要求我们必须给出的延迟时间。例如,在这种情况下,由于发射角为90%,因此功率输出也将减半,因此灯也将以一半的强度发光。
我们知道这里的交流信号频率为50 Hz。因此,时间段将是1 / f,即20ms。因此,对于半个周期,这将是10ms或10,000微秒。因此,为了控制交流电灯的功率,“ t1”的范围可以在0-10000微秒之间变化。在此处了解有关Triac及其工作的更多信息。
光耦合器
光耦也被称为Optoisolato河 它用于维持两个电路(如DC和AC信号)之间的隔离。基本上,它由发出红外光的LED和检测它的光电传感器组成。在这里,我们使用了MOC3021光耦合器来控制微控制器信号(即直流信号)中的交流灯。我们以前在TRIAC调光器电路中使用了相同的MOC3021光耦合器。通过以下链接,还可以了解有关光耦合器及其类型的更多信息。
电路原理图:
交流调光器的电路图如下:
TRIAC和光耦合器连接图:
我已经将TRIAC和光电耦合器MOC3021的电路焊接在了一块穿孔板上。焊接后如下图所示:
我还把光耦合器MCT2E焊接在性能板上,以将其连接到用于交流电源的变压器:
Arduino Lamp Dimmer的完整电路如下所示:
为交流调光器编程Arduino:
成功完成硬件设置后,现在该对Arduino进行编程了。最后给出了带有演示视频的完整程序。在这里,我们逐步解释了代码,以更好地降低性能。
第一步,声明所有全局变量,这些变量将在整个代码中使用。TRIAC此处连接到Arduino的引脚4。然后声明dim_val以存储我们将在程序中使用的调光步骤的值。
int LAMP = 4; int dim_val = 0;
接下来,内部 设置 功能将LAMP引脚声明为输出,然后配置一个中断以检测过零。在这里,我们使用了一个名为attachInterrupt的函数,它将Arduino的数字引脚2配置为外部中断,当它在其引脚上检测到任何中断时,将调用名为zero_cross的函数。
void setup(){pinMode(LAMP,OUTPUT); attachInterrupt(digitalPinToInterrupt(2),zero_cross,CHANGE); }
在无限 循环内 ,从连接到A0的电位计读取模拟值。然后将其映射到(10-49)的值范围。为了找出这一点,我们必须进行少量计算。之前我曾说过,每个半周期等于10,000微秒。因此,让我们需要分50步控制调光(这是一个任意值。您也可以更改它)。我将最小步长定为10,而不是零,因为0-9步给出了大致相同的功率输出,因此实际上不建议采用最大步长。因此,我已将最大步数设为49。
然后,每个步长时间可以计算为10000/50 = 200微秒。这将在代码的下一部分中使用。
void loop(){int data = analogRead(A0); int data1 = map(data,0,1023,10,49); dim_val = data1; }
在最后一步中,配置中断驱动的函数zero_cross。在这里,调光时间可以通过将单个步进时间乘以no来计算。步骤。然后,在此延迟时间之后,可以使用10微秒的小高脉冲来触发TRIAC,这足以打开TRIAC。
void zero_cross(){int dimming_time =(200 * dim_val); delayMicroseconds(dimming_time); digitalWrite(LAMP,HIGH); delayMicroseconds(10); digitalWrite(LAMP,LOW); }
Arduino灯调光器电路的工作
下面的图片显示了使用Arduino和TRIAC调光AC灯泡的三个阶段。
1.低调光步骤
2.中度调光步骤
3.最大调光步骤:
这就是使用TRIAC和光耦合器可以轻松构建交流调光器电路的方式。一个工作视频和Arduino的调光器的代码下面给出
/>