- 什么是交流相角控制及其工作原理?
- 相角控制的挑战
- 交流相角控制电路所需的材料
- 交流相角控制电路图
- 交流相角控制电路–工作
- 交流相角控制电路的PCB设计
- 交流相角控制的Arduino代码
- 测试交流相角控制电路
- 进一步增强
家庭自动化系统日益普及,如今,通过使用一些简单的控制机制(如继电器或开关)来打开和关闭某些设备变得很容易,我们之前已经使用继电器构建了许多基于Arduino的家庭自动化项目。但是,许多家用电器需要控制此交流电源,而不仅仅是打开或关闭。现在,进入AC相角控制领域,这是一种可以控制AC相角的简单技术。这意味着您可以控制吊扇或任何其他交流风扇的速度,甚至可以控制LED或白炽灯泡的强度。
尽管听起来很简单,但实际实现起来却很困难,因此在本文中,我们将借助555定时器构建一个简单的交流相角控制电路,最后,我们将使用一个Arduino产生一个简单的PWM信号来控制白炽灯泡的强度。正如您现在可以清楚地想象到的那样,通过该电路,您可以构建一个简单的家庭自动化系统,在该系统中,您可以使用单个Arduino控制风扇和AC调光器。
什么是交流相角控制及其工作原理?
交流相位角控制是一种可以控制或斩波交流正弦波的方法。在过零检测之后,开关设备的触发角会发生变化,从而导致平均电压输出随修正的正弦波成比例地变化,下面的图片对此进行了详细说明。
如您所见,首先我们有交流输入信号。接下来,我们获得过零信号,该信号每10ms产生一次中断。接下来,我们得到栅极触发信号,一旦获得触发信号,我们将等待一定的时间,然后再提供触发脉冲,等待的时间越长,我们可以降低的平均电压就越多,反之亦然。我们将在本文后面讨论更多的主题。
相角控制的挑战
在查看原理图和所有材料要求之前,我们先讨论与此类电路相关的一些问题以及我们的电路如何解决这些问题。
我们的目标是在任何类型的家庭自动化应用中借助微控制器来控制交流正弦波的相位角。如果我们看下面的图片,您会看到黄色的是我们的正弦波,绿色的是我们的零交叉信号。
您会看到,当我们处理50Hz正弦波时,过零信号每10ms出现一次。在微控制器中,它每10毫秒产生一次中断。如果除此以外再放置其他任何代码,则由于中断,其他代码可能无法正常工作。我们知道印度的线路频率为50Hz,因此我们正在处理50Hz的正弦波,并且为了控制主交流电源,我们需要在特定时间段内打开和关闭TRIAC。为此,基于微控制器的相角控制电路将过零信号用作中断,但是此方法的问题是除了步速角控制代码外,您无法运行其他任何代码,因为它会破坏循环周期和这些代码之一将不起作用。
让我用一个例子来说明一下,假设您必须执行一个项目,在该项目中您需要控制白炽灯泡的亮度,还需要同时测量温度。要控制白炽灯的亮度,您需要一个相角控制电路,还需要一起读取温度数据,如果是这种情况,则您的电路将无法正常工作,因为DHT22传感器需要一些时间才能完成工作。给出其输出数据。在这段时间内,相角控制电路将停止工作,也就是说,如果您将其配置为轮询模式,但是如果您将零交叉信号配置为中断模式,则将永远无法读取DHT数据因为CRC检查将失败。
要解决此问题,您可以对不同的相角控制电路使用不同的微控制器,但这会增加BOM成本,另一种解决方案是使用由555计时器等通用组件组成的电路,并且成本更低。
交流相角控制电路所需的材料
下图显示了用于构建电路的材料,因为它是由非常通用的组件制成的,因此您应该能够在本地的业余爱好商店中找到所有列出的材料。
我还在下表中列出了类型和数量的组件,因为这是一个演示项目,所以我使用单个渠道来完成。但是,可以根据需要轻松放大电路。
编号 |
部分 |
类型 |
数量 |
1个 |
螺丝端子5.04mm |
连接器 |
3 |
2 |
公头2.54mm |
连接器 |
1X2 |
3 |
56K,1瓦 |
电阻器 |
2 |
4 |
1N4007 |
二极管 |
4 |
5 |
0.1uF,25V |
电容器类 |
2 |
6 |
100uF,25V |
电容器类 |
2 |
7 |
LM7805 |
调压器 |
1个 |
8 |
1K |
电阻器 |
1个 |
9 |
470R |
电阻器 |
2 |
10 |
47R |
电阻器 |
2 |
11 |
82000 |
电阻器 |
1个 |
12 |
10K |
电阻器 |
1个 |
13 |
PC817 |
光耦合器 |
1个 |
14 |
NE7555 |
我知道了 |
1个 |
12 |
MOC3021 |
光电三极管驱动器 |
1个 |
13 |
IRF9540 |
场效应管 |
1个 |
14 |
3.3uF |
电容器类 |
1个 |
15 |
连接线 |
电线 |
5 |
16 |
0.1uF,1kV |
电容器类 |
1个 |
17 |
Arduino Nano(用于测试) |
微控制器 |
1个 |
交流相角控制电路图
AC相角控制电路的原理图如下所示,该电路非常简单,并使用通用组件来实现相角控制。
交流相角控制电路–工作
该电路由精心设计的组件组成,我将逐一介绍每个模块。
零交叉检测电路:
首先,在我们的清单中,过零检测电路由两个56K,1W电阻,四个1n4007二极管和一个PC817光耦合器组成。该电路负责将过零信号提供给555定时器IC。同样,我们已经分离了相位和中性信号,以在TRIAC部分中进一步使用它。
LM7809稳压器:
7809稳压器用于为电路供电,该电路负责为整个电路供电。此外,我们使用了两个470uF电容器和一个0.1uF电容器作为LM7809 IC的去耦电容器。
带NE555定时器的控制电路:
上图显示了555定时器控制电路,555被配置为单稳态配置,因此,当过零检测电路的触发信号击中触发器时,555定时器将在电阻器的帮助下开始为电容器充电(通常),但是我们的电路中有一个MOSFET代替了一个电阻,并且通过控制MOSFET的栅极,我们控制了流向电容器的电流,这就是我们控制充电时间的原因,因此我们控制了555个定时器的输出。在许多项目中,我们都使用555定时器IC来制作我们的项目,如果您想了解更多有关此主题的信息,可以查看所有其他项目。
TRIAC和TRIAC驱动器电路:
TRIAC充当实际上接通和断开的主开关,从而控制AC信号的输出。驱动TRIAC的是MOC3021光电可控硅驱动器,它不仅驱动TRIAC,而且还提供光隔离,0.01uF 2KV高压电容器和47R电阻器构成了缓冲电路,从而保护了我们的电路免受高压尖峰的影响。当它连接到感性负载时会发生这种情况,交流信号的非正弦特性是造成尖峰的原因。此外,它还负责功率因数问题,但这是另一篇文章的主题。另外,在各种文章中,我们都将TRIAC用作我们的首选设备,如果您感兴趣的话,您可以检查一下。
低通滤波器和P沟道MOSFET(在电路中充当电阻器):
82K电阻器和3.3uF电容器形成低通滤波器,该低通滤波器负责平滑Arduino产生的高频PWM信号。如前所述,P沟道MOSFET用作可变电阻,它控制电容器的充电时间。控制信号是由低通滤波器滤除的PWM信号。在上一篇文章中,我们已经清除了低通滤波器的概念,如果您想了解更多有关该主题的信息,可以查看有关有源低通滤波器或无源低通滤波器的文章。
交流相角控制电路的PCB设计
我们的相角控制电路的PCB设计在单面板上。我已经使用Eagle来设计PCB,但是您可以使用任何选择的设计软件。我的电路板设计的2D图像如下所示。
充分的接地填充可用于所有组件之间的正确接地。12V DC输入和220 V AC输入位于左侧,输出位于PCB的右侧。可以从下面的链接下载Eagle以及Gerber的完整设计文件。
- 下载交流相位角控制电路的PCB设计,GERBER和PDF文件
手工PCB:
为方便起见,我制作了手工制作的PCB版本,如下所示。
交流相角控制的Arduino代码
一个简单的PWM生成代码用于使电路工作,该代码及其解释如下。您也可以在本页底部找到完整的代码。首先,我们声明所有必要的变量,
const int AnalogInPin = A0; //电位计所连接的模拟输入引脚const int AnalogOutPin = 9; //将LED连接到int sensorValue的模拟输出引脚= 0; //从电位器读取的值int outputValue = 0; //数值输出到PWM(模拟输出)
变量用于声明模拟引脚,analogOut引脚,其他变量用于存储,转换和打印映射值。接下来在 setup() 部分中,我们以9600波特来初始化UART,以便我们可以监视输出,这就是我们找出哪个PWM范围能够完全控制电路输出的方法。
void setup(){//以9600 bps初始化串行通信:Serial.begin(9600); }
接下来,在 loop() 部分中,我们读取模拟引脚A0并将其值存储到传感器值变量,接下来我们将传感器值映射到0 -255,因为atmega的PWM计时器仅为8位,接下来使用Arduino的 AnalogWrite() 函数设置PWM信号。最后,我们将这些值打印到串行监视器窗口中,以找出控制信号的范围,如果您按照本教程操作,最后的视频将使您对该主题有一个更清晰的了解。
sensorValue = AnalogRead(analogInPin); //读取模拟量值:outputValue = map(sensorValue,0,1023,0,255); //将其映射到模拟输出的范围:analogWrite(analogOutPin,outputValue); //更改模拟输出值:Serial.print(“ sensor =”); //将结果打印到串行监视器:Serial.print(sensorValue); Serial.print(“ \ t output =”); Serial.println(outputValue);
测试交流相角控制电路
上图显示了电路的测试设置。12V电源由12V SMPS电路提供,在我们的案例中,负载是一个灯泡,可以很容易地将其替换为\电感负载,例如风扇。另外,正如您所看到的,我已经安装了一个电位计来控制灯的亮度,但是可以用任何其他形式的控制器代替它,如果放大图像,您会看到电位计已连接到Arduino的A0引脚和PWM信号来自Arduino的pin9。
如上图所示,输出值为84,白炽灯泡的亮度非常低,
在此图像中,您可以看到该值为82,并且白炽灯泡的亮度增加了。
经过多次失败的尝试后,我提出了一个实际上可以正常工作的电路。有没有想过电路不工作时测试台的外观?让我告诉你,这看起来很糟糕,
这是我之前正在设计的电路。我不得不完全扔掉它,然后再制造一个新的,因为前一个没用。
进一步增强
在本演示中,电路是在手工PCB上制成的,但是可以轻松地将其构建在优质PCB上。在我的实验中,由于组件尺寸的原因,PCB的尺寸确实很大,但是在生产环境中,通过使用廉价的SMD组件可以减少这种情况。在我的实验中,我发现使用7555计时器而不是555计时器可以大大增加被控对象的数量,此外,电路的稳定性也有所提高。