雷竞技注册
项目

如何制作定时空气呼吸机

2017年1月11日经过Jens Christoffersen.

需要通风房间?本文将向您展示我如何制作中继操作的GPS定时风扇,以排出船舱内的潮湿空气。它由PIC16F628A控制并具有LCD。

需要通风房间?本文将向您展示我如何制作中继操作的GPS定时风扇,以排出船舱内的潮湿空气。它由PIC16F628A控制并具有LCD。

让空气流通

在小房间里几乎没有通风,空气往往仍然存在。如果空气有点湿润,那么你肯定有霉菌和真菌在某些地方。

模具和真菌在自然界中被发现,并且需要分解叶子,木材和其他植物碎片。因为我的船上有很多木头,我肯定会在那里有霉菌和真菌。我无法阻止他们进入,但我可以采取一些措施,试图将船只内部的环境保持在敌对模具和真菌中。

至少有两种方法可以解决这个问题。一种方法是在紧张的时间表上清洗和清洁。现在,这有多乐趣吗?作为我所处的极客,我牢记了一些东西,而是一个粉丝,它在固定的,定时地循环和通风口漏洞。

设计系统

我希望系统执行以下操作:

  • 循环空气
  • 以稳定的间隔自动打开/关闭
  • 用汽车电池充电
  • 包含电池充电器以为电池充电
  • 包含显示时间和其他信息的显示器

要制作这样的系统,我需要以下部分:

  • 一个12V风扇
  • 微控制器
  • 12V电池和12V电池充电器
  • 2个继电器,一些跟踪时间和螺丝端子。
  • 其他部分,按以下部分清单

我希望粉丝每小时运行五分钟。这将在软件中进行硬编码。

这个装置将由汽车电池供电。我的风扇额定电压是12v 4.5A。为了确保电池总是充满电,我将它连接到一个电池充电器。为了确保风扇运行时电池充电器不过载,我将在风扇运行时让系统“断开”充电器。一个继电器将操作风扇,另一个继电器将操作电池充电器。风扇运行时,电池不充电,风扇不运行时,电池充电。

要跟踪时间,我正在使用GPS模块。在这个项目中,我会使用Skylab SKM53系列模块(PDF)。此单位将多个NMEA句子发送每秒UART。数据表建议使用RXD和TXD上的10K上拉电阻。这将提高串行数据稳定性。我没有这样做,我没有注意到任何不稳定。我可能很幸运。在数据表中的同一页面上,它表示应该添加Suitabe Defuling CapaSitors。10UF电解和0.1UF陶瓷。当我面包电路时,我只使用了0.1uf陶瓷。

截图截图skylab datasheet.(PDF)。

我正在使用“rmc”句子来获取时间。RMC句子的示例如下:

$ GPRMC,075747.000,A,2233.89990,N,11405.3368,E,3.9,357.8,260210 ,,, * 6a

$GPRMC之后的第一个数字是时间。在本例中,时间为07:57:47。我们需要这些信息。

我们需要的下一件事是前缀告诉我们GPS模块是否具有有效位置修复。在上面的例子中,它是三个零之后的大写a。

“A”表示有效修复,“V”表示无效修复。在我的软件中,我检查有效修复。这些字母区分大小写。

为了构建项目,我喜欢制作一个框图。这样我就是“想象一下”我想做什么。

在上面的框图中,我把所有的东西都分解成它们自己的块。如果我需要对原理图或电路进行故障排除,这也很有帮助。

硬件

示意图基于框图。我已经在框图中再现了所有块,以反映电路中的组件及其连接。

在LM7805稳压器的数据表中,它表​​示,对于标准应用,您只需要在输入引脚上的0.33UF,输出引脚上的0.1UF。那么为什么我使用不同的价值帽和一些额外的?我正在使用它们来平滑输入和输出。这可能有点太多了,但我有一个非常好的经验与这个调节器配置。如果您不使用任何电容器,则调节器可能会开始振荡。LM7805稳压器是旧的线性稳压器。为什么不使用现代的开关调节器?开关调节器比线性稳压器更有效。这就是我躺在的地方。

我可以在零件和空间上保存,只需使用一个继电器。我想要两个继电器。使用两个继电器的原因之一是我希望在切割充电器之间具有一点时间范围,并且风扇开始。

我已将零件列表从BOM.ulp导入OpenOffice Calc并删除了一些不必要的列:

在原理图中没有显示是我的保险丝。我在风扇积极线上有一个12V 8A额定保险丝,我在电池充电器上有相同的电线。

软件

您可以从本文末尾的下载链接下载C-source。代码注释得很好,但是我将在这里做一些额外的突出显示。

当我制作一个程序时,我遵循一定的结构。此图显示了结构:

代码从包括必要的库开始,然后是配置位。它被认为是良好的编程实践,以包括源代码中的配置位。然后看看你所做的事情以及其他人来帮助排除故障,这将要容易得多。此外,如果你在几个月后拿起一个项目,那么你会立即看到比特。

当配置位确定时,我继续定义。在这里,我定义了我连接到电路的晶体速度。单位或微控制器的端口也定义。

接下来是变量:所有变量都在这里声明。

现在是时候原创了这个功能了。这里我列出了程序使用的所有功能。一些程序员认为这是浪费时间,但我喜欢它,我保留它。实际上是必要的,如果您在主程序循环之后与函数构建程序。

接下来是个功能。现在开始评论非常重要。我通常在每个函数上都有几行,告诉函数一般的函数。我还在函数中的评论代码行。

一个示例是初始化此项目中的UART端口的函数:

