当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这个项目解决了我对于污水泵可能出现故障且未被察觉的担忧。我的污水泵已经使用了十多年了,我担心它还能运行多久。在必要之前我不想更换污水泵;即便污水泵出现故障,我的地下室也不太可能无法排水。

这个项目解决了我对于污水泵可能出现故障且未被察觉的担忧。我的污水泵已经使用了十多年了,我担心它还能运行多久。在必要之前我不想更换污水泵;即便污水泵出现故障,我的地下室也不太可能无法排水。

下面的图片展示了水池水位监测系统,该系统能够测量水池内的水深以及水面上方的水位高度。使用了一个 UT 传感器来测量水池顶部与水面顶部之间的距离。通过一个差压(压力计)式水压探头(4-20 毫安,适用于 0-1 米范围)来测量水深。另一个传感器用于测量当地温度和气压。各种信息会被记录到一个 microSD 卡上。该系统会向一台 Raspberry Pi 发送 TCP 消息,而 Raspberry Pi 又会将这些消息转发到我的电子邮箱。

故事

我原本不想立即更换污水泵,而是打算等到确实需要更换时再做处理。我打算以此为契机,制作一个设备来监测污水泵的运行状态,并记录污水池内的水位信息,从而确定污水泵的运行频率。而且,如果污水泵出现任何问题,比如出现故障,我希望能够尽快得知,比如通过将相关信息发送到我的苹果手机上。

我考虑了两种测量污水池水位的方法。差压式液位传感器需要一个 4-20 毫安的接口。UT 传感器需要一个直接的 GPIO 接口。我还希望记录所有关于水位的信息,包括水泵运行的时间(大约 8 秒)。我预计这可能需要每秒记录一次水位信息。我很快发现 Particle Photon 2 无法发送任何电子邮件,所以我需要一个外部系统来完成这项任务。为了为 Photon 2 编写 C++ 代码,我选择使用 Visual Studio Code 作为编辑器,并安装了 Particle Workbench。

我认定米克罗硬件能够满足我的所有需求(除了电子邮件这一项)。经过初步测试后,UT 传感器运行起来似乎相当稳定,但对周围的所有物体都很敏感。在水池中进行测试时,有时水池电机及其电源线会干扰测量较低的水位。水压传感器提供的信号非常嘈杂。最终,我决定将传感器和参考信号直接连接到 Photon 2 的一些模拟输入端(见下文)。即便如此,这个信号仍然相当嘈杂。我发现使用包含 25 个数据样本的中值滤波器能大幅降低噪声水平,但这也使水池操作的“检测”延迟了 12 秒。这似乎是一个不错的折衷方案。

是时候构建一个可用的系统了。米克罗菲德 Feather Click 适配板让我能够使用一款 Photon 2 来通过 SPI 连接两个 Click 板。首先,我在左侧安装了终端 Click(扩展板)。这个板是可透传的板,所以还可以在上面安装一个 Click 板。然后在左侧,我安装了 4-20 毫安 R Click(配有两根跳线线,见下文)。在右侧,我安装了 microSD Click。

这需要将压力计板与 I2C 总线进行连接,连接方式为通过终端板上的线路和上拉电阻来实现(详情见下文)。

以下内容总结了线路连接方式及配置情况:

1. 所有“飞羽”/“翼板”电路板上均支持 3.3V 逻辑电平。

2. 光子 2 个引脚的使用情况:D0(SDA),D1(SCL),D5(SPI 时钟/片选右侧),D7(蓝色 LED),D8(UT 触发信号),D9(UT 回波信号),D11(A0/参考电压),D13(A2/输入正极),D15(MOSI),D16(MISO),D17(SCK),D18(SPI 时钟/片选左侧),D19(中断/使能左侧)

3. 必须在软件中禁用的引脚:气压计:D18(片选),D19(中断/准备好)

4. Feather/Photon 2 采用 D7 型蓝色 LED,并将其直接集成在电路板上。

5. “Feather/Photon 2”在右翼使用 D15-17、D5(MOSI、MISO、SCK、CS/SS)来实现 SPI 通信。

6. “Feather/Photon 2”在左翼使用 D15-17、D18(MOSI、MISO、SCK、CS/SS)来实现 SPI 通信。

