亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

百叶窗(或任何交流电机)控制

组件和用品

Arduino Nano R3
× 1
ControlEverything.com 用于 I2C 的 4 通道继电器控制器
× 1
固态4通道板
× 1
盲人马达
一个 Arduino 最多可以控制 4 个电机。
× 1
电容器 100 nF 630 V
每台电机的数量。
× 1
电阻 100 ohm (0.5 W min!)
不要使用精密电阻(蓝色的)!每台电机的数量。
× 1
压敏电阻 275 VAC
每台电机的数量。
× 1
二极管通用
任何信号或功率二极管都可以。每个盲人的数量。
× 3
Raspberry Pi 3 B 型
远程控制可选
× 1
nRF24 模块(通用)
远程控制可选
× 2

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE
Domoticz
可选,仅用于远程控制。任何其他自动化控制器都可以使用甚至不使用,只需触发控制台命令即可。

关于这个项目

介绍

刚买了一栋新房子,想自动化一切,从百叶窗开始。看似简单的项目结果却是一场噩梦:相对高功率的电机(150W)正在破坏我的继电器和双向可控硅,使用什么无线通信和控制器以及如何使其工作并不明显,噪音排队导致百叶窗随机激活(在半夜非常可怕)......最后我设法用非常便宜的组件解决了所有这些问题,希望我可以帮助其他人避免这些头痛和很多时间。

不喜欢编程,但喜欢焊接?无论如何阅读教程,最后你会发现一个分立电路,它的作用相同,但没有智能。

说明

在控制电机时,一个重要的问题是它们的电感,这会导致在尝试断开电路时,电流坚持流过您的断路装置,从而产生非常高的电压。如果你试图用一个小继电器在没有预防措施的情况下断开电路,它们的触点会粘在一起,如果你使用三端双向可控硅开关(固态继电器),过电压(在我的例子中我测得的峰值超过 1600V)会破坏半导体。

我通过谷歌搜索意识到,其他人对此有问题,但他们采取了简单、昂贵和庞大的方式,他们只是得到了更大的继电器,仍然需要便宜的继电器来激活更大的继电器,而触点仍然会受到影响并且可能最终失败。作为一名工程师,我不能让自己得不到最有效的解决方案。 :) 在下面的示意图中,您可以通过添加一个电阻器、一个电容器和一个压敏电阻器来解决这个大继电器的问题。

压敏电阻保护三端双向可控硅开关免受过压影响。电阻加电容形成一个RC缓冲电路,在分断换向过程中吸收能量。

[附注: 由于我在完成项目后很长时间内直接将教程写在我的脑海中,前几天仔细查看我的电路板我意识到,在实际电路中,我将电阻器和电容器放置在棕色和灰色线之间(根据每个电机的原理图颜色)而不是三端双向可控硅触点。这两种解决方案都适用于这种情况,但第二种选择的优点是缓冲器不会永久连接到电源。 ]

[PS2: SebDominguez 也用实际配置做了一个很好的模式:

]

这些开关不是使用一个引脚用于向上命令,另一个用于为每个百叶窗向下命令,而是共享一条公共线,指示百叶窗是向上还是向下。所以我们使用 5 个输入而不是 8 个。不需要过滤器,输入是软件去抖动的。

首先,Arduino 激活继电器模块以选择电机方向,经过一小段延迟后,继电器触点已经就位,它激活双向可控硅,通过廉价继电器和双向可控硅模块为电机提供 230 VAC 电压,没有问题。断开电路的过程正好相反,首先是双向可控硅,然后是继电器,因此继电器永远不会受到带电换向。

您可以使用一到四个电机,无需修改代码,如果您不使用其他电机,那么拥有其他电机的逻辑也无害,除非您显然需要其他引脚。

