设计一个基于物联网的风扇调节器

音视频及家电

723人已加入

描述

  物联网无处不在,是可以用来让生活更轻松的最伟大的东西之一。互联网上有许多基于物联网的 家庭自动化项目 ,但它们都没有为您提供通过互联网控制风扇速度的选项。所以在这里,在这个项目中,我们将制作一个 物联网 风扇速度控制 电路,以使用 Blynk 控制普通风扇或其他设备的速度。该电路与其他电路有两个不同之处,首先,它是基于 TRIAC 的控制,其次,它非常易于安装。我们设计了完整的系统以安装在一个紧凑的外壳中,使其易于安装并与您的吊扇或壁扇一起安装。这种紧凑的设计是由 PCBWay制造的 PCB 板实现的,我们还将向您展示电路板是如何设计和从 PCBway 订购的。那么,让我们看一下项目计划并构建一个精心设计 的基于物联网的风扇调节器。

  构建基于物联网的风扇速度控制器所需的组件

  在这里,我们将使用基于物联网的低成本控制系统,该系统可用于以下应用:

  接受交流输入和控制输出的简单产品。

  就像设备之间的串联设备一样

  无需任何修改即可使用。

  使用互联网连接并连接到附近的 Wi-Fi 网络以获得互联网连接。

  使用移动应用程序(不是定制的,而是现成的工具)。

  一次控制高达 250 瓦的电器,无需太多修改。

  有一个蜂鸣器,当状态发生任何变化时,它会通知用户。

  为了满足上述项目要求,需要以下组件:

调节器

调节器

调节器

  基于物联网的风扇速度控制器示意图

  基于物联网的 风扇控制器的完整电路图如下:

调节器

  好吧,电路的工作并不那么复杂,而且非常简单。电路由以下几部分组成:

  交流到直流转换器

  过零电路

  TRIAC和驱动电路

  蜂鸣器

  微控制器

  交流到直流转换器:

调节器

  运行电路需要两个电压电平。这里,PS1 是将交流电转换为 5V 1A 的电源单元,用于电路级操作。然而,由于我们使用的是 ESP12F,我们需要 3.3V 来运行微控制器单元。Hi-Link 5V 1A 模块用于将 AC 230V 市电转换为 DC 5V 1A。使用 AMS1117-3.3V LDO 稳压器 U2 将其进一步转换为微控制器所需的 3.3V。

  L4 的目的是降低进入 SMPS 模块的共模 EMI 。如果您不熟悉 EMI,可以查看有关电磁干扰基础知识的文章以及降低SMPS 中 EMI 的设计技术。

  过零电路:

  过零电路用于检测正弦波穿过零区域时的时间或事件。但是我们为什么要这样做呢?这是因为我们必须切换(增加/减少)这个交流电压来控制风扇的速度。开始切换交流波的最佳时间是当它穿过零点时。对于初学者来说,这可能会让人感到困惑,所以请阅读过零教程以了解基础知识。

调节器

  在该电路中,二极管电桥将交流正弦波转换为每秒发生 100 次的等效脉冲。因为 50 Hz 正弦波在 1 秒内穿越零 100 次,使用光耦合器进一步转换为 3.3V 逻辑电平。使用光耦合器有两个原因。首先是将高压直流转换为低压逻辑电平,另一个原因是将高压线与低压微控制器部分隔离。两个电阻 R1 和 R2 用于限制光耦合器 LED 电流。

  TRIAC 和驱动电路:

  TRIAC是一种双向器件,可在端子的两侧传导电流。TRIAC 的双向特性对于控制交流 (AC) 操作设备非常有用。因此,通过在 TRIAC 上使用 AC 相角控制,我们可以控制流入负载的平均电流。因此,检测过零时,如果我们延迟开启 TRIAC,就可以控制负载电流。在这里,我们检测过零并以一定的延迟打开 TRIAC 并控制流向风扇的电流。

调节器

  由于 FAN 是感性负载,RC 缓冲电路R12 和 C3 用于保护 TRIAC 不产生反电动势。电阻R6和R7用于控制TRIAC的触发电流。

  但是,TRIAC 可以是BTA16 或 BT136。两者都合适。这里我们使用的是 BT136,它的最大终端电流为 4A。BT136的栅极阈值电压也很小,也可以由数字电路驱动。

  BC847 是传导 MOC3021 和基于 TRIAC 的光电隔离器的晶体管,用于打开 TRIAC。

  蜂鸣器电路:

  蜂鸣器电路是使用 MOSFET 2N7002 控制的标准圆形蜂鸣器。

调节器

  微控制器:

  该项目使用的微控制器是广受欢迎的 ESP12。它有Wi-Fi,也很便宜。为模块的正常工作提供了所需的上拉电路。

调节器

  为物联网风扇控制器电路制造PCB

  PCB 设计有适当的交流到直流电压隔离。但是,这是用于测试目的的 PCB 的更新版。很少有组件是通过孔制成的,以弥补间隙问题,而不是 SMD 小尺寸组件。此外,Boot 和 RST 引脚部分用于连接在编程期间很有用的按钮。下面是 PCB 顶层和底层的 3D 模型视图:

调节器

  组装风扇控制器 PCB

  订购板后,几天后,它通过快递在一个标签整齐且包装完好的盒子中到达我的手中。PCB质量一如既往的好。板子的顶层和底层如下图所示:

