如何制作定时通风机
需要给房间通风?这篇文章将向您展示我如何制作一个中继操作的 GPS 定时风扇来排出船舱内的潮湿空气。它由PIC16F628A控制并带有LCD。
需要给房间通风吗?这篇文章将向您展示我如何制作一个中继操作的 GPS 定时风扇来排出船舱内的潮湿空气。由PIC16F628A控制,液晶显示。
让空气流动
在几乎没有通风的小房间里,空气往往停滞不前。如果空气有点潮湿,某些地方肯定会有霉菌和真菌。
霉菌和真菌存在于自然界中,它们是分解树叶、木材和其他植物残骸所必需的。因为我的船上有很多木头,所以那里肯定会有霉菌和真菌。我无法阻止它们进来,但我可以采取一些措施,尽量让船内的环境不受霉菌和真菌的侵害。
至少有两种方法可以解决这个问题。一种方法是按紧凑的时间表进行清洗和清洁。现在,这有多有趣?作为一个极客,我把一些东西变成了书呆子:一个风扇,它在固定的、定时的基础上循环和排出潮湿的空气。
设计系统
我希望系统执行以下操作:
- 让空气流通
- 以稳定的间隔自动打开/关闭
- 使用汽车电池供电
- 包含电池充电器以给电池充电
- 包含显示时间和其他信息的显示器
要制作这样的系统,我需要以下部分:
- 一个 12v 风扇
- 微控制器
- 一个 12v 电池和一个 12v 电池充电器
- 2 个继电器,用于跟踪时间和拧紧端子。
- 其他零件,根据以下零件清单
我希望风扇每小时运行五分钟。这将在软件中进行硬编码。
该设置将使用汽车电池运行。我的风扇额定值为 12v 4.5A。为确保电池始终处于充电状态,我会将其连接到电池充电器。为确保风扇运行时电池充电器不会过载,我将在风扇运行时让系统“断开”充电器。一个继电器操作风扇,另一个继电器操作电池充电器。风扇运转时,电池不充电,风扇不运转时,电池充电。
为了跟踪时间,我使用了 GPS 模块。在这个项目中,我将使用 Skylab SKM53 系列模块 (PDF)。该单元每秒通过 UART 发送几个 NMEA 语句。数据表建议在 RXD 和 TXD 上使用 10K 上拉电阻。这将增加串行数据的稳定性。我没有这样做,我没有注意到任何不稳定。我可能很幸运。在数据表的同一页上,它说应该添加合适的去耦电容器。 10uF 电解液和 0.1uF 陶瓷。当我为电路做面包板时,我只使用了 0.1uF 的陶瓷。
来自 Skylab 数据表 (PDF) 的屏幕截图。
我正在使用“RMC”句子来获取时间。 RMC 语句的示例如下:
$GPRMC,075747.000,A,2233.89990,N,11405.3368,E,3.9,357.8,260210,,,A*6A
$GPRMC 之后的第一个数字是时间。在本例中,时间为 07:57:47。我们将需要这些信息。
接下来我们需要的是前缀,它告诉我们 GPS 模块是否具有有效的定位。在上面的例子中,它是三个零后面的大写字母 A。
“A”表示有效修复,“V”表示无效修复。在我的软件中,我检查了有效的修复。这些字母区分大小写。
为了构建项目,我喜欢制作框图。通过这种方式,我“可视化”了我想要做的事情。
在上面的框图中,我已将所有内容拆分为它们自己的块。如果我需要对原理图或电路进行故障排除,这也很有帮助。
硬件
原理图以框图为基础。我已经复制了框图中的所有模块,以反映电路中的组件及其连接。
在 LM7805 稳压器的数据表中,指出对于标准应用,您只需要输入引脚上的 0.33uF 和输出引脚上的 0.1uF。那么为什么我使用不同的值上限和一些额外的上限?我正在使用它们来平滑输入和输出。这可能有点太多了,但我对这种调节器配置有很好的经验。如果不使用任何电容器,稳压器可能会开始振荡。 LM7805 稳压器是一个老式的线性稳压器。为什么不使用现代开关稳压器?开关稳压器比线性稳压器高效得多。这就是我所拥有的。
只需使用一个继电器,我就可以节省零件和空间。我想要两个继电器。使用两个继电器的原因之一,是我想在充电器被切断和风扇启动之间有一点时间框架。
我已将零件清单从 BOM.ULP 导入 OpenOffice Calc 并删除了一些不必要的列:
原理图中没有显示的是我的保险丝。我在风扇正极线上有一个 12v 8A 额定保险丝,在电池充电器正极线上也有相同的保险丝。
软件
您可以从本文末尾的下载链接下载 C 源代码。代码注释得很好,但我会在这里做一些额外的亮点。
当我制作程序时,我遵循一定的结构。下图展示了结构:
代码首先包含必要的库,然后是配置位。在源代码中包含配置位被认为是一种良好的编程习惯。这样就可以更轻松地查看您所做的工作并让其他人帮助排除故障。此外,如果你在几个月后开始着手一个项目,那么你会立即看到细节。
当配置位正常时,我继续进行定义。在这里,我定义了连接到电路的晶体速度。微控制器的端口也已定义。
接下来是变量:所有变量都在这里声明。
现在是对函数进行原型设计的时候了。这里我列出了程序使用的所有函数。一些程序员认为这是浪费时间,但我喜欢它并保留它。如果用主程序循环后的函数来构建程序,实际上是有必要的。
接下来是功能。现在开始评论真的很重要。我通常在每个函数上都有几行说明该函数的一般作用。我还在函数中注释了代码行。
一个例子是这个项目中初始化UART端口的函数:
// 初始化UART端口的函数 无效uart_init(无效) { TXSTAbits.BRGH =0; // 高波特率选择位,1=高,0=低 TXSTAbits.SYNC =0; // USART 模式选择位,1=同步模式,0=异步模式 TXSTAbits.TX9 =0; // 9位选择位,1=9位传输,0=8位传输 RCSTAbits.CREN =1; // 连续接收使能位,1=使能连续接收 /* 用16MHz晶振计算SPBRG 16MHz 16000000 /9600 =1666.6666 1666.6666 / 64 =26.0416 26.0416 - 1 =25.0416 25.041 =25 */ SPBRG =25; // 9600-n-8-1 PIE1bits.RCIE =1; // USART接收中断使能位,1=使能 RCSTAbits.SPEN =1; // 串口使能位,1=串口使能 TXSTAbits.TXEN =1; // 发送使能位,1=发送使能位 返回; }
您将看到第一个注释行,解释了该函数的作用。然后所有的代码行都被注释了,所以我知道发生了什么。
当所有功能都到位后,就该进入主程序了。主程序从几条语句开始,然后进入一个永远运行的循环。
jc_lettheairflow.c.zip
结论
在这篇文章中,我试图让我的船上的环境对霉菌和真菌不利,因为我可以用风扇吹和循环空气。风扇连接到从机舱出来的管道上。我使用 GPS 模块来跟踪时间,并使用两个继电器来打开/关闭风扇。为确保电池保持充电状态,我使用了另一个继电器来打开和关闭电池充电器。
我留给读者把这个电路提升到一个新的水平并显示日期。
为什么要使用 GPS 模块?我可以将微控制器用作一个简单的计时器。然后我必须制作某种界面来设置时间。或者我会很高兴它在不考虑实时的情况下运行。它会每整小时运行 5 分钟。使用 GPS,我可以通过编程将其设置为每整小时运行五分钟。
图片
亲自尝试一下这个项目!获取 BOM。
工业设备