这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sdo第四期液体流量检测仪过程帖~

共1条 1/1 1 跳转至

Let'sdo第四期液体流量检测仪过程帖~

助工
2025-01-19 20:19:26     打赏

    距离12月27日到手零件已经差不多3周了,陆陆续续调试了几天,总算是把基本功能给实现了。下面讲讲开发的过程:

   1、开发环境的选择,本人最熟悉的是Keil,也用过CCS和IAR。这次想着挑战一下,就用了ST自己的CubeIDE,毕竟免费,避免版权纠纷。刚开始加文件就遇到了迎头一棒,明明记得include里面添加了路径,但是编译的时候IDE死活就是找不到。网上找了好一会才发现添加代码文件夹的时候,不光要在Properties-C/C++ General-Paths and Symbols的在Includes里面添加新文件夹路径,还要在Source Location里面添加新文件夹路径才能用。

    其他倒没遇到什么大问题,因为用过同样基于Eclipse的CCS,还算熟悉。另外就是CubeIDE内置了CubeMX,可以随时修改硬件配置,然后重新生成相关代码,这点挺方便的。

    2、功能需求:实现“通过小抽水泵和继电器实现流量控制,结合霍尔效应传感器,准确测量液体的传播时间,实现瞬时流量和累计流量的监测”,这里面包含几个子功能:(1)、通过继电器控制抽水泵开关;(2)、检测流量传感器输出的频率信号;(3)、OLED显示。使用Draw.io画了个简单的框图如下:

电源供电框图2025-01-19_174015.jpg接线IMG_20250119_161531.jpg

2.1、通过继电器控制抽水泵开关

    这个很简单,注意根据教程接线,然后就是控制GPIO的高低电平输出,这个属于是常规单片机教程的第一个项目。

2.2、检测流量传感器输出的频率信号

    这里遇到比较多问题,第一个就是采集方法。之前项目里面采集遥控器脉冲,因为需要对每个脉冲计算高低电平持续时间,所以用的是GPIO外部中断的方案。这次只需要采集转子流量计单位时间输出的方波的频率,因此将流量计信号接到PA8(Timer1CH1)上作为外部触发信号。具体参考附件里面的LetsDo.ioc配置。注意里面配置了两个Timer,TIM1用于捕获转子流量计的信号,TIM4是0.5s中断一次进行流量计算。

    第二个需要说明的是继电器会导致转子流量计的输出信号产生很多毛刺,如下图(注意这边我使用电阻分压降低了输入的信号电压),

    像上面这样的信号肯定是有问题的,这方面也做了一些改动,包括改用电池供电,增加滤波电容等,略微好些。

电池供电dso_004.png

    后来想起STM32部分IO是可以接受5V信号输入的,于是又去除了分压电路并重新连线,尽量短,示波器测下来效果好多了。这里没有深入研究,照理说信号不应该那么差。等有空再弄吧。

电池供电5Vdso_005.png

    从上图可以看到3.68V电池供电时水泵使流量计输出33.78Hz的方波。实际框图也变成了

电池供电框图2025-01-19_174051.jpg

2.3、OLED显示

    这里我没有注意看EEPW发的邮件,直接找中景园电子的淘宝店客服要了一份驱动,采用的是GPIO模拟IIC的方式,一次点亮成功。然后按教程更换了一些字模,稍微修改一下就可以呈现下面的效果了。

OLED 2025-01-19_175634.jpg

    而且也是尽量简化了工作,其实界面在一个项目里面占用的时间比例是很高的。这里只简单显示了三个参数。没有做菜单。汉字调用也比较简单,直接用序号没有改。

3、后面我还添加了USART1通讯功能,通过ST-LINK上的预留接口与PC上的串口调试助手通讯。由PC来发送需要出水多少百ml。

串口调试助手2025-01-19_202825.jpg

    最后就是整合调试了,我采用和老师一样的方法,使用电子秤进行校准。主要校准了100ml,测试下来还是比较稳定,一般是100ml或101ml,测试200ml定量时会少一些,一般在197-198之间,还需要仔细标定。

LetsDo2025011920.zip

注意:这个程序并没有经过严格的测试,只是初步实现了定量给水的功能。如有错漏请不吝指出。




关键词: Let'sdo     第四期     液体流量检测仪    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]