APP下载

基于无线技术的便携式浮球给排水控制系统

2022-10-17杨光范志华苏成贵钟文才许光明李爱琴

农业与技术 2022年19期
关键词:排水泵浮球寄存器

杨光 范志华 苏成贵 钟文才 许光明 李爱琴

(吉林省农业机械研究院,吉林 长春 130022)

引言

目前市面上有已经有一些相关产品,但是采用的控制方式有以下弊端:有线信号传输,不方便连接和安装;固定的液位传感器由于裸露的部件容易被水中杂物缠绕包裹,影响液面位置的判定,导致误判。项目组为了解决此问题,设计了一套无线便携式浮漂排水控制器,该装置具有以下优势:采用无线模式进行信号传输,便于安装,只需要放入水中即可,不需要连线;传感器选用重力球机械感应原理,不受水质限制,经久耐用;可以替代人工监控储水液面,在水位较低时停止排水,水位升高到一定程度时启动排水,无需人员现场监控,通过设置可实现供水排水功能转换。本项目利用NRF24L01模块来实现各个部件的无线通讯,其工作频段在2.4~2.5GHZ,该频段是世界通用ISM频段(不受管制的频段),通信距离可达300m。

1 系统设计及工作原理

1.1 系统设计思路

本方案是一套无线控制的浮球控制装置系统,能够代替人工对监控水面进行监管控制,按照人工设定功能及时进行相应,实现水泵及时排水给水功能[1],见图1。

图1 整体示意图

1.1.1 排水工作状态解析

浮球在漂浮时能够在液面上保持竖立状态,该状态可以指导并控制排水泵开展排水工作。排空水池后,浮球在池底时保持横卧状态,并控制排水泵停机。

1.1.2 供水工作状态解析

排空水池后,浮球在池底时保持横卧状态,并控制注水泵加水。水池加满后,通过水位感应器控制注水泵停机。

1.1.3 无线装置

本项目设计4种无线装置:主机、供水泵及排水泵控制装置、浮球液位控制器。主机控制器功能:供排水选择、与其他3个装置进行通讯、采集满水信号。供水控制装置功能:该装置可以接收无线信号自带小型可控制继电器,可以输出控制220V信号,以此来控制下一级的启动水泵的继电器,所以可以串联接入原有的供水泵控制系统,对供水泵进行控制。排水控制装置可以串联接入排水泵原有的控制系统。浮球控制装置功能:定时向主机控制器传输液位是否下降至底部信息,见图2。

图2 浮球装置微动开关

1.2 单片机与NRF24L01实现一对多的工作原理

本项目制作的共4个装置,均采用单片机加NRF24L01模块组合,采用嵌入式编程设计,见图3。

图3 无线模块与单片机连接

本项目的工作原理是通过测量水池液位的满和空2个状态及主机设置的排水还是供水目的来实现供水和排水。本项目所研究系统共有4个部件组成,分别是主机控制器、排水泵控制器、供水泵控制器、浮球传感器。主机的功能是接收水池边的满水信号和浮球的空水信号,再按照排水供水功能选项指挥排水装置控制排水泵,或指挥供水装置控制供水泵。供(排)水控制器的功能是接收主机的指令并通过供(排)水空开箱控制供(排)水泵工作。浮球传感器的功能是测量到水池液面已经近似空水位状态时发送空水位信号给主机控制器。

主机和3个从机对以上4个条件全部设置一致,如果是主机先发送数据,理论上3个从机都会收到数据,所以这样做是不行的。1个无线节点对多个无线节点的通讯可以通过修改以下内容实现:频道、地址、频道和地址。如,从机1的频道是10,从机2的频道是30,从机3的频道是50,从机4的频道是70(频道的值可以是0~125,共126个频道)[2];频道接近的话,有可能出问题,如,从机1的频道是20,如果设置从机2的频道是21的话,主机给从机1发送数据时,从机2也有可能收到数据。所以要向上面一样,频道距离拉开一些。从机的频道定义好了,主机要和从机1通信,自身就把频道改为从机1一样的频道10,就可以发送数据,此时,从机2~4由于频道不同,是收不到数据的。同样,主机要和从机2通信,就把自己的频道改为和从机2一样的频道30,然后就可以发送数据。

以下程序是通过按键0和2来对从机1地址进行修改的程序:

if(KEY==0)//按下KEY1

{

NRF_CE=0;//拉低CE引脚

W_Reg(WRITE_REG+RF_CH,10);//修改为从机1的频道

NRF_CE=1;//拉高CE引脚

TxPacket(rece_buf);//发送数据

}

else if(KEY2==0)//按下KEY2

{

NRF_CE=0;//拉低CE引脚

W_Reg(WRITE_REG+RF_CH,30);//修改为从机2的频道

NRF_CE=1;//拉高CE引脚

TxPacket(rece_buf);//发送数据

}

1.3 单片机与NRF24L01的接口设置

本项目用单片机的P1.1~P1.7连接NFR24L01模块。

图4 单片机与NRF24L01的接口设置

2 系统软件设计

