太阳作为免费的清洁能源,利用得当非常实惠方便,坐标大同市偏远县区农村,空气清新无雾霾,光照条件良好,计划利用太阳能取暖。
分析:太阳能电池板和太阳能真空热水管两种途径,太阳能电池板转换效率较低,需配备电池组,成本较高,放弃!
太阳能真空管,技术比较成熟,成本相对较低,安装需要专业技术,管路防冻等困难较多;
最终选择太阳能真空管方案小试效果,某个宝弄的50管太阳能工程联箱,带支架运费共1450元,太阳能热水管及接头若干,循环泵一个100+,水空调一个400+,储水桶暂用水桶代替,其余配件过程中描述。
利用不长的假期开始组装,真空管安装不小心碰碎2根,好在卖家多发有结余有惊无险;管路三通各部件连接到位,安装顺序:水桶——水泵——单向阀——太阳能联箱——水空调——水桶,室外部分管路做保温,特别说明太阳能管最顶端需安装自动排气阀,用于排空管路积水时进气,否则强大的大气压强回把真空管吸进去,把联箱吸瘪,开始因为排气阀太小,导致联箱已被吸瘪,等待通水测试;
首次上水要在早晨太阳没出来之前,太阳出来管内温度太高回造成爆管,上水就比较不顺利,水泵买的是暖气循环泵,离心泵,100W,功率小上水一半后上不动了,多次寻找原因后无法解决,直接接到自来水先利用自来水压力完成上水,冬天光照较弱,暂时不需要循环;临近春节,再买水泵已经不发货了,没办法,找到一个喷农药用的配件隔膜泵,压力没问题,噪音太大,暂时忍受吧!还有不知道隔膜泵在热水工作能撑多久!
进入正题,控制思路简单介绍一下:元件:单片机STC12单片机,光线传感器模块,继电器模块。控制思路:白天:管顶温度高于60度,循环泵开始循环,开20秒停20秒;管顶温度高于90度,循环泵一直工作;低于3度,循环泵开始工作(防冻);夜晚:管路温度低于3度,循环泵开始工作,管路温度高于10度,循环泵停止工作;
测温部分:DS18B20温度传感器,暂用4个,分别检测:1.联箱顶部排气阀温度防止结冰影响工作,2.联箱顶部温度,检测水温,决定是否循环;3.联箱底部底部温度,总想测一下,暂时没用;4.管路温度,测温决定水泵循环防止冻管;
增加功能:温度数据上传物联网,远程监控:乐为物联!
制作出来的实物图如下:
单片机源程序如下:
- #include"shuiliu.h"
- #include"ESP8266.h"
- //#include<STC12C5A60S2.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar table12[]="当前水流:00.0L/h";//数组形式
- uint shui,js,ls; //shui传感器计数,js定时器1计数, ls流速
- /*******************************************************************************
- * 函 数 名 : Int0Init()
- * 函数功能 : 设置外部中断0
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void Int0Init() //外部中断0
- {
- //设置INT1
- IT0=1;//跳变沿出发方式(下降沿)
- EX0=1;//打开INT1的中断允许。
- EA=1;//打开总中断
- }
- void InitTimer1(void)
- {
- AUXR = AUXR|0x40; // T1, 1T Mode
- TMOD = 0x10;
- TH1 = 0x0D4;
- TL1 = 0x0CD;
- EA = 1;
- ET1 = 1;
- TR1 = 1;
- }
- void diplaysl(void) //写指令
- { shui=0;
- js=0;
- ls=0;
- EX0=1;
- ET1=1;
- Delay_ms(400);
- table12[9]=ls/100+0x30;
- if(table12[9]==0)
- table12[9]=0x2D;
- table12[10]=ls%100/10+0x30;
- table12[12]= ls%10+0x30;
- Display_String(1, table12);
- }
- /*******************************************************************************
- * 函 数 名 : Int0() interrupt 2
- * 函数功能 : 外部中断0的中断函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void Int0() interrupt 0 //外部中断1的中断函数
- { //过零中断计数 k,n调温计时
- //ET1=1; //延时消抖
- shui++;
- }
- void Timer1Interrupt(void) interrupt 3
- {
- TH1 = 0x0D4; //1ms
- TL1 = 0x0CD;
- //add your code here!
- js++;
- if(js>=1000) //10ms
- {
- EX0=0;
- ET1=0;
- ls= shui*60/45;//shui计数除以450除以10=流速L/s; shui计数除以450X6=流速L/min;
- //Display_String(1, table12);
- shui=0;
- js=0;
- }
- }
复制代码
所有程序51hei提供下载:
简单测试.rar
(472.63 KB, 下载次数: 23)
|