7. “Feather/Photon 2”使用 D19(INT)作为 EN 信号,用于 4-20mA 的 R 传感器,操作步骤在左侧进行。

8. Feather/Photon 2 使用 D0-1(SDA、SCL)来实现 I2C 通信。

9. 右翼:微型 SD 卡 插入式 SPI 接口

10. 左翼:点击“终端”,然后点击“4-20mA R”并连接至SPI接口,并将[Vref]连接至左翼上的“AN1(A0/D11)”,将[Vin+]连接至“RST1(A2/D13)”(仅限左翼使用)]

11. 终端点击:使用 2.2KΩ 的上拉电阻连接至 3.3V 以实现 I2C(SDA/D0/A3,SCL/D1/A4)的连接。

12. 终端点击:使用 D8(TX)连接测距功能,使用 D9(RX)连接回波信号,接地端使用 Gnd,3.3V 电压使用 Vcc,适用于 HC-SR04-33 超声波传感器(注意:PCB 上 TX 和 RX 的丝印标签有误/位置颠倒)

13. 终端点击:在气压计的 I2C 接口上,SCL 用 SCL,SDA 用 SDA,Gnd 用 Gnd,3.3V 用 3.3V。

控制器组件被安装在了一个外壳内,而气压计则独立放置(详情见下文)。

系统运行了几天后,我取出了 SD 卡的一份副本,以确定何种水位水平适合用来判断集水坑是否已启动。此外,在集水坑电机关闭的情况下,我还测量了集水坑排入室内排水管道时的水位。我利用这些信息对软件进行了更新,以便能够测量集水坑的运行情况和溢出状况。

下面这张图展示了污水池的各种水位情况。蓝色曲线代表的是用于测量水位高度的 UT 传感器数据,即从污水池罐顶到水面顶的高度,因此数值越高表示水位越低。橙色曲线则是用于测量污水池底部水深的水压计数据。在左侧,没有向污水池中添加水,所以水位保持不变。随后是一场大雨,导致污水池频繁运行。雨势减缓后,运行频率降低。接着雨又开始下,随后污水池运行变得更加频繁。值得注意的是,在绘制的大部分数据中,水位高度(即低水位)都被截断了(因为污水池的电源线挡住了低水位的测量)。我稍微移动了一下电源线,从而在图中的最后几个周期中,在低水位时能够测量到正确的 UT 水位高度。

下面展示了另一组数据,该数据对应的是有小雨的一天情况。

这是从我的 iPhone 上看到的典型状态视图。Hm25 是使用 25 个点的中值滤波器计算出的水面高度,它表示的是水箱顶部的 UT 传感器与水面顶部之间的距离。水位最低点、当前值和最高水位值均已列出。同样,D1m25 是使用水下压力计测量的水深。Sump # 表示根据高度和深度测量得出的水箱运行次数。它们现在是一致的,但在开发过程中并非总是如此。该状态会指示水位是否过高,如果过高则表明水箱泵运行不正常。计时器值用于让我大致了解代码是否按预期运行,包括输入数据测量的毫秒时间、数据传输到 microSD 卡的时间以及包括向 TCP 输出发送数据的总时间(通常每天仅一次,除非正在进行远程数据记录)。

现在我需要将污水池的运行情况以及任何溢出情况通过电子邮件发送到我的 iPhone 上。我不想使用外部服务,所以对我来说最简单的方法就是在我的树莓派 5 上编写一个 Python 程序。当 Photon 2 要发送有关污水池运行的信息时,它会打开一个 TCP 客户端,并向我本地网络上的一个 TCP 服务器发送消息。树莓派有一个 TCP 服务器,它会等待连接。当连接建立后,它会将适当的信息通过电子邮件发送给我 iPhone。每天我都会收到一封关于污水泵运行次数的邮件。如果污水池不运行且水位过高,我会立即收到关于该问题的电子邮件。

到目前为止,一切运行得都非常好。令我惊讶的是,每当有少量降雨时,污水泵就会频繁启动(一天内达 36 次)。需要注意的是,仍有大量的软件部分尚未完成(有很多警告信息),但我已经停止对其进行开发了,因为目前情况似乎一切正常。在 Photon 2 上的主 C++ 程序是 SumpLevel.cpp。在我的 Raspberry Pi 5 上的主 Python 程序是 TCPtoEmail.py。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