本系统共涉及4个模块的程序设计,主机的功能相当于指挥官,浮球是观察兵,排水和供水装置相当于陆战队员。所以要对4个模块进行分别的程序编写。下面以主机编写为例进行介绍,其他程序编写与之类似。

2.1 主机程序编写流程

NRF24L01模块与单片机可以有效连接,但是NRF24L01的内部寄存器比较多,设置起来比较复杂[3],具体设置程序可以按说明书的要求编写。本项目采用C语言,通过uVision来实现。作为主机程序顺序图的编写可见图5。

2.2 NRF24L01的读写模式

NRF24L01有接收、发送、待机模式II、待机模式I、掉电模式,其工作模式由CE和寄存器内部PWR_UP位状态、PRIM_RX位状态共同控制,由CE引脚电平来控制[4]。

NRF24L01有寄存器25个,这些寄存器起到了状态指示、地址宽度、读写配置、使能允许、射频设置等。可以通过对寄存器的设置来实现相应的功能。配置寄存器读写程序一般都是按照时序图完成,在这里不做赘述。

2.3 nRF24L01通讯功能自测

本项目中需要对单片机与nRF24L01的通讯进行测试,以便设备调试和维护,设置自测按键,在主程序中增加按键扫描程序,当扫描到自测开关被按下后,单片机向nRF24L01某个寄存器写入一个数据,再把数据读取出来比对,如果数据一致则证明通讯没有问题,可以点亮通讯正常指示灯,如果数据不一致或没有返回数据,则点亮通讯失败指示灯。

自测程序:

void nrf_zc(void)

{

SPI_R_W_Reg(WRITE_REG | CONFIG,0x50);

if(SPI_Read(CONFIG)==0x50)

{

int i;

for(i= 0;i<3;i++)

{

LED4=0;

delay_ms(300);

LED4=1;

delay_ms(300);

}

}

else if (0x50 !=SPI_Read(CONFIG))

{

int i;

for(i=0;i<4;i++)

{

LED5=0;

delay_ms(300);

LED5=1;

delay_ms(300);

}

}

}

以上自测程序是单片机向寄存器CONFIG中写入0x50数据,然后再读取CONFIG中的数据并与0x50进行比较,如果相等则LED4灯闪烁3次,如果不相等,则LED5灯闪烁4次。

2.4 软件程序调试技巧

在NRF24L01点对点或点对多的无线通讯中,有些程序需要反复调试,调试过程如果遇到没有正常反应的情况下是比较麻烦的,所以本项目购置了USB加NRF24L01模块来作为中转实现程序的调试,可以将接收信号传入电脑,通过串口助手对数据进行显示和分析。这样比较直观地看到接收的数据。一旦调试成功后再与另外的无线节点进行通讯,成功率就很高。

3 硬件设计

NRF24L01的功能解读,该芯片的主要特点:2.4G全球开放工业、科学、医疗3个领域的频段(ISM),免许可证使用;最高工作速率2Mbps,最低工作速率250Kbps;125个可选的频道,满足多点通信和调频通信的需要,值得注意的是这是理论值,实际工作中应该保持频道的间隔不要太近,以免造成信号干扰;内置CRC检错功能。NRF24L01采用SPI通讯协议,这个协议中在通讯命令发出后有接收反馈功能,如果接收不到反馈信号,则证明数据或命令没有发送成功,所以通讯质量比较高;低工作电压(1.9~3.6V)。如图6所示。

图6 NRF24L01 电路板

各管脚定义:1.GND;2.VCC;3.CE;4.CSN;5.SCK;6.MOSI;7.MISO;8.IRQ。具体说明:1.GND地线。本实验功能简介:在2块51开发板上下载NRF24L01的主从程序后,在主机中进行排水和供水的选择,实现系统排水或供水的功能。模块接口与开发板对应的管脚原理图,如图7。

图7 NRF24L01无线模块和开发板的连接图

本系统共有4张图,其中供水泵无线控制器的电路原理图如图8。用单片机的P1.2~P1.7通过接口J44连接NRF24L01的MISO、IRQ、MOSI、CS、SCK、CE。P2.0作为电机驱动的输出信号端口。用P0.0~0.3作为工作状态指示灯的输出控制端。其他3个板子的连接方式与之类似。

4 关键技术及实现

4.1 通讯地址的选择

NRF24L01模块具有一对多通讯功能,地址需要分配。4个节点都可以是接收模式,也可以是发送模式,彼此之间随时可以通讯,为了彼此通讯顺畅,多数时间都是接收模式,谁想发言谁变成发送模式,发完后马上变身接收模式,这样可以保证信号不打架,当然同时出现2个以上节点同时变身发射模式的概率非常低。只要节点X发送地址和节点XX的接收地址一样,节点XX就会收到发送来的数据,接收数据完成后节点XX的IRQ就会有中断产生。当RX_DR或TX_DS或MAX_RT为1时,nRF的硬件引脚IRQ自动产生中断。该引脚复位需要通过CONFIG来进行设置。图9是本项目中4个节点的收发模式的地址表。

图8 控制排水泵电路图

