找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2503|回复: 1
打印 上一主题 下一主题
收起左侧

太阳能热水器工程联箱自动控制系统 单片机源程序

[复制链接]
跳转到指定楼层
楼主
太阳作为免费的清洁能源,利用得当非常实惠方便,坐标大同市偏远县区农村,空气清新无雾霾,光照条件良好,计划利用太阳能取暖。
      分析:太阳能电池板和太阳能真空热水管两种途径,太阳能电池板转换效率较低,需配备电池组,成本较高,放弃!
      太阳能真空管,技术比较成熟,成本相对较低,安装需要专业技术,管路防冻等困难较多;
最终选择太阳能真空管方案小试效果,某个宝弄的50管太阳能工程联箱,带支架运费共1450元,太阳能热水管及接头若干,循环泵一个100+,水空调一个400+,储水桶暂用水桶代替,其余配件过程中描述。
      利用不长的假期开始组装,真空管安装不小心碰碎2根,好在卖家多发有结余有惊无险;管路三通各部件连接到位,安装顺序:水桶——水泵——单向阀——太阳能联箱——水空调——水桶,室外部分管路做保温,特别说明太阳能管最顶端需安装自动排气阀,用于排空管路积水时进气,否则强大的大气压强回把真空管吸进去,把联箱吸瘪,开始因为排气阀太小,导致联箱已被吸瘪,等待通水测试;
       首次上水要在早晨太阳没出来之前,太阳出来管内温度太高回造成爆管,上水就比较不顺利,水泵买的是暖气循环泵,离心泵,100W,功率小上水一半后上不动了,多次寻找原因后无法解决,直接接到自来水先利用自来水压力完成上水,冬天光照较弱,暂时不需要循环;临近春节,再买水泵已经不发货了,没办法,找到一个喷农药用的配件隔膜泵,压力没问题,噪音太大,暂时忍受吧!还有不知道隔膜泵在热水工作能撑多久!
      进入正题,控制思路简单介绍一下:元件:单片机STC12单片机,光线传感器模块,继电器模块。控制思路:白天:管顶温度高于60度,循环泵开始循环,开20秒停20秒;管顶温度高于90度,循环泵一直工作;低于3度,循环泵开始工作(防冻);夜晚:管路温度低于3度,循环泵开始工作,管路温度高于10度,循环泵停止工作;
      测温部分:DS18B20温度传感器,暂用4个,分别检测:1.联箱顶部排气阀温度防止结冰影响工作,2.联箱顶部温度,检测水温,决定是否循环;3.联箱底部底部温度,总想测一下,暂时没用;4.管路温度,测温决定水泵循环防止冻管;
      增加功能:温度数据上传物联网,远程监控:乐为物联!

制作出来的实物图如下:


单片机源程序如下:
  1. #include"shuiliu.h"
  2. #include"ESP8266.h"
  3. //#include<STC12C5A60S2.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. uchar  table12[]="当前水流:00.0L/h";//数组形式
  7. uint shui,js,ls;                          //shui传感器计数,js定时器1计数,        ls流速
  8. /*******************************************************************************
  9. * 函 数 名         : Int0Init()
  10. * 函数功能                   : 设置外部中断0
  11. * 输    入         : 无
  12. * 输    出         : 无
  13. *******************************************************************************/
  14. void Int0Init()                         //外部中断0
  15. {
  16.         //设置INT1
  17.         IT0=1;//跳变沿出发方式(下降沿)
  18.         EX0=1;//打开INT1的中断允许。        
  19.         EA=1;//打开总中断        
  20. }
  21. void InitTimer1(void)
  22. {
  23.          AUXR = AUXR|0x40;  // T1, 1T Mode
  24.      TMOD = 0x10;
  25.     TH1 = 0x0D4;
  26.     TL1 = 0x0CD;
  27.     EA = 1;
  28.     ET1 = 1;
  29.     TR1 = 1;
  30. }
  31.    void diplaysl(void) //写指令
  32. {        shui=0;
  33.         js=0;
  34.         ls=0;
  35.         EX0=1;
  36.         ET1=1;
  37.         Delay_ms(400);
  38.         table12[9]=ls/100+0x30;
  39.         if(table12[9]==0)
  40.         table12[9]=0x2D;
  41.         table12[10]=ls%100/10+0x30;
  42.         table12[12]= ls%10+0x30;
  43.         Display_String(1, table12);
  44.         }
  45. /*******************************************************************************
  46. * 函 数 名         : Int0()        interrupt 2
  47. * 函数功能                   : 外部中断0的中断函数
  48. * 输    入         : 无
  49. * 输    出         : 无
  50. *******************************************************************************/

  51. void Int0()        interrupt 0                //外部中断1的中断函数
  52. {                                 //过零中断计数        k,n调温计时
  53. //ET1=1;                 //延时消抖
  54. shui++;        
  55. }


  56. void Timer1Interrupt(void) interrupt 3
  57. {
  58.     TH1 = 0x0D4;           //1ms
  59.     TL1 = 0x0CD;
  60.     //add your code here!
  61.         js++;
  62.         if(js>=1000)  //10ms
  63.         {
  64.         EX0=0;
  65.         ET1=0;
  66.         ls= shui*60/45;//shui计数除以450除以10=流速L/s;        shui计数除以450X6=流速L/min;
  67.         //Display_String(1, table12);

  68.         shui=0;
  69.         js=0;

  70.         }
  71. }
复制代码

所有程序51hei提供下载:
简单测试.rar (472.63 KB, 下载次数: 23)



评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:699723 发表于 2020-10-19 09:17 | 只看该作者
请收下我膝盖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表