在家里,我们有两个故事,因此有两个电路。由于远程命令必须是唯一的,我通过在上传时注释一行来使代码对任何一个都有效。如果您只安装一个电路,则无需更改任何内容,但是如果您要构建两个电路,那么您已经免费获得了解决方案。事实上我只是骗你,我们有三个电路,但总共有 8 个百叶窗,在一个电路中,我们占据了所有四个电机,但其他四个百叶窗通过使用一个 Arduino 中的前三个输入并且只输入数字而分成两部分第二个四。复制的电路对远程命令的反应完全相同,但在没有任何连接的地方,没有任何东西可以激活。 :) 如果您使用的是 MySensors 版本的代码,那么您最多可以连接 256 个节点,每个节点有 4 个百叶窗,代码中的任何一行都不会改变,如果您住在宫殿中就足够了。

整个系统看起来像这样:

抱歉,它不是很花哨和清晰,但它是真实的安装,前一段时间制作的,不仅仅是本教程的准备电路,我无法在桌子上向您展示。如您所见,它可以装入 22 x 15 x 5.2 厘米的壁挂盒中,但非常紧凑。我的制作方法是使用热胶枪将所有东西放入一个打开的木箱中:实用、快速且简单。

如果您将 Web IDE 用于 Arduino 草图,它应该会自动找到所有需要的库。

遥控器(可选)

本教程的目的是解决电感问题,另外还有遥控功能。

提供的代码包括两种通过无线电模块 nrf24l01+ 进行远程控制的方式:使用 MySensors(推荐),或通过发送带有盲数的整数和命令 0 或 1 用于向上或向下。

在这两种情况下,我都使用 RPi 作为主机,并直接连接一个 nRF24L01+ 模块,并安装了一个控制器 (Domoticz)。

