当前位置: 首页 > 科技观察

用鸿蒙开发板制作一个空压机储气罐自动排水装置

时间:2023-03-20 18:42:41 科技观察

使用鸿蒙开发板制作空压机储气罐自动排水装置该开发板是一款性价比很高的鸿蒙开发板,也可以用于工控领域。夏天来了,很多地方的空气比冬天潮湿很多,所以压缩空气的含水量也增加了。即使有冷干机,储气罐也会经常在罐底积水。如果不及时排出,将影响工厂气路和气动元件的正常运行。更不用说没有冷干机的送风系统了。许多工厂的储气罐仍采用人工排水,存在排水不及时、费时费力等问题。今年夏天,我们使用鸿蒙开发板完成了储气罐的自动排水。动手做准备:1、润和海王星HH-SLNPT102开发板。2.运行HiSpark_WIFI_IoT_OLED_VER.A显示板。3.运行HiSpark_WIFI_IoT_EXB_VER.A底板。4、电磁水阀1个,其尺寸与储气罐下部放水口相匹配,管路根据储气罐位置配套。5、3.3v继电器1个,按钮2个,杜邦线数条,电源线。6、编译环境,Ubuntu20.04.2LTS,烧录Windows环境SecureCRT7。程序框架,hihope/neptune_iot,版本1.0.1(2021.04.29)如图连接:1.NeptuneHH-SLNPT102开发板与HiSpark_WIFI_IoT_OLED_VER.A显示板直接插底板。2、继电器线圈由PB_10控制,接底板上的D10、3V3和GND。继电器输出端控制电磁水阀的通断,实现自动排水功能。3、蓝色按键接底板上的D1和GND,对应开发板上的PB_06。每按一次,电磁水阀关闭时间增加10分钟,最长间隔24小时。4.红色按钮接底板上的D0和GND,对应开发板上的PB_07。每按一次,电磁水阀开启时间增加1秒,单次排水最长时间为3分钟。5、按一次开发板板载按键PB_09,切换到一种工作模式,即:常开、常闭、间歇排水模式。主要程序代码如下:#include#include#include"ohos_init.h"#include"cmsis_os2.h"#include"wifiiot_gpio.h"#include"wifiiot_gpio_ex.h"#include"oled_ssd1306.h"#include"wifiiot_gpio_w800.h"intworking=0;//电磁水阀工作状态0/on1/offintm=60;//间歇工作电磁水阀关闭时间初始值1分钟intn=5;//间歇工作电磁水阀开启时间初值为5秒inttimes=0;//时间,单位秒enumState{ON=0,OFF,SPARK,};enumStateg_State=SPARK;staticvoidDrainageTask(void*arg){(void)arg;OledInit();OledFillScreen(0x00);OledShowString(0,1,"AirComprwssor",2);//OledShowString(0,5,"AutoDrainage",2);osDelay(2000);OledFillScreen(0x00);while(1){OledShowString(0,0,"****************",2);OledShowString(0,2,"*AutoDrainage*",2);//OLED固定显示OledShowString(0,4,"**",2);OledShowString(0,6,"**",2);osDelay(500);staticcharline[32]={0};staticcharline1[32]={0};switch(g_State){caseON://电磁水阀常开工作模式GpioSetOutputVal(WIFI_IOT_GPIO_PB_10,WIFI_IOT_GPIO_VALUE0);snprintf(line,sizeof(line),"**");snprintf(line1,sizeof(line1),"*ON");break;caseOFF://电磁水阀常闭工作模式GpioSetOutputVal(WIFI_IOT_GPIO_PB_10,WIFI_IOT_GPIO_VALUE1);snprintf(line,sizeof(line),"**");snprintf(line1,sizeof(line1),"*OFF");break;caseSPARK://电磁水阀间歇工作模式次数++;if(working==0)//Drain时序控制{snprintf(line,sizeof(line),"*ONRemaining");snprintf(line1,sizeof(line1),"*%dsec",n-times);//二次显示,倒计时if(times=n){working=1;times=0;}}else//电磁水阀关闭定时控制{snprintf(line,sizeof(行),"*OFFRemaining");snprintf(line1,sizeof(line1),"*%dmin",(m-times)/60);//分钟显示,倒计时if(times=m){working=0;times=0;}};break;default:break;}OledShowString(0,4,line,2);//OLED动态显示OledShowString(0,6,line1,2);//OLED动态显示osDelay(500);}}staticvoidGpioIsr(char*arg)//板载按键中断模式切换工作模式{(void)arg;enumStatenextState=SPARK;printf("P9Press!\n");GpioSetIsrMask(WIFI_IOT_GPIO_PB_09,1);switch(g_State){caseON:nextState=OFF;break;caseOFF:nextState=SPARK;break;caseSPARK:nextState=ON;break;default:break;}g_State=nextState;GpioSetIsrMask(WIFI_IOT_GPIO_PB_09,0);}staticvoidF1(char*arg)//外部F1按键中断方式调节阀关闭时间,最长24小时,步长10分钟{(void)arg;printf("P6Press!\n");GpioSetIsrMask(WIFI_IOT_GPIO_PB_06,1);if(m>86400){m=0;}m=m+600;times=0;GpioSetIsrMask(WIFI_IOT_GPIO_PB_06,0);}staticvoidF2(char*arg)//外接F2按键中断方式调整开启时间,最长3分钟,步长1秒{(void)arg;printf("P7Press!\n");GpioSetIsrMask(WIFI_IOT_GPIO_PB_07,1);if(n>180){n=0;}n=n+1;times=0;GpioSetIsrMask(WIFI_IOT_GPIO_PB_07,0);}staticvoidDrainageDemo(void){osThreadAttr_tattr;GpioInit();GpioSetDir(WIFI_IOT_GPIO_PB_10,WIFI_IOT_GPIO_DIR_OUTPUT);//通过继电器控制电磁水阀底板的D10。IoSetPull(WIFI_IOT_GPIO_PB_09,WIFI_IOT_GPIO_ATTR_PULLHIGH);GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_09,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW,GpioIsr,NULL);GpioSetDir(WIFI_IOT_GPIO_PB_06,WIFI_IOT_GPIO_DIR_INPUT);//外置P6按钮,中断输入。底板的D1IoSetPull(WIFI_IOT_GPIO_PB_06,WIFI_IOT_GPIO_ATTR_PULLHIGH);GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_06,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW,F1,NULL);GpioSetDir(WIFI_IOT_GPIO_PB_07,WIFI_IOT_GPIO_DIR_INPUT);//外置P7按键,中断输入。底板的D0IoSetPull(WIFI_IOT_GPIO_PB_07,WIFI_IOT_GPIO_ATTR_PULLHIGH);GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_07,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW,F2,NULL);attr.name="DrainageTask";attr.attr_bits=0U;attr.cb_mem=NULL;attr.cb_size=0U;attr.stack_mem=NULL;attr.stack_size=4096;attr.priority=osPriorityNormal;if(osThreadNew(DrainageTask,NULL,&attr)==NULL){printf("[DrainageDemo]FaliedtocreateDrainageTask!\n");}}APP_FEATURE_INIT(DrainageDemo);编译下载后重启开发板,显示和控制正常。按下板载PB_09按键切换到常开模式,再按一下切换到常闭模式,相应的OLED屏会显示。再次按下PB_09按键,进入间歇工作模式。电磁水阀每次打开一段时间排水(开启时间长短由红色按钮F2调节),关闭一段时间(时间长短由F2调节)蓝色按钮F1)。压缩机储气罐底部水自动排除。每次启闭时间的长短可根据各压缩空气系统的实际情况进行调整。Neptune开发板由于其高性价比,在工业领域有着广阔的应用空间。比如本文中的储气罐排水控制器还可以与空压机联动,还可以利用网络功能实现远程监控等,期待广大鸿蒙开发者探索更多的应用领域。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区