房屋中的最佳温度或如何在后室内无线安装恒温器


对于许多人来说,每周恒温器等设备可帮助确保房屋达到最佳室温并节省用于取暖的能源,这并不是秘密。 为使设备正确操作,通常将其放置在温度最低的最远的房间中。 但是,大多数恒温器都需要与锅炉进行有线连接以进行控制,而且几乎不可能总是铺设这些电线。 此问题的解决方案将在本文中讨论。 任何有兴趣要猫的人...

我不得不面对类似的任务。 我的房屋结构相当狭长,恒温器安装正确,我需要在已经完成维修的情况下将50m以上的电缆穿过房间,替代方法是铺设在立面上,但我立即将其丢弃。 此外,从街上到锅炉的电缆连接也很成问题,我不想用另一根电线破坏立面的视野,否则就没有足够的余地了。 锅炉本身安装在厨房中,将恒温器放在水龙头旁边是个坏主意。 结果,我得出的结论是,恒温器仍必须移至较远的房间,并且信号应通过空中传输。 问题的陈述照常开始了我的下一个工艺的开发过程。 所以让我们开始吧...

传统知识


定义设备解决问题​​的要求。
  • 设备的设计应小型化,并以白色或黑色的美感外壳放置。
  • 接收器和发射器模块必须由两节AA电池供电。
  • 一组电池中模块的寿命至少应为一年。
  • 必须使用标准接口连接恒温器和燃气锅炉,而无需进行任何设计更改。
  • 设备必须以当地供应商的价格合理的硬件组装。


硬体


当我们确定了基本要求后,让我们继续进行设计。 让我们从硬件开始。
根据技术规范,基本元件的基本要求将是:在1.8至3伏的电压范围内工作的能力。 以及切换到睡眠模式或在不需要时关闭外围设备的能力。 我决定从选择收发器开始我的选择之路。 我以MX-FS-03V和MX-05V模块的形式考虑了最简单的解决方案,价格当然非常吸引人,但是评论的质量太差了,通讯范围也不那么热。 在我的情况下,有必要通过4面墙传输信号。 此外,他最初打算对派送进行确认,因此需要双向连接,这需要两套连接。 还考虑了LoRa模块和各种HC系列模块。 该范围仍然仅限于本地销售。 因此,在考虑了所有可用选项之后,我决定选择现成的SI4432模块。 在性价比方面,我认为它们是最好的。
该模块具有广泛的技术能力,并且通过正确选择设置也非常经济。 控制输出功率的能力也非常有用,因为 您可以选择最佳的电池,从而减少电池电量消耗。 下表是文档中的规格表。


让我们从表中更详细地考虑各种模式下的能耗指标。 稍后我们将需要这些数据来计算设备的电池寿命。

在我们的情况下,使用休眠模式已经可以接受,更不用说通过关机功能完全关机了。
最初,我应该将ATMega 8用作中央处理器,但是在更详细地研究了文档之后,我意识到它并没有落在我的电源电压范围内。 结果,我选择了ATMega 328P, 她完全满足了我的所有要求。 展望未来,我会说我为她找到了现成的引导程序的事实,但后来更多,这也对她有利。
从功耗和内核时钟方面更详细地考虑控制器。
让我们先处理时间。 因为 我们的工作电压范围高达3伏,那么石英谐振器的选择也受到限制,下图说明了这一点


正如我们在8 MHz下看到的那样,我们无法获得稳定的运行,因此,我们将在4 MHz下使用石英。
现在让我们看看各种操作模式下的功耗。 这是文档中描述功耗特性的表格。


