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

共2条 1/1 1 跳转至

【Let'sdo第四期-液体流量检测仪DIY】-成果展示

菜鸟
2025-01-21 01:05:26     打赏

由于这个项目,我想用CubaMX来做,但是对于F103这种比较老的MCU来说,CubaMx确实教程比较少,所以,中间还是遇到很多困难,好在最后也完成了。

但是整个项目还是会有没有很完善的地方,还请看帖子的大佬们加以指正。 

先贴上成功视频链接,由于这个水泵真的太慢了,(我没有录完,最后拍了两张照片)

https://www.bilibili.com/video/BV14gwWe3EGQ/?vd_source=d55867111798317066d09ccf8009a9d4

这个帖子主要讲解怎么接受脉冲。

说到脉冲,就需要说到电平,高电平还是低电平。

有电平的变化,MCU就可以检测到。

这个水流量检测仪不知道是太简单了还是什么,大家好像都没有特地说明他一升水是多少个脉冲之类的数据。 我在淘宝找到了一张图。 

image.png

我大概算了一下,差不多1ml就是4个点左右,所以我后面粗略的以4个点计算为1ml水

这里用到了一个TIM的回调函数

#define POINTS_PER_ML 4  // 每 1ml 对应的点数
uint16_t ml_count = 0;   // 用于存储毫升数
uint16_t ml_countx = 0;   // 用于存储毫升数

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
    if (htim == &htim2)
    {
		ml_countx++;	
		
        // 每次捕获时增加计数
        pulse_count++;

        // 每达到 4点时,表示 1 ml
        if (pulse_count >= POINTS_PER_ML)
        {
            // 增加 1ml 计数
            ml_count++;


            // 显示当前的毫升数(例如显示到 OLED)
           OLED_ShowNum(48, 4, ml_count,6, 16,0); // 显示毫升数,假设从 OLED 显示坐标(48, 4)开始,3 位数字,16 字体大小
						if(ml_count>=330)
						{
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  // 设置为高电平
												HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);  // 设置为高电平


						}
            OLED_ShowNum(48, 2, ml_countx,6, 16,0); // 显示毫升数,假设从 OLED 显示坐标(48, 4)开始,3 位数字,16 字体大小

            // 重置 pulse_count 为 0,开始计算下一个 1ml
            pulse_count = 0;
        }
    }
}

并且我把一瓶水330ml写成了固定值(这是我这里没有完善的部分,按照常理来说应该是做成用按钮控制。可以编辑一个图形界面之类的,可以设置,然后设置多少ml可以自动计量然后开关继电器)

但是,这个水泵真的是水太小了,放水桶里放了几天他生锈了,感觉他快坏了,勉强完成了任务。

image.png

用cubamx就是为了配置方便,省去了太多代码了。

还有GPIO部分的设置。

image.png

继电器的Input 接PA8或者PA5,通过

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  // 设置为高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);  // 设置为高电平

很简单的这样调用方法,就可以设置成高电平。使继电器控制水泵暂停。

本次的DIY到这就告一段落了。

期间谢谢论坛里的各位大佬发的帖子,从里面学到了很多知识,谢谢大家。





关键词: 流量     液体     检测仪     成果展示    

菜鸟
2025-01-21 01:10:21     打赏
2楼

代码忘记贴了,见压缩文件

water.zip


共2条 1/1 1 跳转至

回复

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