Telink TL825X 安信可TB-02在水塔水位控制器中的应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


本人微信号:you-yu,欢迎互相探讨

前言

家在农村,之前一直用水都是自家挖的水井,每次用水都是用手压上来。
今年装了太阳能热水器,楼顶也装上了水塔,但是水井挖得比较浅,夏天经不住水泵抽,一会就没有水,水泵就在那里抽不上水,也不会停,费电费水泵!我看了手头上有几块安信可TB-02,就萌生做一个控制版的主意:


提示:以下是本篇文章正文内容,下面案例可供参考

一、控制板要解决什么问题?达到怎样的效果?

这里详细说一下整个控制板设计思路和实际解决问题:
为什么要设计这个控制板:家里的水井钻的深度不够,夏天有时候抽不满水塔,水塔自带的机械开关判断没上满水就让抽水机一直在那里工作,时间久了抽水机就容易发热烧坏。
在这里插入图片描述
为了解决这个问题,就需要检测抽水过程中上水管里面有没有水,这里用到非接触式液位传感器。非接触式液位传感器,有水输出低电平,无水输出高电平!非接触式液位传感器不能用在金属表面,所以就把水塔稍微改一点点。如下图所示:
在这里插入图片描述
工作原理:
1、 TB-02检测到低水位(水位低于低水位传感器,非接触式液位传感器输出高电平),
2、TB-02启动抽水机开始抽水,并且进水口非接触式液位传感器所用GPIO脚设置下降沿中断(没抽水之前进水管是没水的,进水口非接触式液位传感器输出电平为高电平,检测到进水转为低电平,电平由高变为低,所以用下降沿触发)
3、启动抽水后会出现两个情况,一个是成功上水,一个是抽不上水,我这里使用了一个硬件定时器,开始抽水的时候也启动计时,20秒内抽不上水,就判定为水井缺水,立即进入2小时倒计时,2小时候会重复这个步骤
4、启动抽水,抽上水后,TB-02立刻把进水口非接触式液位传感器所用GPIO脚设置上升沿中断,如果在抽水过程中,水位未达到指定高水位而抽不上水,进水口会从有水变成无水,进水口电平高低变高,TB-02判定水井缺水,立刻执行第三步骤,并把进水口非接触式液位传感器所用GPIO脚设置下降沿中断。
5、抽水一直抽到高水位后,TB-02判断水位到达,关闭抽水机,完成整个流程
使用情况:已经使用一个多月,目前运行良好,完全达到设计要求

二、硬件制作

注意:继电器一定要选用30A/250V的
在这里插入图片描述

3D外壳制作:
在这里插入图片描述
成品图如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、程序编写

代码如下(示例):

	if(reg_tmr_sta & FLD_TMR_STA_TMR0){//定时器中断
		++timer0_irq_cnt;
		reg_tmr_sta = FLD_TMR_STA_TMR0; //clear irq status
		if(check_water_in == 1 && timer0_irq_cnt ==12){//刚开始抽水,定时器计数超过10,证明没有水上来,
			check_water_in = 0;//打上标志,后面不再是第一次上水,而作异常处理
			printf("check Not_water MOTO IS STOP \r\n");
			gpio_write(GPIO_MOTO_PIN,moto_stop);//缺水关闭抽水机
			Not_water = 1;	//标志缺水停止
		}
		printf("timer0_irq_cnt %d\r\n",timer0_irq_cnt);
		if(timer0_irq_cnt == tick_time - 9){//转触发模式1秒后,开始抽水 3600-11
			printf("GPIO_MOTO_BEGIN %d\r\n",gpio_read(GPIO_WATER_PIN));
			gpio_write(GPIO_MOTO_PIN,moto_start);//开始抽水
		}
		//计时完成后
		if(timer0_irq_cnt >= tick_time){
			printf("tick time again \r\n");
			timer0_irq_cnt = 0;
		}
	}

经过测试,基本正常工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值