如何使用Arduino生成的PWM来控制交流风扇的速度

发布时间:2023-06-06  

警告!! 本项目中讨论的电路图仅用于教育目的。请注意,使用 220V 交流电源电压需要采取极端的预防措施,并应遵循安全程序。电路运行时,请勿触摸任何元件或电线。


就像我们在许多基于 Arduino 的家庭自动化项目中所做的那样,使用开关或使用某种控制机制很容易打开或关闭任何家用电器。但是有很多应用需要我们部分控制交流电源,例如控制风扇的速度或灯的强度。在这种情况下,使用了PWM 技术,所以在这里我们将学习如何使用 Arduino 生成的 PWM 来控制 Arduino 的交流风扇速度。


在这个项目中,我们将演示使用 TRIAC 的 Arduino 交流风扇速度控制。这里使用交流信号的相位控制方法来控制交流风扇的速度,使用 Arduino 生成的 PWM 信号。在之前的教程中,我们使用 PWM 控制直流风扇的速度。


所需组件

Arduino UNO

4N25(过零检测器)

10k 电位器

MOC3021 0pto耦合器

(0-9)V、500 mA 降压变压器

BT136 可控硅

230 VAC 轴流交流风扇

连接线

电阻器

使用 Arduino 进行交流风扇控制

工作可以分为四个不同的部分。它们如下

1. 过零检测器

2. 相位角控制电路

3. 控制风扇转速量的电位器

4. PWM 信号发生电路


1. 过零检测器

我们家中的交流电源是 220v AC RMS,50 HZ。该交流信号本质上是交替的,并且会周期性地改变其极性。在每个周期的前半部分,它沿一个方向流动,达到峰值电压,然后下降到零。然后在下一个半周期,它以交替方向(负)流动到峰值电压,然后再次变为零。为了控制 AC Fan 的速度,需要对两个半周期的峰值电压进行斩波或控制。为此,我们必须检测要控制/斩波信号的零点。电压曲线上电压改变方向的这一点称为过零电压。


下图所示的电路是用于获取过零点的过零检测器电路。首先,使用降压变压器将 220V AC 电压降为 9V AC ,然后在其引脚 1 和 2 处馈入 4N25 光耦合器。4N25 光耦合器具有内置 LED,引脚 1 为阳极,引脚 2 为阴极。因此,根据下面的电路,当交流波接近零交叉点时,4N25 的内置 LED 将关闭,因此,4N25 的输出晶体管也将关闭,输出脉冲引脚将被拉到5V。同样,当信号逐渐增加到峰值时点,然后 LED 打开,晶体管也将打开,接地引脚连接到输出引脚,这使得该引脚为 0V。使用此脉冲,可以使用 Arduino 检测过零点。

poYBAGL992OAD-IbAAFWQAhI8Ew916.png

2. 相位角控制电路

检测到过零点后,现在我们必须控制电源开启和关闭的时间量。该PWM 信号将决定输出到交流电机的电压量,进而控制电机的速度。这里使用了BT136 TRIAC,它控制交流电压,因为它是用于控制交流电压信号的电力电子开关。


TRIAC是一种三端交流开关,可由其栅极端的低能量信号触发。在 SCR 中,它仅在一个方向上导通,但在 TRIAC 的情况下,可以在两个方向上控制功率。要了解有关TRIAC和SCR的更多信息,请阅读我们之前的文章。

pYYBAGL991-ALD9XAAEVyrHfvmk393.png

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


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


光耦:

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

TRIAC和光耦连接图:

poYBAGL991uAaWpVAAFJb6ciWXY101.png

3. 控制风扇转速的电位器

pYYBAGL991eAaMk2AAHzK_ndkA8882.png

这里使用电位器来改变交流风扇的速度。我们知道电位器是一个三端器件,它充当分压器并提供可变电压输出。这个可变的模拟输出电压在 Arduino 模拟输入端给出,用于设置交流风扇的速度值。


4. PWM信号发生单元

在最后一步中,根据速度要求向 TRIAC 提供PWM 脉冲,从而改变 AC 信号的 ON/OFF 时序并提供可变输出来控制风扇速度。在这里,Arduino 用于生成 PWM 脉冲,该脉冲从电位器获取输入,并将 PWM 信号输出到 TRIAC 和光耦合器电路,进一步以所需的速度驱动交流风扇。


电路原理图

这个基于 Arduino 的 230v 风扇速度控制电路的电路图如下所示:

poYBAGL991KABdLiAALbZn_AhJc785.png

注意:我在面包板上展示了完整的电路,只是为了便于理解。您不应该直接在面包板上使用 220V 交流电源,我使用虚线板进行连接,如下图所示

poYBAGL990-AMQQbAAXgfxgwTAo465.png

为 Arduino 编程以控制交流风扇速度

