这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【液体流量检测仪DIY】4、综合实现(扩展任务失败)

共2条 1/1 1 跳转至

【液体流量检测仪DIY】4、综合实现(扩展任务失败)

高工
2025-02-04 17:34:17     打赏

        我们已经实现了OLED的显示,最主要是这一部分确实是需要进行驱动实现的,相对复杂一点,接下来就是水泵的控制和水量传感器的采集。

硬件介绍:

       水泵的控制是通过继电器实现的,实际上就是给电就转,不给电就停的一个状态,反映到单片机上的控制实际上就是一个IO就可以实现,这次活动配置的一个继电器模块是Gravity系列数字继电器模块,模块专为低压主控器设计,可以稳定工作在3V供电场景下,对于树莓派、Arduino 101、Arduino M0等具有良好的兼容性。此外,模块具有宽电压供电特性,在2.8~5V供电下,对于1.8V的设备信号也可以做到良好的识别与支持。继电器是一种典型的弱电控制强电的应用,由于主控器(单片机)无法直接控制交流电、大电流、大电压等设备,必须通过中间层(继电器)来实施,所以继电器也是最常用的电子设备之一。DFRobot 数字继电器模块采用优质继电器,最高可承受10A大电流,使用寿命可达100万次。板载一个红色的LED工作状态指示灯,当常开触点闭合时,LED点亮;常开触点断开时,LED熄灭。接线端设有常开触点接口 (NO) 和常闭触点接口 (NC),方便扩展使用。模块采用Gravity-3Pin接口(PH2.0-3),即插即用,无需焊接,非常方便。

image.png

        不过有一点比较不好的是,不同的模块和传感器或者电机之间的接口都不统一,需要我们自己做转接口,言归正传,用继电器的控制还是很简单的,接下来就流量传感器:image.png

        水流量传感器是一种由塑料阀体、水转子和霍尔效应传感器组成的装置。当水流经过转子时,转子会转动,其速度会随着流量的变化而改变。霍尔效应传感器会输出相应的脉冲信号。这种传感器适用于用于检测饮水机或咖啡机中的流量。可以看到只有三个引脚,我们一定要知道的是需要采集的是什么信号,以及各引脚定义:

image.png

        液体流量传感器是一个关键的器件,通过输出占空比为50%的方波脉冲来实现水流速的测量。该传感器的频率与水流速成正比,通过测量输出信号的频率可以得到准确的水流速数值。基于水流速的测量结果,可以进一步计算和累计水流量。数据手册中显示的水平试验脉冲频率(Hz) = 7.5Q, Q为流量,单位为L/min。(结果在+/- 3%范围内),这里就涉及到算法了,采集频率的方法有多种,比较快速的可以使用定时器的捕获功能,不过本脉冲的采集明显不快,甚至与低速的时候会超过1Hz,这个就不适合定时器的捕获功能老人,采用定时加外部脉冲的方法,通过时间差的方式进行频率的计算。

        通过功能分析,我们直接进行需求分析,发现一个用户按键是不够的,我们还需要通过外扩按键的方式增加两个,一个进行模式的切换(连续和定量模式),一个进行定量范围的选择切换(100ml和200ml),一个进行启动(连续模式的启动和停止与定量模式的启动),均使用外部中断的方式进行采集,增加的按键模块如下:

image.png

        基本原理图如下:

image.png

软件介绍

        软件功能方面主要就是添加了模式的切换与开启,这一部分是通过外接按键等共三个按键共同完成的:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == B1_Pin)
    {
        if(Run_Flag == 0)
        {
            Run_Flag =1;
        }
        else
        {
            Run_Flag = 0;
        }
        HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
    }
    else if(GPIO_Pin == Mode1_Pin)
    {
        if(Work_Mode1 ==0)
        {
            Work_Mode1 = 1;
            Run_Flag = 0;
        }
        else if(Work_Mode1 ==1)
        {
            Work_Mode1 = 0;
            Run_Flag = 0;
        }
        HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
    }
    else if(GPIO_Pin == Mode2_Pin)
    {
        if(Work_Mode1 ==1 && Work_Mode2 ==0)
        {
            Work_Mode2 = 1;
            Run_Flag = 0;
        }
        else if(Work_Mode1 ==1  && Work_Mode2 ==1)
        {
            Work_Mode2 = 0;
            Run_Flag = 0;
        }
        HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
    }

}

    而在while中进行处理:

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
        HAL_Delay(10);
        if(!(Run_Flag == Run_Flag_show))
        {
            if(Run_Flag == 0)
            {
                HAL_GPIO_WritePin(Start_GPIO_Port,Start_Pin,GPIO_PIN_RESET);
                HAL_Delay(200);
                OLED_ShowString(40,2,"stop ",12, 0);
            }
            else
            {
                HAL_GPIO_WritePin(Start_GPIO_Port,Start_Pin,GPIO_PIN_SET);
                OLED_ShowString(40,2,"start ",12, 0);
            }
            Run_Flag_show = Run_Flag;
        }
        if(Work_Mode1_show != Work_Mode1)
        {
            if(Work_Mode1 == 0)
            {
                OLED_ShowString(40,1,"Mode1",12, 0);
                OLED_ShowString(80,1,"     ",12, 0);
            }
            else
            {
                OLED_ShowString(40,1,"Mode2",12, 0);
                if(Work_Mode2 == 0)
                    OLED_ShowString(80,1,"100ml",12, 0);
                else
                    OLED_ShowString(80,1,"200ml",12, 0);
            }
            Work_Mode1_show = Work_Mode1;
        }
        if(Work_Mode2_show != Work_Mode2)
        {
            if(Work_Mode2 == 0)
            {
                OLED_ShowString(80,1,"100ml",12, 0);
            }
            else
            {
                OLED_ShowString(80,1,"200ml",12, 0);
            }
            Work_Mode2_show = Work_Mode2;
        }
        
  }

        我们进行不实接水泵的情况下所有的的逻辑操作与现实都是正确的,而实际给水泵通电并开启后就不行了,干扰情况特别严重,实际可查看成果展示,可以控制泵的开启,但是其他所有的采集与控制就都混乱了,怀疑是电回路的干扰,不过已经将泵的控制与其他部分都分开了,还是没有效果。

        成果展示如下:

【Lets do第四期成果展示】 https://www.bilibili.com/video/BV1qrNAegEhX/?share_source=copy_web&vd_source=2a202874768d99b0acaa1aceb9a9b93e






关键词: 成果贴    

专家
2025-02-04 17:51:43     打赏
2楼

感谢分享


共2条 1/1 1 跳转至

回复

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