调节器

  在确保轨道和脚印是正确的之后。我继续组装PCB。完全焊接的板如下所示:

调节器

  配置 Blynk 以控制风扇速度

  现在我们已经组装了 PCB,我们可以继续配置 Blynk 应用程序并对 ESP 进行编程。对于那些不知道 Blynk 是一款可以在 Android 和 iOS 设备上运行以使用智能手机控制任何物联网设备和电器的应用程序的人来说。首先,需要创建一个图形用户界面 (GUI) 来控制风扇。设置前,请从 Google Play 商店下载 Blynk 应用程序(iOS 用户可从 App Store 下载)。安装后,使用您的电子邮件 ID 和密码注册。

  安装成功后,打开应用程序,我们会看到一个带有“新建项目”选项的屏幕。点击它,它会弹出一个新屏幕,我们需要在其中设置项目名称、电路板和连接类型等参数。在我们的项目中,选择设备为“ESP8266”,连接类型为“Wi-Fi”,然后点击“创建”。

调节器

  项目创建成功后,您将在我们的挂号信中获得一个Authenticate ID。保存验证 ID 以供将来参考。

调节器

  现在,下一步是添加小部件来控制风扇速度和打开/关闭风扇。为此,单击 + 号并添加 Slider 小部件。

调节器

  将小部件拖到我们的项目后,现在我们必须设置其参数,这些参数用于将滑块值发送到 ESP。单击滑块,然后我们将获得一个名为滑块设置的屏幕。单击 PIN 并选择 PIN 类型为 Virtual,Pin 名称为 V0。此 Pin 图将由 BLYNK 应用程序访问。

  然后选择从 0 到 100 的滑块范围。

调节器

基于物联网的风扇速度控制器代码

使用 ESP8266进行交流风扇速度控制的完整代码可以在文档末尾找到。为了理解这个风扇控制器代码是如何工作的,在这里我们将用小片段来解释代码。首先,感谢 RobotDynOfficial 对使用 TRIAC 和过零检测的 AC 调光器的出色库支持。使用的库可以从下面的 GitHub 链接安装。 

https://github.com/RobotDynOfficial/RBDDimmer

由于我们使用了 Blynk,因此代码架构使用来自 Blynk 示例 - Virtual Pin Read

 

BLYNK_WRITE(V0)
{
  int pinValue = param.asInt(); // 将从引脚 V1 传入的值赋给一个变量
  pwm = pinValue;
  嗡嗡声通知();
  Serial.println("收到PWM值-");
  串行.println(pwm);
  序列号.println("\n");
}

 

每当在 Blynk 应用程序上更改新值或滑块并设置 PWM 输出值时,都会调用上述函数。在这些更改期间,蜂鸣器开始发出哔哔声。

 

无效循环()
{
  Blynk.run();
  map_pwm = map(pwm, 0, 100, 0, 87); //analogRead(analog_pin), min_analog, max_analog, 0%, 100%);
  调光器.setPower(map_pwm); // name.setPower(0%-100%)
}

 

  使用 87%,因为在测试期间最大功率达到 87%。

  使用 Blynk 和 ESP-12E 控制风扇速度

  准备好我的基于物联网的风扇控制器电路后,我走到我的壁扇前,追踪它的电线并连接风扇控制器设置,如下图所示。完成后,现在我可以通过手机控制我的风扇了。

调节器

调节器

  同样,您可以使用手机或笔记本电脑无线控制风扇。您还可以在 blynk 应用程序上设置计时器,以在一天中的特定时间自动打开/关闭风扇。完整的工作视频和代码可以在下面找到。

#define BLYNK_PRINT Serial
#include
#include
#include
#define outputPin 14
#define zerocross 4 // 用于带有 CHANGEABLE 输入引脚的板
#define buzz 5
//#define TRIAC 14
int pwm=0;
int map_pwm=0;
// 你应该在 Blynk App 中获得 Auth Token。
// 转到项目设置(螺母图标)。
char auth[] = "BLYNK 令牌";
// 您的 WiFi 凭据。
// 为开放网络设置密码为“”。
字符 ssid[] = "xxxx";
char pass[] = "xxxxxx";
//void ICACHE_RAM_ATTR ISRoutine();
dimmerLamp 调光器(outputPin, zerocross); //用于 ESP8266、ESP32、Arduino 的调光器的初始化端口
int outVal = 0;
无效的嗡嗡声(无效){
数字写入(嗡嗡声,高);
延迟(1000);
数字写入(嗡嗡声,低);
延迟(1000);
}
BLYNK_WRITE(V0)
{
int pinValue = param.asInt(); // 将从引脚 V1 传入的值分配给变量
pwm = pinValue;
嗡嗡声通知();
Serial.println("收到PWM值-");
串行.println(pwm);
序列号.println("\n");
}
void setup()
{
// 调试控制台
pinMode(buzz,OUTPUT);
序列号.开始(115200);
嗡嗡声通知();
Blynk.begin(auth, ssid, pass);
调光器.开始(正常模式,开);//调光器初始化:name.begin(MODE, STATE)
// void ICACHE_RAM_ATTR ISRoutine();
// 也可以指定服务器:
//blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
}
无效循环()
{
Blynk.run();
map_pwm = map(pwm, 0, 100, 0, 87); //analogRead(analog_pin), min_analog, max_analog, 100%, 0%);
调光器.setPower(map_pwm); // name.setPower(0%-100%)
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分