对于第一个选项,使用 MySensors,需要安装 MySensors MQTT 网关。 (https://www.mysensors.org/build/raspberry)。在我的实现中,在本地主机中将其配置为以太网。按照链接中的步骤操作,这里有我的配置参数可以帮助您(检查您是否需要相同的):

sudo ./configure --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-publish-topic-prefix=domoticz/in/MyMQTT --my-mqtt-subscribe-topic -prefix=domoticz/out/MyMQTT --my-mqtt-client-id=mygateway1 --my-transport=rf24 --my-port=1883 --my-rf24-irq-pin=15

一旦完成它在 Domoticz 中的集成是非常简单的:添加 HW MySensors MQTT 网关,为节点供电,并在新硬件的设置中直接找到它。

对于第二个选项,直接使用自定义应用程序,而不是 MySensors,虚拟交换机执行控制台命令:

 ./remote -m XY  

(X:盲目#,Y:行动)。

在 Arduino 脚本的标题中,您可以找到更多详细信息。

这个远程命令的代码在 http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/ 忘记了 Node.js 部分和 Arduino 草图,我们不需要他们和那个草图实际上有一个错误。我们从这里需要的只是“灯开关应用程序”部分。硬件部分也可用于无线电连接。顺便说一下,始终将 10 uF 电容器放在无线电模块电源引脚上。如果有空间,还可以考虑购买带有外部天线的无线电模块。在室内,PCB 天线的范围可能非常有限(小于 10 m),特别是如果像本项目那样将模块封闭在墙壁中。

请记住,此代码必须稍作修改,将无线电参数与 Arduino 的参数相匹配,并且使代码仅发送命令一次,而不是在未收到响应时最多重试 5 次,否则会丢失Arduino 反馈你会看到你的百叶窗表演-停止-表演-停止-表演。

Raspberry 的最终代码如下所示:

#include #include #include #include #include #include #include using namespace std;//RF24 radio("/dev/spidev0.0",8000000, 25); // RF24无线电(RPI_V2_GPIO_P1_15,RPI_V2_GPIO_P1_24,BCM2835_SPI_SPEED_8MHZ); RF24无线电(RPI_V2_GPIO_P1_22,RPI_V2_GPIO_P1_24,BCM2835_SPI_SPEED_8MHZ); // const int的role_pin =7; const的uint64_t中管[2] ={0xF0F0F0F0E1LL,0xF0F0F0F0D2LL}; //常量uint8_t管[] [6] ={"1Node","2Node"};// hack 以避免 SEG FAULT,在 RF24 github 上发布 #46 https://github.com/TMRh20/RF24.gitunsigned long got_message;void setup(void){ //准备无线电模块 printf("\nPreparing interface\n");收音机。开始(); radio.setRetries(15, 15); radio.setChannel(0x70); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_MAX); radio.printDetails(); radio.openWritingPipe(pipes[0]); radio.openReadingPipe(1,pipes[1]); // radio.startListening();}bool sendMessage(int action){ //该函数向arduino发送一条消息,即'action'并等待应答 //如果收到ACK包则返回true //停止收听广播.stopListening();无符号长消息 =动作; printf("正在发送 %lu...", message); //发送消息 bool ok =radio.write( &message, sizeof(unsigned long) ); if (!ok){ printf("失败...\n\r"); }else{ printf("ok!\n\r"); } //监听ACK radio.startListening(); //让我们花点时间听 unsigned long started_waiting_at =millis();布尔超时=假; while ( ! radio.available() &&! timeout ) { //printf("%d", !radio.available()); if (millis() - started_waiting_at> 1000 ){ timeout =true; } } if( timeout ){ //如果我们等待太久传输失败 printf("Puta mierda, no me responde nadie...\n\r");返回假; }else{ //如果及时收到消息,我们读取并打印radio.read( &got_message, sizeof(unsigned long) ); printf("是的,我回复了> %lu.\n\r",got_message);返回真; }} int main( int argc, char ** argv){ 字符选择;设置();布尔切换=假;整数计数器 =0; //定义选项 while((choice =getopt(argc, argv, "m:")) !=-1){ if (choice =='m'){ printf("\n 与我的 NRF24l01+ 朋友交谈....\n"); while(switched ==false &&counter <1){ //发送消息的尝试次数 Switched =sendMessage(atoi(optarg));计数器++;睡眠(1); } }else{ // 一点帮助: printf("\n\r是时候做出一些选择了...\n"); printf("\n\rTIP:使用 -m idAction 发送消息。"); printf("\n\r示例(ID 编号 12,操作编号 1):"); printf("\nsudo ./remote -m 121\n"); } //如果一切顺利则返回0,否则返回2 if (counter <5) return 0;否则返回2; }}  

由于需要编译等等,我为您提供了方便,并将您需要的所有内容(仅适用于 Raspberry 端,Arduino 草图如下)放在一个 zip 文件中,其中包含修改后的源代码、库和编译后的代码树莓派 3:

https://goo.gl/ocCwk3

如果您将其解压缩到您的 RPi 中,您应该能够运行远程命令。

结果

在这里你可以看到我是如何实现一切的。

墙上的三对开关控制三个百叶窗。墙上的平板电脑显示了带有虚拟开关的 Domoticz 界面。平板电脑后面是 Raspberry,其中安装了控制器等。 Arduino不在这里,它靠近之前图片中的百叶窗; RPi 和 Arduino 通过无线电模块无线连接。

在这里,您还可以看到 Google Home,它通过将 IFTTT 与 Webhooks 服务和 Domoticz 结合使用,帮助我实现任何语音命令,例如“嘿谷歌,闭上眼睛”。如果你已经达到了这一点,那么你肯定可以让语音命令正常工作。

在这里,您可以快速制作出显示结果的视频。

如果本教程对您有帮助,请告诉我!

最好的问候,

戈美新

附言作为额外的好奇心,或者因为你真的讨厌计算机、编程或其他任何东西,首先我试图在没有任何智能的情况下离散地制作解决方案。结果如下:

我什至构建了它,电路可以完成这项工作,但我在熟悉 Arduino 平台之前就已经做到了,Arduino 平台更灵活且完全可靠,因此我不打算解释它。如果它对你有任何用处,那就太好了,但这不是本教程的范围,我不鼓励使用它。

代码

Arduino 草图

示意图

Arduino 控制 4 个百叶窗电机

制造工艺

  1. 许可和互锁电路
  2. 电机控制电路
  3. 功率计算
  4. 推土机
  5. 语音控制的算法和硬件功率提升
  6. 软件套件简化了电机控制设计
  7. 英飞凌推出适用于汽车应用的 TLE985x 嵌入式电源系列
  8. 宽带隙器件增强电机控制设计
  9. 质量控制是电机可靠性的第一步
  10. 电气控制面板的基础知识
  11. 电力和暖通空调/气候控制
  12. 如何控制液压马达的速度?