DIY: 485读取并控制Fan

引言  


Hi, 大家好。这里是金锁的科技DIY。利用软核的技术,把想法变成现实。


项目介绍 - 目标,想实现什么功能


气体传感器用途广泛,这次我们的小目标是做一个通过氢气传感器来控制排气扇工作的小型自动化系统。

当然,我们这个控制系统,不光要能通过传感器来控制风扇的运行和停止。还要加入定时控制,也就是让风扇能够按照一定的间隔时间来自主运行。


方案介绍 - 硬件选择 - 模块化


既然利用软核的技术,那么我们的原则是直接利用现成的功能模块,进行搭积木式的快速开发。

我们先来看看需要哪些积木吧。

一是要有脑袋瓜儿,也就是个主控。来随时获取并分析氢气传感器给出的数据,并且判断何时应该启动风扇。

二是要有眼睛鼻子,也就是氢气传感器;

三是要有胳膊腿儿,也就是风扇;

四是要有吃的,提供能量,也就是电源;

主控我们选择集成esp32芯片的nodemcu或者类似模块。这个模块可内可外,性能还可以。


氢气传感器,市面上有很多,只是在输出类型和供电上需要我们做个选择。在输出方面,一般都提供电压输出的、电流输出的、485数字输出的。我们是软核DIY,所以选择485数字输出的,也就是所见即所得,读出的数字直接反应气体浓度值。在电压方面,有12v的,有24v的,也有支持宽电压区间的。我们这里选择12v的。


风扇类型更是若干,我们选择一个12V的直流轴流风扇,和传感器一样的电压。

电源模块主要考虑给不同用电器供电,考虑风扇和传感器都可以用12v,所以直接搞一个12v的DC电源就了。另外由于esp32模块是5v的,所以我们直接选择一个12v降5v的降压模块就。


这里还有两个方面要重点说明一下子:

第一,由于我们选择了485输出的氢气传感器,遵循的modebus rtu协议;而esp32模块作为一种单片机集成的模块,能读的是TTL电平。我们是软核DIY,所以不管太多细节,直接搞个485和TTL电平互转模块,连接传感器和esp32即可。

第二,用esp32来控制风扇,是低电压控制高电压,少不了继电器。由于线圈机械式的继电器,在频繁连续动作时,可能存在失效的问题;我们直接使用固态继电器。

这些东西去哪里买的话,大家懂的都懂,商家没给我打钱,我就不讲了。


制作过程


硬件的连接,我们按照这个电路图进行。使用12v的直流电源供电,经过降压模块后给esp32模块供电,还有一部分直接给传感器和风扇供电。


给风扇供电时,为了控制风扇的启动和停止,我们要将正极连接继电器模块。负极直接连接风扇的负极。需要注意的是,这种固态继电器是区分正负极的,接反的话是不动作的。

对于485和TTL电平互转模块,需要放到esp32模块和传感器之间,作为信号转换收发的桥梁。

由于我们选择的固态继电器是支持3.3v触发的,所以esp32模块出来的高电平时足够触发继电器动作的。所以,我们可以直接将esp32的输出引脚接入继电器。

软件控制逻辑上,由于在arduino框架下做快速开发,直接应用,不涉及底层,其实没有太复杂的地方。这里我们主要提一些几块核心的功能,以便C语言老师们吐槽。

第一个是读取485传感器的数据信号。在代码编写前,最好用串口工具,来测试一下前面提到的485转TTL模块是否能够正常工作。然后就是需要写个简单的算法来把读取的16进制的数据换算成10进制的。这里需要提醒的是,我们在购买传感器前,最好跟商家索要产品文档。比如485的,一般都会在文档里面给出说明和示例。

第二个是我们一开始提到了对风扇的控制实质是有两个方式的,一是当氢气传感器监测到的气体达到一定浓度的时候,二是进行定时的。这两个方式明显是有优先级的。也就是在正常情况下,我们按照定时器来进行固定间隔的风扇开启和关闭;在这个过程中,一旦气体浓度达到阈值了,就会马上启动。这里我们用了中断处理的概念。

另外,对于固定间隔开启和关闭风扇,其实是有很多办法。如果是使用esp32的wifi功能的话,完全可以使用其网络时钟来直接选择某些时间段来开启风扇。这里,我们用了millis()来通过判定间隔时间的方式实现。

连接的过程相对简单,就是按照电路图该焊接的焊接就OK。不过该过程,该翻车还是得翻车,要不怎么能叫软核DIY。


看起来有那么一丢丢丑。像海胆爆炸头一样。这咕噜大家就当没看见吧。待我出绝招。本来是画了个外壳打算把主控都放到外壳里面,结果3D打印过程中翘边翻车,为了节省时间,找了个现成的端子盒替代。但是考虑到我想把风扇固定到一个柜子上,所以又设计并且打印了个连接头。


当然,到了这里,不是结束,而仅仅是个开始。未来我们可以增加更多的扩展功能来丰富这套系统。


比如:

可以增加屏幕显示整个系统的工作状态,实时显示氢气的浓度数据等。

可以增加声光报警功能,当监测到浓度达到一定的阈值后,系统自动进行声光报警。而且这种报警也可以通过拨打电话等方式发出。

可以连接云端数据库,将传感器的数据实时的上传给数据库,以实现数据记录存储。

可以通过手机/电脑远程控制系统启动和关闭等等。


一个最牛逼的扩展是,我们选择了485输出的传感器,这意味着,在一条485总线上,我们可以扩展布设若干个氢气传感器,实现低成本的批量扩展功能。

另外,我们这里是氢气传感器,实际上,咱可以举一反三,替换任意类似的传感器来扩展更多可能。

如果您看到了这里,那说明是真爱,那就烦劳扣扣手指,点个赞,关个注,转个发,留个言,吐个槽。我们下回见。

你可能感兴趣的:(DIY: 485读取并控制Fan)