概述
最近又在折腾脉冲信号,原因是前段时间折腾组态屏HMI,用来采集模拟量传感器和控制继电器开关。
于是,就有了把脉冲信号也添加到里面的想法,倒腾了好几天发现不行,原因是组态屏的时间和LUA代码时间总是协调不到一块去,那就索性采用历史数据吧,但我们外部无法调用参与计算,大概率是我技术还太菜导致的。
那剩下的,我手里有的玩的就是单片机ESP32和一个RS485的开关量采集模块。
开关量采集模块
我选的是四川旗芯电子的产品QX-DI04,四通道,可以增量式计数,最大支持频率100Hz,原本是打算挂在组态屏进行采集的,结果没搞定,那就想,采用python编写一个程序,在win10系统上运行总可以吧,经过多次调试,总算认为结果还不错:
软件自带web服务,如果打开后,可以在局域网访问采集数据,右侧的参数都很清晰,修改好你的端口号和从站地址号,设置K系数,每升流量或每一转有多少个脉冲数。
需要注意的时候,上面的模块,脉冲输出电压必须大于7V,小于7V不工作。
ESP32-S3采集
利用ESP32采集的时候,就没必要再用上面模块了,两个原因:
1.信号需要转换,RS485要转换为TTL信号,转换后,采集响应肯定慢一些。
2.电压不匹配,ESP32接受的电压值是3.3V最大,上面的模块是不能小于7V,又要中转。
当然,上面的这个结论,我也是反复测试后才得出来的,使用效果不理想,最好的办法就是直接利用ESP32的引脚进行采集。
我使用的是ESPhome
对应的YAML代码如下:
总结
从响应上看,模块采集更快一下,数据是每秒钟更新一次,而ESP32是10秒钟更新一次,因为他的计算原理就是统计10秒钟扑捉的脉冲数,如果太快的,数据波动比较大,请自行测试。
但便捷性来说,那肯定是ESP32啦。