因此,如果您将控制器转换为掉电模式,则微控制器本身的功耗当然会下降至44 uA(有一定保留)。
除了已选择的元素外,我们还将添加一个工作电流为1 mA的红色LED。
这样就完成了接收器和发送器的通用组件。
考虑接收器的其他组件。
传统室内温控器的输出是具有良好开关能力(250 V 5 A)的继电器触点,因此控制什么都没有关系,因此,根据参考条款,我们的接收器应具有相同的继电器输出。 但是如何确保导通模式下继电器的低功耗,因为即使最小的继电器的线圈也要消耗数十毫安的电流,并且工厂恒温器只能用一组普通电池工作至少两个加热季节而不会夸张。 我考虑了几天的任务,突然间,在修理它突然出现在我身上的其中一个设备的过程中,只有一个双稳态继电器。 以及为什么在维修期间,但是因为它们在要维修的设备中使用。 这种类型的继电器能够无限长地保持其状态,而不会消耗能量。 为了使继电器改变其状态,在两个绕组继电器的情况下,向必要的线圈施加一个脉冲就足够了,而在一个绕组的继电器的情况下,只需给相反极性的脉冲施加一个就足够了。 因此,我们决定了继电器的类型,但是如何处理特定的模型? 在Internet上进行了一些搜索之后,我得出的结论是,对于我来说,获得低压继电器将是一个问题,我不得不住在24V继电器Takamisawa ALD24W-K上。 但是这种解决方案提出了一个新问题-从哪里获得24 V?
很快就找到了答案,也许这不是最正确的,但仍然如此。 我决定安装一个升压转换器并将电压提高到20 V,这足以实现可靠的继电器开关。 该转换器来自基于MT3608的相当通用的模块。 这是一个经过反复测试的有效解决方案,其中包括电动螺丝刀的设计(您可以在Habré上阅读有关此内容的信息)。 EN输出使您可以控制转换器的操作,从而大大降低了功耗。 实际上,这是文档中的数据。


收集了所有收到的信息后,我绘制了两种设备的示意图:
发射器

接收者


完成项目的硬件后,让我们继续进行算法及其软件实现。

演算法


让我们开始为我们的设备开发一个通用的工作概念和算法。 下图显示了该过程中涉及的所有设备的一般顺序图。


如您所见,算法并不复杂,我将做一个叙述性的介绍(好吧,我懒得画流程图,对不起。) 让我们从发射机开始,因为 从算法的角度来看,这是最简单的。 发送器微控制器执行以下顺序:
-检查电池的充电状态,如果电量低,则通过内置LED指示放电。
-查询输入状态。
-通过无线传输此状态。
-使发射器进入睡眠模式并入睡1分钟。
-该循环从头开始重复。

有了接收器,事情就有点复杂了。 微控制器根据以下算法工作:
-检查电池的充电状态,如果电量低,则通过内置LED指示放电。
-我们正在等待来自发送器的数据包,如果在2分钟内仍未收到信号,我们将入睡59秒钟,此后该周期从头开始。
-如果数据包到达,我们将获得新的中继状态。
-如果继电器的新状态与先前保存的状态不同,则打开升压转换器并将继电器切换到所需状态。
-入睡59秒
-首先重复循环
因此,当您第一次打开接收器时,接收器会等待来自发送器的信号,接收到信号后,它将改变继电器的状态,并比发送器少1秒钟进入睡眠状态。 结果,到新的发送时,接收器已经在运行,并在等待新的发送,即 好像是由发射机同步的。 结果,可以很好地节省能量消耗。 如果未接收到来自发射器的信号,则我们最多等待2分钟,选择这样的间隔以确保无论发射器打开时间如何都捕获到信号。 但这是非常不经济的,并且仅用于同步设备。

续航时间


当算法明确后,让我们尝试计算电池寿命。
让我们稍微谈谈从一组电池计算传感器的工作时间时获得准确数字所必需的理论。
因此,首先,我们将了解何时以及在什么方面花费精力。
请更详细地考虑发送过程。
要传输中继的状态,我们需要形成一个数据包并通过空中发送。 通常,此类软件包的结构如下:


我使用了默认的变送器参数,即 FSK,无曼彻斯特,Rb = 2.4kbs,Fd = 36kHz。 数据包中传输的数据量为3个字节。 表中的前导码大小为40位:


