最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

多通道无线调光

时间:2017-05-17 09:57来源:未知 作者:admin 点击:
= wl_connected) { connecttowifi(); websocketconnect(); mdnsconnect(); } lastconnectivitychecktime = millis(); } 别的 { WebSocket。loop(); / yield(); / OTA 如果(millis() - lasttimehost 10){ H
多通道无线调光

节约能源很漂亮!

利用光在你的起居室的调光器,它可能完全改变情绪气氛在下降的帽子里。
物联网将扰乱我们的生活和工作方式。智能家居充满连接产品装载着使我们的生活更便利的可能性,更方便的,和更多舒适的

与Wi-Fi连接在调光控制器,上述好处就会反映在这个模块。然而,这实际上有许多不明显但同样有利的好处,如<strong>降低能源消耗</strong>和<strong>提高寿命</strong>更长的灯泡变暗,较小的能源使用和更长的持续。

这个项目的目的是

●控制通过一个可调光照明电器强度后沿调光器

●提供用户能够<strong>控制灯</strong><strong>的独立</strong>和<strong>无线</strong>的Wi-Fi网络和互联网!

步骤1:规格

  • 2路<strong>调光模块</strong>用于<strong>室内照明</strong>应用(#渠道可以很容易地扩展,根据需要)
  • 可以方便的安装在<strong>后缘和前缘</strong>的配置与一些小的变化在软件,<strong>硬件是一样的</strong>!
  • <strong>评级</strong>:200 W /通道
  • <strong>没有最小负载</strong>在任何渠道(真正的3线调光器!!)
  • 通过WiFi<strong>无线控制</strong>(采用流行的<strong>nodemcu</strong>模块)
  • <strong>网络接口</strong>控制调光器的设置
  • 可以从<strong>任何设备</strong>和浏览器的支持(Chrome,Firefox)
  • 支持<strong>OTA</strong>(空中编程)软件更新

好的,是不是你也可以为自己做一个!!,我花了几个月的了解,使调光模块。

你会发现所有的源文件,一步一步的指示,我在制作这个项目在下面编译。

我希望你能学到很多东西,享受你的前进!

步骤2:了解调光器

了解Light Dimmers

有两类传统交流调光器(也被称为“切相调光器”)

  • 领先的Edge Dimmers
  • 尾随Edge Dimmers

这些不同的亮度的照明电器通过不同的<strong>RMS电压</strong>施加到负载。

本设计采用一个<strong>尾随边缘调光</strong>

他们提供了一个“<strong>软启动</strong>”,增加电压灯相对缓慢。

与白炽灯,这几乎消除了“热冲击”,短暂的开关在哪里灯吸引约10倍的正常工作电流。
包括增加了软启动功能,灯的寿命,但它并不能帮助节能灯或LED灯多。

后缘调光器通常使用一个MOSFET,这些几乎不需要控制电流和耐用可靠。

另一种选择是使用IGBT(绝缘栅双极型晶体管),它的优势相结合的MOSFET和双极型晶体管。这些通常是更昂贵的比MOSFET。

步骤3:系统框图

系统框图
 

步骤4:成分

组件
  • ESP8266(nodemcu)- 1
  • <strong>4N35</strong> - 3(Optocoupler IC)

  • 1N4148- 4

  • <strong>hlk-pm01</strong> - 1(电源为5V直流转换模块)

  • <strong>效应管IRF740</strong> - 4(n)
  • 熔断器(2个),sh22型保险丝座- 1

  • R 33k½W- 3

  • <strong>R 10k⅛W</strong> - 2

  • <strong>500⅛W</strong> - 1
  • <strong>齐纳二极管(12 V</strong>)- 2
  • <strong>6引脚IC持有者</strong>- 3(为4N35)
  • <strong>女头引脚</strong>(用于ESP8266)
  • 白炽灯泡
  • 塑料开关盒
 
  • 1n4148.pdf1n4148.pdf
    下载
  • irf740.pdfirf740.pdf
    下载

步骤5:原理图(后缘调光)

示意图(后缘调光)

(参考PDF版本更好的分辨率)

每一小节的示意图说明了进一步。

 
  • trailing-edge-dimmer_schematic.pdftrailing-edge-dimmer_schematic.pdf
    下载

步骤6:过零检测单元

过零检测单元
  • 二极管D3、D4、D5、D6组成桥式整流。
  • U2是光耦(4N35),和LED是由R6和R7,然后从整流桥。
  • 中断信号提供给经销nodemcu D6。
  • R8是一个上拉电阻。
  • 过零检测器,给出一个负脉冲时,电源电压接近于零。
  • 这是用于同步单片机电源,真是电路的心脏。
  • 对33k电阻串联代替66k电阻分1W功耗总。

步骤7:12V直流电源

12V直流电源

最小的场效应管IRF740开关损耗,从单片机的栅极控制信号的缩放到12V。#p#分页标题#e#

笔记每个通道需要它自己的直流电源。

  • 快速开关二极管ba159是用来纠正交流输入。
  • D2为12V稳压二极管

步骤8:MOSFET驱动器

驱动器
  • 交流开关是由一系列配置两个N-MOSFET形成
  • 4N35 IC提供必要的隔离电源
  • 由单片机控制的信号被馈送到光电耦合器U1,U3

单片机的直流电源是由交流220V 5V直流3w PCB安装塑料封闭隔离开关降压电源模块(HLK - PM01)紧凑的外形

步骤9:把所有的东西放在一起

把所有的东西放在一起

经了解,每个亚单位,整个电路的功能说明。

步骤10:规划ESP8266!

编程ESP8266!!

Arduino IDE用于nodemcu ESP8266模块程序。

  • 下载最新版本的Arduino IDEhttps://www.arduino.cc/en/main/software
  • 使用ESP8266 Arduino IDE按照下面给出的步骤,
    • 开始Arduino和打开选项窗口。

    • 进入<strong>“http://arduino.esp8266.com/staging/package_esp8266com_index.json</strong>”到额外的董事经理URL字段。

    • 开董事会经理从工具>板菜单和安装ESP8266平台

    • 选择nodemcu 1(ESP 12e模块)从工具>板菜单板安装后

    • 由Markus Sattler素描>安装WebSockets图书馆包括图书馆>管理图书馆
  • 请参阅下面的链接开始Arduino IDE ESP8266
    https://github.com/esp8266/arduino

  • 从提供的链接下载源代码,https://github.com/agkonale/multichannel-wireless-dimmer/tree/master/arduino

  • 源包含以下文件

    • trailing_edge_dimmer_v5.ino
    • 调光器,H
    • hw_timer C。
    • hw_timer。H
  • 使用长延迟非常气馁而使用ESP8266作为许多代码需要运行在芯片上除了素描当WiFi连接可能会导致频繁的WDT复位。因此我们使用hw_timers拯救自己从这困境。

  • 这个hw_timer。C、H hw_timer。文件提供必要的功能,使用硬件定时器在ESP8266。
    • <strong>hw_timer_init</strong>(frc1_timer_source_type source_type,U8 REQ)函数初始化定时器ESP8266,如果请求的说法是0定时器将开始在非汽车荷载模式还将启动自动加载模式。
    • <strong>hw_timer_set_func</strong>(void(* user_hw_timer_cb_set)(void))函数集的ISR处理定时器中断。

    • <strong>hw_timer_arm</strong>(U32 Val)启动定时器,以适当的时间间隔。

  • 调光器,H

包括必要的库文件。

#包括<< esp8266wifi。H > 
 
 #包括<< wificlient。H > 
 
 #包括<< esp8266webserver。H > 
 
 #包括<< esp8266mdns。H > 
 
 #包括<< esp8266httpupdateserver。H > 
 
 #包括<< Arduino。H > 
 
 #包括<< websocketsserver。H > 
 
 #包括<<哈希。”<BR>

接下来我们定义的<strong>调光模块性能</strong>。

#定义num_channels 2 
 #定义zero_crossing_int_pin 12 
 #定义三角4 / /(t_zero_crossing - t_interrupt)/ step_time 
 #定义step_time 78 / 128 lvls(美国)(65为50 Hz)
 
 / / 128级亮度控制
 int dimming_lvl [ num_channels ] = { 0 };//(0-127)
 
 int drive_pin [ num_channels ] = {个};
 int状态[ num_channels ] = { 0 };
 
 / WiFi接入点设置
字符串SSID =“-----------”;
字符串密码=“-----------”;
 
挥发性布尔都处理了[ num_channels ] = { 0 };

<strong>num_channels</strong>可以按你的需要增加,但你会在需要的地方进行必要的重复。(这样的设计可扩展到2多个频道!!)

<strong>step_time</strong>定义时间间隔的定时器中断服务程序反复调用。它的计算公式如下:

step_time:1 /(2 *频率* numlvls)×10 ^ 6
默认

频率为50赫兹numlvls = 128

SSID:网络SSID
密码:网络密码

<strong>drive_pin</strong>:阵列组成的针数的nodemcu(请使用正确的密码)<strong>zero_crossing_int_pin</strong>:中断引脚

<strong>三角洲</strong>:可能有一些固定的失配之间实际的零和中断,这是除去这个常数。

接下来我们添加一个连接ESP8266模块的WiFi接入点。

国际connecttowifi() 
 { 
 WiFi。开始(SSID。c_str(),密码。c_str());
 
 int i = 0;
而(!= wl_connected)
 { 
如果(我= = 30)
 { 
返回1;
 } 
延迟(1000);
 debug_print(“。”);
我+ +;
 } 
 debug_println(“”);
 debug_println(“连接”);
 debug_println(SSID);
 debug_println(“IP地址”);
 debug_println

现在开始的WebSocket连接<strong>websocketconnect()</strong>函数定义。

/ / WebSocket连接
 
无效websocketconnect() 
 { 
 WebSocket。begin();
 WebSocket。事件(websocketevent);

<strong>zero_crossing_int()</strong>是ISR连接到zero_crossing_int_pin检测过零点。

无效zero_crossing_int() 
 
 { 
如果(numactivechannels > 0){ 
 
 numhandled = 0;
 
为(int i = 0;i < num_channels,我+ +)
 { 
都处理了[我] = 0;
 
如果(状态[我] = = 1)
 { 
 digitalwrite(drive_pin [我],高);
 
 
 } }

<strong>dimtimerisr()</strong>是定时器中断服务程序所服务的每一step_time useconds。我们保持计数器每个活动通道和比较/更新他们的每一个周期。

无效dimtimerisr() 
 { 
如果(zero_cross = = 1)
 { 
为(int i = 0;i < num_channels;i++)
 { 
如果(状态[我] = = 1)
 { 
如果(lvl_counter [我] > dimming_lvl [我] +三角)
 { 
 digitalwrite(drive_pin [我],低);
 lvl_counter [我] = 0;
都处理了[我] = 1;
 
 numhandled + +;
如果(numhandled = = numactivechannels)
 { 
 zero_cross = 0;} } 
 
 
 else if(都处理了[我] = = 0)
 { 
 lvl_counter [我]

<strong>管理状态</strong>(开/关)的通道下面的函数定义。

无效update_state(int on_off,int channel_number)
 { 
如果(国家[ channel_number ] = = 0和on_off = = 1)
 { 
 numactivechannels + +;
 } 
 else if(状态[ channel_number ] = = 1和on_off = = 0)
 { 
 numactivechannels --;
 } 
 [ channel_number状态

<strong>websocketevent()</strong>功能开发的通信协议之间的ESP8266和客户。

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) 
{
  switch (type) {
    case WStype_DISCONNECTED:
      break;
    case WStype_CONNECTED:
      {
        IPAddress ip = webSocket.remoteIP(num);
        lastChangeTime = millis();
        isSynced = 0;
        DEBUG_PRINTLN(ip);
      }
      break;
      
    case WStype_TEXT:
      {
        String text = String((char *) &payload[0]);
        lastChangeTime = millis();
        isSynced = 0;
              
        if(text.startsWith("a"))
        {
          String aVal=(text.substring(text.indexOf("a")+1,text.length())); 
          int Lvl_0 = aVal.toInt();
          Dimming_Lvl[0] = Lvl_0;
          DEBUG_PRINTLN(Lvl_0);
        }
  
        if(text.startsWith("b"))
        {
          String bVal=(text.substring(text.indexOf("b")+1,text.length())); 
          int Lvl_1 = bVal.toInt();
          Dimming_Lvl[1] = Lvl_1;
          DEBUG_PRINTLN(Lvl_1);
        }

	if(text=="ON_0")
        {
          Update_State(1,0);
     debug_println(“通道0!!”);} 
 
 
如果(文= =“off_0”)
 { 
 update_state(0,0);
 digitalwrite(drive_pin [ 0 ],
 debug_println(低)!!”);} 
 
 
如果(文= =“on_1”)
 { 
 update_state(1,1);
 debug_println(”!!”);} 
 
 
如果(文= =“off_1”)
 { 
 update_state(0,1);
 digitalwrite(drive_pin [ 1 ],
 debug_println(低)!!”);} } // 
 
 
 WebSocket。sendtxt(num,有效载荷长度);
 / WebSocket。broadcasttxt(有效载荷长度);
打破;
 
案例wstype_bin:
 hexdump都(载荷、长度);
 / WebSocket。sendbin(num,有效载荷长度

timer_init()功能

icache_flash_attr timer_init虚空(void)
 { 
 / frc1_source / nmi_source 
 hw_timer_init(frc1_source,1);
 hw_timer_set_func(dimtimerisr);
 hw_timer_arm(step_time
  • trailing_edge_dimmer_v5.ino文件
#包括“hw_timer。H”
 
 #包括“暗淡。”
 
无效setup() 
 { 
系列。开始(115200);
 pinmode(zero_crossing_int_pin,输入);
 
为(int i = 0;i < num_channels,我+ +)
 { 
 pinmode(drive_pin [我],输出);<BR> digitalwrite(drive_pin [我],低);
 } 
 connecttowifi();
 websocketconnect();
 mdnsconnect();
 httpupdateconnect();
 
 nointerrupts();
 timer_init();
 attachinterrupt(zero_crossing_int_pin,zero_crossing_int,上升);
 interrupts();
 } 
 
无效loop() 
 { 
如果!#p#分页标题#e#= wl_connected)
 { 
 connecttowifi();
 websocketconnect();
 mdnsconnect();
 } 
 lastconnectivitychecktime = millis();
 } 
 
别的
 { 
 WebSocket。loop();
 / yield();
 
 / OTA 
如果(millis() - lasttimehost > 10){ 
 
 HttpServer。handleclient();
 lasttimehost = millis();
 } 
 
 /更新连接的客户端
 currentchangetime = millis();
如果(currentchangetime - lastchangetime > 300和issynced = = 0)
 { 
字符串websocketstatusmessage =“”+字符串(dimming_lvl [ 0 ])+“B”+字符串(dimming_lvl [ 1 ])+“X”+字符串(国家[ 0 ])+“,”+字符串(国家[ 1 ]);
 WebSocket。broadcasttxt(websocketstatusmessage);//告诉所有连接的当前客户

笔记

OTA更新可以通过访问IP /更新的浏览器,编译后的二进制文件进行上传。(优秀作品numlvls = 64)

消除闪烁和WDT崩溃(如许多代码需要运行在除了素描ESP8266当WiFi连接)是一个重大的问题在处理ESP8266。


管理延迟的独立的渠道,确保多个负载正确触发位置可以通过排序的延迟以及尝试(如果你成功了,这个方法我没有得到合理的结果,那就请让我知道)

自动频率检测可以增加减少闪烁的电力线特性的变化。

步骤11:Web应用程序设计

Web应用程序设计
  • Web应用程序源码是一个简单的HTML文件并使用<strong>WebSockets</strong>处理客户。
  • 目前需要输入接入点的IP地址开始(这是保存在设备自动供将来使用)
  • 网络SSID和密码被硬编码到系统(你需要修改代码来动态改变网络)
  • Web应用程序的控制信道状态(亮度、开/关)通过滑块,拨动开关。
  • 可以部署在任何设备访问像Chrome、Firefox浏览器和Wi-Fi连接。(<strong>注</strong>:滑块缓慢的Android设备,可能需要一些用户界面的改进)
  • 实时显示通道状态。
  • 消除了单个远程麻烦任何数量的用户可以直接控制的设置,通过智能手机/笔记本电脑/平板电脑。

源代码

以下链接提供了一个很好的发现使用WebSockets与ESP8266

http://www.whatimade.today/esp8266-on-websockets-mdns-ota-and-leds/

步骤12:PCB设计,有趣的部分!

PCB设计,有趣的部分!!
  • 遵循这些指南设置和基本的了解鹰CAD软件:

安装和设置

利用鹰示意图

用雕板布局

  • PCB是鹰CAD设计(7.2.0)
  • 鹰的文件已经在这一步中提供。

 

笔记

请把组件(特别是二极管,4N35等极性敏感元件)在正确的方向而焊接。你可能想把丝网(如果可能的话)为同一。

 
  • bottom_layer.psbottom_layer.ps
    下载
  • multi_channel_dimmer.brdmulti_channel_dimmer.brd
    下载
  • multi_channel_dimmer.schmulti_channel_dimmer.sch
    下载
  • top_layer.pstop_layer.ps
    下载

步骤13:谨慎!

注意安全!

现在,PCB的准备是<strong>极其重要的</strong>采取以下措施之前测试模块的第一次(不被淹没,有耐心!!!)

  • 添加2——200W灯泡与测试电路系列(电源模块的输入端之间)如图所示。
  • 用塑料包裹覆盖PCB。
  • 请用安装螺钉的PCB。
  • 遮住你的眼睛与眼镜防止任何意外损坏。

现在你准备好测试的设计安全,永远记住<strong>安全第一</strong>,尤其是新手..

(从今以后,你可以将串联灯泡和测试PCB直接从电源供应)

如果做的好你就成功了一个调光模块,恭喜!!!

其他检查焊接工作再次用数字万用表。

步骤14:最终产品!

最终产品!!

完成调光模块可用于控制你的房间的气氛很方便。

我添加了一些视频演示/解释原型和图像显示它的安装在我的家里工作。

现在是时候让你的!!!

如果你做一些创造性的工作,不要让我知道。

步骤15:模拟你的设计(如果你想提高设计和验证)

模拟你的设计(如果你想提高设计和验证)
  • LTspice十七

LTspice是一种高性能的SPICE仿真器,原理图和波形查看器,更重要的是它是免费的!

下载链接

LTspice教程

(添加第三方模型-效应管IRF740,白炽灯等)

<u>LTspice仿真文件</u>(一些模型文件,随着仿真文件使用了此步骤)


(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片