概述
最近又在折腾脉冲信号,原因是前段时间折腾组态屏HMI,用来采集模拟量传感器和控制继电器开关。

于是,就有了把脉冲信号也添加到里面的想法,倒腾了好几天发现还行,刚开始想简单了,最终也算是用起来了。
为什么说是手搓,因为规范的采集肯定要上PLC和板卡了,我目前还没对比过和PLC采集的区别,但毫无疑问,PLC更研究更专业。
开关量采集模块

我选的是四川旗芯电子的产品QX-DI04,四通道,可以增量式计数,最大支持频率100Hz,原本是打算挂在组态屏进行采集的,结果没搞定,那就想,采用python编写一个程序,在win10系统上运行总可以吧,经过多次调试,总算认为结果还不错:

软件自带web服务,如果打开后,可以在局域网访问采集数据,右侧的参数都很清晰,修改好你的端口号和从站地址号,设置K系数,每升流量或每一转有多少个脉冲数。
需要注意的时候,上面的模块,脉冲输出电压必须大于7V,小于7V不工作。
ESP32-S3采集
利用ESP32采集的时候,就没必要再用上面模块了,两个原因:
1.信号需要转换,RS485要转换为TTL信号,转换后,采集响应肯定慢一些。
2.电压不匹配,ESP32接受的电压值是3.3V最大,上面的模块是不能小于7V,又要中转。
当然,上面的这个结论,我也是反复测试后才得出来的,使用效果不理想,最好的办法就是直接利用ESP32的引脚进行采集。
我使用的是ESPhome
对应的YAML代码如下:
K系数的设定
首先要调试一个稳态的流量,然后用量杯或称重法计算流量值,将软件的K系数设定为100,看显示值,这样就可以很容易计算出所需的K系数值了。
总结
从响应上看,模块采集更快一下,数据是每秒钟更新一次,而ESP32是10秒钟更新一次,因为他的计算原理就是统计10秒钟扑捉的脉冲数,如果太快的,数据波动比较大,请自行测试。
但便捷性来说,那肯定是ESP32啦。
附件
我上面编写的软件,用于win系统上,利用modbus485采集脉冲,计算流量或转速。