硬件连接后,我们需要为 Arduino 编写代码,它会产生一个PWM 信号,使用电位器输入来控制 AC 信号的 ON/OFF 时序。我们以前在许多项目中使用过 PWM 技术。


这个Arduino AC风扇速度控制项目的完整代码在这个项目的底部给出。下面给出代码的逐步解释。


第一步,声明所有需要的变量,这些变量将在整个代码中使用。这里 BT136 TRIAC 连接到 Arduino 的引脚 6。并且声明了变量speed_val来存储速度步长的值。

int TRIAC = 6;

int speed_val =0;

接下来,在setup函数中,将TRIAC引脚声明为输出,因为 PWM 输出将通过该引脚生成。然后,配置一个中断来检测过零。这里我们使用了一个名为attachInterrupt的函数,它将 Arduino 的数字引脚 3 配置为外部中断,并在其引脚检测到任何中断时调用名为zero_crossing的函数。


无效设置()

{

  pinMode(灯,输出);

  attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);

}

在无限循环中,从连接在 A0 的电位器读取模拟值,并将其映射到 (10-49) 的值范围。


要找出这个范围,我们必须做一个小计算。早些时候有人说,每半个周期相当于 10,000 微秒。所以这里的调光将被控制在 50 步,这是一个任意值,可以改变。这里的最小步数取为 10,而不是零,因为 0-9 步给出的功率输出大致相同,最大步数取为 49,因为实际上不建议采用上限(在这种情况下为 50)。


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


无效循环()

{

    int pot=analogRead(A0);

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

    speed_val=data1;

}

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


无效过零()

{

  int 斩波时间 = (200*speed_val);

  延迟微秒(chop_time);  

  数字写入(TRIAC,高);

  延迟微秒(10);

  数字写入(TRIAC,低);

}

下面给出了使用 Arduino 和 PWM进行交流风扇控制的完整代码

int TRIAC = 6;


int speed_val=0;


无效设置()


{


pinMode(TRIAC,输出);


attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);


}


void zero_crossing()


{


int Chop_time = (200*speed_val);


延迟微秒(chop_time);


数字写入(TRIAC,高);


延迟微秒(10);


数字写入(TRIAC,低);


}


无效循环()


{


int pot=analogRead(A0);


int data1 = map(pot, 0, 1023,10,40);


speed_val=data1;


}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    如何使用PWM技术控制LED的亮度或直流风扇的速度;在本教程中,我们将了解STM32中的PWM(脉宽调制),以及如何使用PWM技术控制LED的亮度或直流风扇的速度。 我们知道有两种类型的信号:模拟......
    pwm风扇转速怎么调节 风扇电机调速电路的PWM波形; 一、引言 拆解过一个廉价的手持风扇: 这个小风扇有个电机调速电路,通过PWM进行调速: PWM即脉冲宽度调制,Pulse Width......
    基于STC51单片机的风扇;设计要求:# 利用直流电机充当风扇 键盘可以调整风扇的转速 设计概述:# 按照设计要求,风扇的开与关需要用到独立键盘,转速控制需要用到PWM技术。所需......
    霍尔元件、可编程的类正弦波智能单相DC风扇驱动IC。 ●   具有3.5V~16V的宽输入电压范围,内置的电源反接保护,无需外接的反向保护二极管。 ●   PWM调速曲线8段可......
    外接的反向保护二极管。 ●   PWM调速曲线8段可编程、最大输出转速可编程、并且可实现风扇转速与PWM输入占空比线性或非线性,以适应不同应用需求。 ●   集成了8段曲线可调、最大或最小转速可调、软启......
    如何使用Arduino生成的PWM来控制交流风扇的速度;警告!! 本项目中讨论的电路图仅用于教育目的。请注意,使用 220V 交流电源电压需要采取极端的预防措施,并应遵循安全程序。电路运行时,请勿......
    、软开关电路(为了降噪) 8、省电功能(PWM负荷输入为0%) 9、内置锁具保护和自动重启功能 10、热关机电路 产品应用 1、无声风扇电机 2、游戏机 3、CPU冷却器(CPU散热风扇) 4、口罩风扇 ......
    的转速控制是通过对电路驱动器的输出信号进行调节实现的。通常情况下,电路驱动器会根据温控器提供的信号,控制风扇在低速、高速和停止等不同状态之间切换。在实际应用中,风扇的转速控制可以通过改变热敏开关的占空比,或者采用 PWM......
    MAX31740数据手册和产品信息;MAX31740提供了一套成熟且设计简单的风扇速度控制方案,通过监测外部NTC热敏电阻的温度,产生用于控制2、3或4线风扇速度的PWM信号。利用外部电阻设置风扇......
    的档位。 3.共3个按键:设置、加、减。按一下设置可以设置上限,再按下设置下限,均可以按键加减调整。 4.利用PWM调速,当温度低于下限时,风扇不转动,当温度处于上、下限之间时1档转动(50%的转速),当温......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>