为了避免深入探讨模块配置和库操作的复杂性,我们将接受其余参数作为最大允许值。 结果,我们得到的总数据包大小为5个字节+ 4个字节+ 4个字节+ 1个字节+ 3个字节+ 2个字节= 19个字节,即 152位。 以2400 bps的速度传输时间大约为64毫秒。
我们在本文开头查看模块的能耗表,并从中获取输出功率为13 dBm时传输期间的电流值。 因此,在发送数据时,模块将花费30 mA。
在接收模式下,基于同一表,模块将静态消耗18.5 mA。
我仍然无法将模块转换为“关机”模式,由于某种原因,我无法摆脱昏迷,因此我将自己限制在“睡眠”模式,该模式消耗的模块电流为1 uA。
另外,在接收和发送数据包时,我将通过1kΩ电阻连接的红色LED点亮至3.3伏,消耗约1 mA电流。
处于唤醒模式的微控制器消耗2.4 mA电流,而处于休眠模式且WDT处于-44 uA。 数据从上表获得。
当恒温器通过上拉电阻器接地时,接收器还会有寄生电流泄漏(请参见发送器图),因此有3.3 V / 10 kOhm = 33 uA的电流通过接收器。 在我看来,这是一个很大的数目,因此在电路中,我将电阻值更改为100 kOhm,但在烙铁中,电阻值仍为10 kOhm,因此我们将其保持原样。
接收者有更多的消费者。 首先,它是一个20伏升压转换器。 在睡眠模式下,它消耗1 uA。 在空闲操作中,功耗为2.2 mA,在程序中,我等待100 ms启动转换器。 继电器线圈作为我们的负载,其特性如下所示:


因此,事实证明,线圈由20伏特供电时,将消耗20 V / 1920欧姆= 11 mA。 现在,我们转向负载对效率与电流消耗的依赖关系图,以评估带有连接的继电器线圈的转换器的总消耗。


如您所见,在这种消耗的情况下,该图并不反映效率,而是假设它也线性下降,在最坏的情况下,效率大约为85%。 结果,电流消耗将为11 mA / 0.85 = 13 mA。 值得认识的是,实际上,转换器启动时的峰值电流将至少为1A,操作和启动过程很复杂,而且我不是能够正确声明它们的人,因此我会错过它们并稍微简化一下过程。
开关继电器产生的脉冲时间为20 ms。
现在我们已经弄清楚了谁消耗了能量以及消耗了多少能量,我们将计算AA电池的理论寿命。 同样,分别考虑接收器和发射器。
让我们一如既往地从发射机开始。 让我们以上面给出的工作算法为基础。 控制器的唤醒时间将比传输时间稍长,并且考虑到设置模块,轮询输入和测量电池电压的成本为70毫秒,然后控制器将进入睡眠模式一分钟。 因此,在一个操作周期中,控制器将消耗0.07 s *(30 mA变送器+ 1 mA LED + 2.4 mA MK)+ 60 s *(44 uA MK + 1 uA变送器+ 33 uA输入电阻)= 2.338 mA * s + 4.68 mA * s = 7.018 mA * s 将获得的值除以60.07 s,我们获得一秒的平均电流值-0.117 mA。 一个AA型电池的平均容量为2800 mA * h(串联时,如果突然有人不知道,电池的总容量不会增加)-这是2800 * 3600 = 10080000 mA * s。 结果,一组电池的变送器理论工作时间为10080000 mA * s / 0.117 mA / 3600 s / 24 h = 997天。

现在关于接收器。 我们还将以上述操作算法为基础,但需要注意的是,我们几乎同时打开了接收器和发送器,因此接收器立即与发送器同步。
为此,最大的控制器唤醒时间将是数据包等待时间的总和(接收也会进入其中,因为只有在完全接收到数据包之后才会产生模块的中断),将其从模块中删除,启动转换器并设置新的继电器状态,并进行测量电池电压。 汇总所有数据后,我们得到-1.126 s,然后控制器将进入睡眠模式59秒钟。 但是因为 由于工作周期比接收器复杂,因此计算将包含更多状态。 对于一个操作周期,控制器将消耗1.006 s *(18.5 mA接收器+ 2.4 mA MK)+ 0.1 *(0.1 s *(18.5 mA接收器+ 1 mA LED + 2.4 mA MK + XX上的2.2 mA转换器)+ 0.02 s *(18.5 mA接收器+ 1 mA LED + 2.4 mA MK + 13 mA转换器))+ 59 s *(44 uA MK + 1 uA接收器+ 1 uA转换器)= 21.0254 mA + 0.1 *(2.41 mA + 0.698 mA)+ 2.714 mA = 24.0502 mA *秒 系数0.1反映了这样一个事实,即在10个周期中只有一个周期我们会切换继电器。 将获得的值除以60.126 s,我们获得一秒的平均电流值-0.4 mA。 我们将计算电池寿命。 结果,假设我们每10分钟更改一次继电器的状态,则用一组电池接收器的理论工作时间为10080000 mA * s / 0.4 mA / 3600 s / 24 h = 291天。
显然,由于电池装置的化学特性,超过两年的所有时间都无法实现。 尽管电池容量应该足够,但即使在电流可以忽略不计的情况下,即使使用很小的电流,AA电池也不能工作超过两年。 但是所有不到两年的时间都将成为容量限制。 不幸的是,接收器使用寿命的计算结果并不完全符合技术规格,但是在这种情况下,我还是让步了。

