针对【Let'sdo第四期-液体流量检测仪DIY】进阶任务,使用stm32f103为核心,以下是实现流量计测量功能以及定量100ML、200ML水量控制的功能概述:
一、实现流量计测量功能
硬件组件:
针对您列出的STM32开发板 - NUCLEO-F103RB、OLED显示屏 - 104020208、抽水泵 - COM3700、液体流量传感器 - 314150001、继电器模块 - DFR0017以及电源模块 - DFR0140这些组件,以下是对它们如何协同工作以实现液体流量检测仪功能的分析:
1、组件功能概述
STM32开发板 - NUCLEO-F103RB
基于STM32F103RBT6设计的开发板,集成了强大的ARM Cortex-M3微控制器。
配备了ST-LINK/V2-1仿真下载器,方便进行调试和编程。
提供了Arduino接口和Morpho扩展排针,方便接入各种扩展板和传感器。
OLED显示屏 - 104020208
高对比度和广视角的显示屏,能够清晰地显示实时流量数据。
通过I2C接口与STM32开发板连接,方便进行数据传输和显示控制。
抽水泵 - COM3700
具备良好的流量控制能力,能够稳定地抽取液体。
通过继电器模块与STM32开发板连接,实现开关控制。
液体流量传感器 - 314150001
能够实时监测液体的流量,并将数据传输至STM32开发板进行处理。
高精度和快速响应特性使其成为流量检测系统的关键组件。
继电器模块 - DFR0017
用于控制抽水泵的开关,确保系统在需要时能够及时启动或停止。
兼容Arduino等开发平台,方便接入STM32开发板进行控制。
电源模块 - DFR0140
为整个系统提供稳定的电源,确保各个组件正常工作。
输入电压范围通常为6-12V,适应多种供电环境。
2、组件协同工作原理
电源模块首先为整个系统提供稳定的电源,确保STM32开发板、OLED显示屏、抽水泵、液体流量传感器和继电器模块等组件能够正常工作,工作电压Input voltage: 6-12V (Power Jack) 5V (USB) ,Output voltage:3.3V/5V ,Output current:500mA。
液体流量传感器实时监测液体的流量,并将数据传输至STM32开发板。STM32开发板通过读取传感器的数据,计算出实时的流量值。
OLED显示屏通过I2C接口接收STM32开发板传输的流量数据,并显示出来,以便用户监控流量变化。
当用户需要控制抽水量时,STM32开发板根据预设的水量(100ML、200ML)和实时流量数据,计算出需要开启抽水泵的时间。然后,通过控制继电器模块来开启或关闭抽水泵,实现定量的水量控制。
在整个过程中,STM32开发板作为系统的核心控制器,负责数据的读取、处理、显示以及控制信号的输出。通过其强大的处理能力和丰富的外设接口,实现了与各个组件的无缝连接和高效协同工作。
二、连接示意图
电路连接示意图:
水路连接图:
三、配置
各个功能引脚
定时器配置:
四、代码:
开机显示界面:
OLED_ShowString(5,15,(uint8_t *)"WWW.EEPW.COM",16,1); OLED_ShowChinese(5,35,0,16,1); OLED_ShowChinese(21,35,1,16,1); OLED_ShowChinese(37,35,2,16,1); OLED_ShowChinese(53,35,3,16,1); OLED_ShowChinese(69,35,4,16,1); OLED_ShowChinese(85,35,5,16,1); OLED_ShowChinese(101,35,6,16,1);
流量设定显示:
OLED_ShowChinese(37,0,7,16,1); OLED_ShowChinese(53,0,8,16,1); OLED_ShowChinese(5,0,2,16,1); OLED_ShowChinese(21,0,3,16,1); OLED_ShowString(69,0,(uint8_t *)":",16,1); sprintf(arry_dis,"%d", water_amount); OLED_ShowString(80,0,(uint8_t *)arry_dis,16,0); OLED_ShowString(110,0,(uint8_t *)"mL",16,1);
判断关闭继电器:
if(water_amount <= golbal_flow.acculat) { HAL_Delay(30); // HAL_Delay(500); if(water_amount <= golbal_flow.acculat) { //HAL_Delay(500); HAL_Delay(30); Relay1_OFF(); }
流量判定代码:
if (keySingle) { // 处理按键按下的情况 if (water == 1) { water_amount = 100; // 设置显示100 water = 2; // 改变状态标志 } else if (water == 2) { water_amount = 200; // 设置显示200 water = 1; // 改变状态标志 } }
实现定量100ML、200ML水量控制
软件实现:
使用STM32CubeMX创建工程项目,配置好相关外设接口,定时器、中断等。
编写代码读取液体流量传感器的脉冲信号,通过计算脉冲信号的频率或数量来确定液体的流量。
将流量数据通过OLED显示屏实时显示出来,以便用户监控。
五、实际输出
OLED开机显示界面:
串口输出结果:
实际操作视频:
https://www.bilibili.com/video/BV1jdfSYREQB/?spm_id_from=333.999.0.0&vd_source=0e4686609dd9c60a63b3f7fe54080c03
<iframe src="//player.bilibili.com/player.html?isOutside=true&aid=113900670423418&bvid=BV1jdfSYREQB&cid=28112193753&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>