×

使您的台式或落地式风扇自动化

消耗积分:0 | 格式:zip | 大小:0.18 MB | 2023-02-08

刘军

分享资料个

描述

台式或落地式风扇是几乎每个家庭或办公室都会出现的电器之一。一些较新的型号可能已经具有某种远程控制功能,而较旧的型号则没有。然而,为他们中的大多数人做一个改装控制器是很容易的,同时,给他们一些(有限的)智能。

典型的摇头风扇并没有很多内置的智能。它们通常由一个电动机组成,该电动机具有三个独立的绕组,具有不同的电感(这意味着线圈中的匝数将改变产生的磁场,从而改变电动机的速度)。

这些绕组有一个公共端,三个都连接在一起,另外三个是分开的。通常,来自您的电源的火线(在我的例子中是 220 伏交流电)将连接到这个公共连接。中性线将连接到四位置机械开关的公共端,每个绕组连接到位置 2、3 和 4 之一(这导致 3 速配置,第一个开关关闭)。同样非常重要的是要注意这个机械开关是硬件互锁的,这意味着在任何给定时间只能打开一个开关……这是为了确保电流一次只能流过一个绕组。如果同时通过多个绕组供电,电机仍会工作,但不会持续很长时间……

为了使振荡风扇自动化,我们因此需要一种方法来打开和关闭单独的绕组,同时防止其他绕组同时获得电源。我选择用 SPST 继电器来做这个,作为概念证明,并计划在后期用 DPDT 继电器设计它,以实现适当的硬件互锁,除了在控制软件中实现的软件互锁(稍后会详细介绍) )

我对设备的要求如下:1) 必须使用市电供电,使用现有的风扇电源线。2) 必须允许使用现有的控制按钮对风扇进行本地操作。3) 必须能够更新固件 OTA,并具有通过 Home Assistant 或 MQTT 进行控制的 WiFi 连接4) 必须能够在后期添加对 ESP Now 协议的支持5) 风扇不得在外部有任何可见的修改

 
pYYBAGPi-o6AX9WiAAFK9bjBWqc401.jpg
三速风扇控制器PCB
 

考虑到我的所有要求,我设计了以下 PCB 来满足我的需求。因为我不需要很多 GPIO(只有 3 个输出和 3 个输入),所以我决定使用 Espressif 的 ESP8266-12E 模块(由 AITinker 制造,不受任何一家公司赞助)。该模块相对便宜,并且具有足够的闪存、RAM 以及可用的 GPIO。

 
 
 
 
poYBAGPi-pGAWCdcAAC2Xrk16uY757.png
 
1 / 2电路图 – 第 1 页
 

正如我们所见,该电路是最小的,继电器驱动器上有光隔离,一个编程接头,以及一个用于机械开关的 3 路输入。

 
pYYBAGPi-paATzfcAAGYVECNcPg501.jpg
完成的 PCB,连接到摆动风扇
 

如上图所示,接线非常简单,中性线环接到每个继电器的公共端子(我只有绿色电源额定电缆可用,稍后会用合适的白色电缆替换它以保持接线标准) . 黑色是带电的,一根线连接到电源插座,另一根连接到电机线圈绕组的公共端。淡蓝色、黄色和白色(连接到继电器的 N/O 端子)对应风扇的速度 1、2 和 3。在电路板的顶部,3 根电线连接到机械开关,第四根连接到直流接地。(请注意,任何开关上都没有交流电压。)

 
pYYBAGPjAGeAfjQ9AAE7IUO0IB4409.jpg
将 PCB 安装在摇头风扇的底座中
 

PCB 安装在风扇底部,同时注意确保直流组件附近没有交流电缆。ESP8266 芯片朝向侧面(PCB logo 面),防止干扰 WiFi 信号。机械开关安装在其原始位置,其布线远离任何 AC 传输线以防止干扰。

这里需要注意的是,PCB 的固件是在组装前上传的。在任何情况下,您都不应在设备连接到主电源时尝试串行上传。(虽然我已采取一切预防措施以确保电路的交流和直流组件彼此分离,但不要尝试在连接电源的情况下上传固件只是常识)

 
poYBAGPjAGqADv3zAAEemngeWJk592.jpg
完成的 PCB 在右上角附近显示了上传端口。
 

上传固件:可以通过将 USB 转串口适配器连接到 UPLOAD 端口并从 USB 转串口适配器提供 5v 和接地来执行固件的初始上传。按住flash键,板子复位,之后可以继续上传,也可以从串口适配器接DTR和RTS线,根据需要自动复位板子,进入flash模式。(当然,如果您的适配器支持此功能)。

ESPHome配置

下面列出了 ESPHome 的 YAML 配置:

esphome:
name: esphome-web-18df94
esp8266:
board: nodemcuv2
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-18Df94"
password: "verysecurepassword"
captive_portal:
sensor:
- platform: adc
pin: VCC
name: "ESP8266 Chip Voltage"
id: mcu_voltage
unit_of_measurement: "V"
device_class: "voltage"
accuracy_decimals: 2
update_interval: 60s

- platform: wifi_signal
name: "WiFi Signal Sensor"
id: wifi_strength
device_class: "signal_strength"
unit_of_measurement: "dBm"
update_interval: 240s
binary_sensor:
- platform: gpio
pin:
number: 12
inverted: true
name: "Fan Local Control Speed 1"
id: "fan_local_1"
icon: "mdi:fan-speed-1"
filters:
- delayed_on: 500ms
- delayed_off: 500ms

on_press:
then:
- switch.turn_on: speed1
on_release:
then:
- switch.turn_off: speed1

- platform: gpio
pin:
number: 13
inverted: true
name: "Fan Local Control Speed 2"
id: "fan_local_2"
icon: "mdi:fan-speed-2"
filters:
- delayed_on: 500ms
- delayed_off: 500ms

on_press:
then:
- switch.turn_on: speed2
on_release:
then:
- switch.turn_off: speed2

- platform: gpio
pin:
number: 14
inverted: true
name: "Fan Local Control Speed 3"
id: "fan_local_3"
icon: "mdi:fan-speed-3"
filters:
- delayed_on: 500ms
- delayed_off: 500ms

on_press:
then:
- switch.turn_on: speed3
on_release:
then:
- switch.turn_off: speed3
switch:
- platform: template
name: "Fan Off"
id: "fan_off"
icon: "mdi:fan-off"
lambda: |-
if (id(speed1).state or id(speed2).state or id(speed3).state) {
return false;
} else {
return true;
}
turn_on_action:
- switch.turn_off: speed1
- switch.turn_off: speed2
- switch.turn_off: speed3

- platform: gpio
pin: 16
interlock: &interlock_group [speed1, speed2, speed3]
interlock_wait_time: 1000ms
name: "Fan Speed 1"
icon: "mdi:fan-speed-1"
id: "speed1"
inverted: true


- platform: gpio
pin: 5
interlock: *interlock_group
interlock_wait_time: 1000ms
name: "Fan Speed 2"
icon: "mdi:fan-speed-2"
id: "speed2"
inverted: true

- platform: gpio
pin: 4
interlock: *interlock_group
interlock_wait_time: 1000ms
name: "Fan Speed 3"
icon: "mdi:fan-speed-3"
id: "speed3"
inverted: true

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

评论(0)
发评论

下载排行榜

全部0条评论

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