代码实施


老实说,我对Arduino及其类似的IDE持怀疑态度。 我开始理解用C语言编程微控制器,并且对寄存器的使用比对高级函数的公开调用更容易理解和预测。 尽管总的来说,我已经研究了平台本身和一些小项目,但我仍然这样做。 所以这次懒惰笼罩了我。 我为Arduino的SI4432模块提供了一个现成的库,这使我感到不胜其烦,并且我真的不想浪费时间尝试将其移植到CVAVR。 其余代码非常简单。 在花了几个晚上研究了与模块一起使用的库以及微控制器的睡眠模式之后,接收器和发送器草图的第一个版本已准备就绪。 接下来,有必要组装硬件,并已继续使用实际硬件进行开发。

它还活着...


EasyEDA在线服务开发了一个包含电路和印刷电路板的项目。 我没有打扰双面板,因此在背面放了跳线。
这是完成的发射机板的照片...


...和接收器。

对于电池,我买了支架,还买了箱子。 老实说,我想要白色,但是我们没有库存,所以我不得不以黑色收集它。
电路板的组装首先是在没有模块的情况下进行的,因为 您需要先填写控制器的引导程序程序员。 而且由于模块为3.3伏,编程器为5伏,并且它们使用同一总线,因此最好在固件之后焊接模块。 检查电源,对引导程序进行编程。 由于板上没有阻焊层,因此我在模块下方粘贴了一块棉布。 焊接模块并开始调试固件。立即踩踏耙,以模块冻结的形式出现,一切都变得简单,在将LBP连接到接收器并将电池连接到发送器之后,我使用的3伏稳定器没有提供必要的电流,一切都稳定运行。另外,我在电源电路上的转换器附近安装了一个电解电容器,以使其正常启动。我只需要添加上述其余逻辑。在标准天线上,连接非常稳定。从结构上讲,接收器和发射器完全适合所购买的外壳。使用自攻螺钉将板子固定到标准机架的底部,然后将电池座的双面胶带固定在顶部。箱子盖得很紧,所以我没有再用螺丝固定它,而且更换电池更方便。经过数个晚上的优化和测试,我得到了最终结果。




引导程序


应该分开说几句话,但要牺牲引导加载程序的费用。对于Arduino而言,没有用于4MHz石英的标准装载机,它们需要单独组装,但我很幸运,在开始设计之前先寻找信息,我碰到一个人的一篇文章,他在同一模块上制造一个气象站,面临着同样的问题。我将在文章末尾留下一个链接。顺便说一句,我建议阅读,这个人也很努力。结果,他的存储库中有一个现成的引导程序,并且由于他是公共领域的人,所以我使用了它。

结论


由于花费了一个多晚上的时间,因此构建了一个具有必要特性的完整工作结构。现在,该设备已经工作了3个多星期,到目前为止,尚未有人抱怨它的运行,但是时间会证明我的计算是多么真实。
对于那些说可以在3伏电压下放置继电器而不用担心转换器的人,我将回答我完全同意。但是对于那些决定重复设计的人,将有机会选择他们的解决方案。最后,工程师应该创建,而不仅仅是复制完成的结构...
感谢所有精通本文的人,我希望这很有趣。对于您的所有问题,建议和意见,请发表评论。

参考文献:


  1. 气象站文章
  2. GitHub存储库
  3. 计划和委员会。接收者
  4. 计划和委员会。发射器

Source: https://habr.com/ru/post/zh-CN431272/


All Articles