图9 该系统4个节点地址分配图

4.2 程序编写的顺序

在对NRF24L01了解以后,首先编写底层程序:底层程序是NRF24L01依据SPI开展工作的基本程序,其是依据工作时效完成并建立的,包括对字节、数据的读和写程序。NRF24L01采用SPI通信协议采用主从方式工作,全双工,同步(需要时钟线)通信总线,SCK信号线只由主设备控制,且数据为一位一位的进行传送SPI的数据输入和数据输出线独立。MOSI的意思就是说如果此芯片作为主机时,该引脚(MOSI引脚)就是输出,如果此芯片作为从机时,该引脚(MOSI)引脚就是输入。MISO与其道理类似。由于SPI采用2个移位寄存器来实现数据的交换,所以在8个时钟过后,主机的数据会发送到从机中,同时,从机的数据也会发送到主机中。底层驱动时序:数据为先发高位,再发低位,在时钟SCK的上升沿,数据发送出去。通信前需要先发送命令位,即S7~S0为status寄存器位,D7~D0为数据位。

NRF24L01的SPI同步读写时序程序:

uchar SPI_RW(uchar reg)//在发送一字节的同时,还会收到一字节的数据

{

uchar bit_ctr;

for(bit_ctr=0;bit_ctr<8;bit_ctr++)

{

MOSI=(reg & 0x80);

reg=(reg<<1);

SCK=1; //拉高SCK时钟线

reg |=MISO;//获取从机发给主机的一位数据,将其放到主机寄存器的最低位

SCK=0;//拉低SCK时钟线

}

return(reg); //返回从机发给主机的数据

驱动层程序:驱动程序是依据底层程序编写的对NRF24L01各种寄存器的配置与设置程序,包括了对所有寄存器的初始配置。

应用层程序:为保证项目功能实现而编写的程序,包括水泵的启停关系程序,键盘的扫描程序,主机对传感器信号的采集程序等。下面是一段供排水命令程序:

voidSupply(void) //发送是否供水命令

{

Change_TX_RF_1(60);//调整频段为供水频段60,与供水泵通讯

if(KEY4==1) //空水标志指示空水,说明没水了。需要注水,启动注水泵

{

TX_BUF[0]=1; //数据1送到缓存,1代表应该注水,启动注水泵

TX_Mode(TX_BUF); //把nRF24L01设置为发送模式并发送数据

Check_ACK(0); //等待发送完毕,清除TX FIFO

Supply_blink(5); //闪烁供水泵通讯灯。快闪烁5次

}

if(KEY3==1) //满水标志指示水满了,需要停止注水,停止注水泵

{

TX_BUF[0]=0;//数据0送到缓存,0代表不应该注水,停止注水泵

TX_Mode(TX_BUF);

Check_ACK(0);

Supply_blink(5); //闪烁供水泵通讯灯。快闪烁5次

}

Change_TX_RF_1(40); //重新调回频段为主机频段40

RX_Mode(); //转化为接收模式

delay_ms(250);

finish_blink(3); //闪烁发送完成灯。慢闪烁3次

}

void Drainage(void) //发送是否排水命令

{

Change_TX_RF_1(50); //调整频段为排水频段50,与排水泵通讯

if(KEY3==0) //满水标志指示水满了,需要启动排水,启动排水泵

{

TX_BUF[0]=1; //数据1送到缓存,1代表应该排水,启动排水泵

TX_Mode(TX_BUF);

Check_ACK(0);

Drainage_blink(5); //闪烁排水泵通讯灯。快闪烁5次

}

if(KEY4==0) //空水标志指示空水,KEY4等于1,说明水空。不需要排水,停止排水泵

{

TX_BUF[0]=0; //数据0送到缓存,0代表不应该排水,停止排水水泵

TX_Mode(TX_BUF);

Check_ACK(0);

Drainage_blink(5); //闪烁排水泵通讯灯。快闪烁5次

}

Change_TX_RF_1(40); //重新调回频段为主机频段40

RX_Mode(); //转化为接收模式

delay_ms(250);

finish_blink(3); //闪烁发送完成灯。慢闪烁3次

}

5 结语

无线浮球控制器是一个小型产品的变革式发展,由于对无线控制技术的引用,会提高浮球液位控制器的应用范围,增加其适应性。该系统应用场景多,携带方便,安装快捷,传输信号质量可靠,设定好初始状态后无人值守,省时省力。同时对无线技术的应用可以推广到其他自动测控领域。

猜你喜欢

排水泵浮球寄存器
《在气流中悬浮定向自转的浮球会失重 自转速度越快失重越多》
Lite寄存器模型的设计与实现
核电厂缆式浮球液位开关选型及安装方式的改进
拱北隧道排水泵控制方案优化设计浅析
广东省中型灌溉排水泵站更新改造规划
分簇结构向量寄存器分配策略研究*
排水泵站的优化运行管理
不同配重的浮球覆盖下干旱区平原水库的节水效率对比分析
LP(LT)型立式长轴排水泵的研制及应用
高速数模转换器AD9779/AD9788的应用