//函数才能in in in in uart端口voiduart_init(void){txstabits.brgh = 0;//高波特选择位,1 =高,0 =低TxStabits.sync = 0;// Usart模式选择位,1 =同步模式,0 =异步模式TxStabits.tx9 = 0;// 9位选择位,1 = 9位传输,0 = 8位传输RCStabits.CREN = 1;//连续接收使能位,1 =启用连续接收/ *使用16MHz晶体16MHz 16000000/9600 = 1666.6666 = 26.0416 26.0416  -  1 = 25.0416 25.041 = 25 * / spbrg = 25;// 9600-n-8-1 pie1bits.rcie = 1;// ustart接收中断使能位,1 =启用rcstabits.spen = 1;//串口启用位,1 =串行端口启用txstabits.txen = 1;//传输使能位,1 =发送eanble返回;}

您将看到第一行注释,解释了该函数的功能。然后对所有代码行进行注释,这样我就知道发生了什么。

当所有功能到位时,它是主要程序的时候了。主程序在进入永恒运行的循环之前,以少量语句开头。

jc_lettheairflow.c.zip.

结论

在本文中,我试图将我的船上的环境作为模具和真菌的敌对,因为我可以用一个吹嘘的风扇,吹走并循环空气。风扇连接到远离机舱的管道。我使用了GPS模块来跟踪时间,我用了两个继电器来打开/关闭风扇。为确保电池保持充电,我用另一个继电器打开和关闭电池充电器。

我将其留给读者将此电路带到下一个级别并显示日期。

为什么使用GPS模块?我本可以将微控制器用作简单的计时器。然后我必须制作某种界面,设置时间。或者我会对它跑步而不考虑到实时。每天都会运行5分钟。使用GPS,我可以通过程序将其设置为每小时运行五分钟。

图片

为自己提供这个项目!BOM。

4评论
  • C
    catalin_cluj. 2017年1月20日

    在这种情况下,GPS在这种情况下是有用的,因为柴油发动机为风扇供电。

    喜欢。 回复
  • S.
    splud 2017年1月20日

    我有一些建议。

    1.您可能会将湿度传感器介绍到您的项目中。然后,如果湿度交叉阈值,则运行循环系统,并这样做,直到湿度降低阈值。使用DHT11或DHT22传感器,您可以将温度添加到混合并计算露点。如果您如此倾向,则可以向您的LCD显示此数据。

    2.当我去回复时刚刚发布的人,GPS是此应用的矫枉过正。此外,如果您正在运行大量电池,那就是您可能没有的另一个漏油。Your uC should be able to enter low power sleep for designated periods, wake up, check whether it should be driving the fans (whether that is a humidity sensor or ‘x’ of the timed sleep cycled), and go back to sleep as appropriate. Mold and mildew doesn’t care if there’s a few second shift to the cycle over the course of a week. If this circulation system were presented as one block of a larger automation system which really had need for a GPS, it could be justified, but the system would be more applicable to a larger audience if it wasn’t designed with a reliance on a single component which likely has a BOM cost higher than anything else in the project.

    3.虽然继电器提供多用途的类型,你驱动的设备,因为你的风扇是由DC驱动,你可以简单地使用mosfet代替(在我看来,这是一个比bjt更好的选择)。如果一个给定的应用程序需要它,mosfet输出可以驱动一个继电器(或光耦合器的可控硅),而不是直接驱动你的负载。这样做的好处是减少电流牵引,减少机械故障的可能性(继电器的触点本身可能随着时间的推移而被腐蚀)。这进一步降低了BOM成本,并且在开关时没有“点击”噪音。我很感激你在继电器螺线管上安装了二极管。

    4.你用的是线性调节器你知道你应该用开关模式。让我强调,你应该使用一个开关模式-它看起来你订购了一些零件无论如何,如果一切都是你有铺设周围的东西,那么你需要订购一些开关模式调节器,所以你有他们铺设周围为未来的项目。你正在耗尽电池-线性模式和开关模式之间的差异是显著的。加州大学,GPS, LCD,以下是都是通过你的线性驱动,它看起来不像你驱动下GPS节约用电(这当然将是一个错误,因为你不得不等待多个卫星锁得到有效时间)。你描述过你的电路的功率图吗?如果你从一个12 v电池12.5说,你把200毫安常数(让我们忽略权力球迷和发光二极管),你可能会使用0.2 * 5.0 v = 1 w电路,但你的监管机构正燃烧* 0.2 (12.5 v - 5.0) = 1.5 w,和总电路消耗2.5 w。切换模式将使其更接近1W常数。在uC上使用睡眠模式而不是GPS会删除GPS负载,减少uC负载。uC可以在不醒的时候关闭LCD(你可以使用一个按钮来中断睡眠和更新显示),而这些反过来会减少整体的电力消耗。

    5. If you’re recharging the battery, you’re likely doing this when your system is connected to AC (generator, or dock) - having the battery charger simply implemented as a trickle charger would likely suffice - if your battery has dropped low enough that your relays don’t actuate, you can put yourself into a situation where you can’t turn on an external charger, so removing that logic simplifies things. However, if you changed to mosfets, your system would work down to around 5V + the dropout of your linear regulator (yea, another reason to switch to a switchmode).

    你在这里所拥有的东西与我所使用的温室监视器(驱动加热器和风扇)没有太大的不同(除了继电器、bjt、GPS和uC的选择)。

    喜欢。 回复
    • T.
      TeddleSruss. 2018年4月5日
      我发现DHT模块不是很准确或有用。我在Arduino脱水器控制器中使用了一个,并发现我所使用的dht11和22的滞后,往往需要很长时间来稳定,并一直在寻找一种便宜但更有用的替代品。
      喜欢。 回复