太阳能热水器自控仪.docx
《太阳能热水器自控仪.docx》由会员分享,可在线阅读,更多相关《太阳能热水器自控仪.docx(38页珍藏版)》请在冰点文库上搜索。
太阳能热水器自控仪
编号
淮安信息职业技术学院
毕业论文
题目
太阳能热水器自控仪
学生姓名
陈鑫
学号
27
系部
电子工程学院
专业
电子信息工程技术
班级
710910
指导教师
杨国柱
顾问教师
二〇一二年六月
摘要
随着社会经济水平的发展,热水器的使用已相当普及。
与之相配套的控制仪也相继被应用。
就像家用电视机、电冰箱一样,接通电源、设定完毕就不用再操心了。
太阳能热水器作为三大热水器之一,因其无污染、使用方便、长期投入成本低等特点,而越来越受到人们的青睐,但与之配套的控制器却还一直处于研究和开发阶段,为解决水温水位的自动控制问题,本电路专门设计了水温的实时监测,并在设计中,将水位多级化,实现更精确的测量。
本次设计运用AT89C51单片机,可以自动进行温度检测和液位检测,使太阳能自动补水或排水,真正做到最简单化。
并且该电路易于扩展,可实现多点的温度检测,或者更多点的液位检测。
这篇论文详细介绍了基于单片机的太阳能热水器自动控制系统组成、硬件设计。
关键:
太阳能热水器、传感器、实时时钟、单片机、自动控制
第一章绪论
1.1前言
太阳能热水器是目前一种具有较成熟技术、应用广泛的可再生能源产品,在全球的很多国家都得到了广泛应用,在提供热水、减少常规能源消耗、提高人民的生活水平等方面发挥了巨大的作用。
在欧洲、澳洲等国家,太阳能热水器主要是作为辅助热源与常规能源联合运行使用,既能供应日常生活和洗浴热水,还能为房屋供暖;在美国,太阳能热水器主要是用于家庭游泳池的加热。
在全球范围内,即使是在可再生能源界,也普遍存在着低估和忽视太阳能热利用的现象。
在我国,随着人们生活水平的不断提高,市场上各种热水器的使用已相当普及。
相配套的控制仪器也随之相继问世。
1.2本设计的目的和意义
本设计具有很强的实用性,用成本低廉的电阻式传感器以及电极配以单片机技术对生产实际中的太阳能热水器的水温的控制以及水位的显示。
本装置电路简单、实用性强、性价比高、水温控制灵活,水位显示直观醒目。
可广泛应用于家庭生活对太阳能热水器的水位显示与水温控制。
具有良好的市场前景。
1.3控制系统设计要求
1、能够根据水位和水温两个条件控制是否需要进水,每次只进整个水箱的四分之一水量,也可以在手动状态下自由进水(上满时自由停止)或停止进水。
2、控制系统具有手动和自动切换功能;
3、具有水温和水位显示功能;
4、具有进水超水位和超水温报警指示;
5、用水时若水温达不到设置值时,可手动起动加热装置,这样可在很大程度上节约电能;
6、用水时可自由调节水温;
7、控制系统具体管道排空功能,这样防止冬天时因水管内有积水冻裂水管
1.4本设计实现思路及方法
水位由潜入储水容器不同深度的水位电极和潜入容器底部的公共电极(导线)检测;并由四个绿色LED发光二极管显示:
若无水则绿灯不亮;若有四分之一储水箱的水亮一盏绿灯;通过观察绿灯点亮的数量可识别水位的高低,这里取5段显示,也可根据需要进行增减。
水温由四个LED数码管显示,前三个数码管显示的为温度最后一个数码管我们只用到了四段码显示为温度的符号C,水温有效值最多可显示为99.9℃。
1.5总体方案设计
如图2.1所示,本系统主要由控制器、自动控制阀、手动控制阀、水位检测电极、水温检测传感器、电阻加热丝、储水箱等组成。
控制器:
主要通过里面的电磁阀控制YV1和YV2的通断,控制水温检测传感器检测水温、控制水位检测传感器检测水在水箱中的位置以及控制电阻加热丝加热。
自动控制阀:
主要通过控制器控制,当水箱中的水的实际温度大于所设置的温度时,自动阀就自动打开往水箱中上水,直到上到上一个目标水位为止。
手动控制阀:
当自动阀损坏时,可以通过手动阀进行上下水水位检测电极:
主要用来检测水箱中水的位置,主要把水箱分成四等分,一共有五个电极,接地的电极放在最水箱的最底下,其余分别放在四等分点上,比如当水箱中的水在第一等分和第二等分之间,则显示水箱中有四分之一的水,当超过第二等分,则显示二分之一的水。
水温检测传感器:
主要用来检测水箱中水的实际温度。
第二章系统设计
2.1系统的组成及原理
(1)智能控制系统采用MCS-5l单片机为中心控制单元。
由于系统运算量不是大,没有太多的中间数据需要处理、保存,使用AT89C51已完全能够满足要求。
系统的硬件电路包括:
控制器实时时钟接口电路、蓄水箱温度和水位检测接口电路、设定键和串行显示接口电路、看门狗和复位电路等
(2)特点:
利用单片机实时监测水温及水位。
用水时,若日晒水温达不到设定值,单片机控制电加热器自动补温至设定温度间;缺水时能自动上水到设定值。
采用外扩EEPROM对设置的参数具有断电保留功能,断电后,参数无须重新设置。
该系统具有使用方便、稳定性高。
节能等特点,实用性高。
2.2系统框图
图2.2热水器微控系统框图
第三章单元模块设计
3.1电路设计原理图
图3.1电路原理
3.2单片机概述
图3.2时钟电路与复位电路
该水位自动显示控制器采用AT89C51单片机,机内有一高增益反相放大器,构成自激振荡电路,振荡频率取6MHz,外接6MHz晶振,两个电容C1、C2取20pF,以便于起振荡的作用。
图中XTAL1为内部时钟工作电路的输入,XTAL2为来自反向振荡器的输出。
该水位自动显示控制器采用上电复位电路,由R14、C3构成复位电路,在上电瞬间,产生一个脉冲,AT89C51将复位。
为保证可靠复位,脉冲宽度应大于两个机器周期,这取决于R、C时间长数。
取电容C=10uF,电阻R=10K。
3.3水位检测及上水模块
实验证明,纯净水几乎是不导电的,但自然界存在的以及人们日常使用的水都会含有一定的Mg2+、Ca2+等离子,它们的存在使水导电。
本控制装置就是利用水的导电性来完成的。
我们把储水箱大致分为四个等份,水位由潜入太阳能热水器的储水箱不同的水位电极和潜入储水箱底部的公共电极(导线)进行检测;由单片机依次使各水位电极呈现高电平,由公共电极所接的三极管进行电位转换,水位到达的电极,转换电位为低(0);水位没有到达的电极,转换电位为高
(1);每检测一位便得到一位数据,5个电极检测一遍以后便得到了5个串行数据,然后把这5个数据转化为字节一路送发光二极管;在这里我们可以用发光二极管亮的盏数来显示水位
的高低。
(若没有发光二极管亮则表示箱内没有水或者只有少量的水,若有一个发光二极管灯亮则表示箱内有四分之一箱的水,以此类推,若有四个发光二极管亮,则表示水箱水是满的。
)
图3.3水位检测电路
3.3.1上水程序
水位设定为4段,包括安全下限、50%、80%、100%。
本设计通过P2口来检测。
当水位到达该处,相应端口输出高电平。
该部分程序中要完成水位检测和水位控制。
程序如下:
test_water:
jbp2.0,test_w1
movwater_num,#10h;100%
ljmpact_w
test_w1:
jbp2.1,test_w2
movwater_num,#08h;80%
ljmpact_w
test_w2:
jbp2.2,test_w3
movwater_num,#05h;50%
ljmpact_w
test_w3:
jbp2.3,test_w4
movwater_num,#02h;20%
ljmpact_w
test_w4:
jbp2.4,w_err
movwater_num,#01h
act_w:
mova,water_num;判断是否加水
cjnea,water,act_w1
act_w1:
jcact_w2
setbout_w
setbLS
ljmptest_water_ret
act_w2:
clrout_w
LCALLRET_WDOG
lcalldisplay
ljmptest_water;循环检测水位
w_err:
setbLS;报警,并加水
clrout_w
LCALLRET_WDOG
lcalldisplay
ljmptest_water;循环检测水位
test_water_ret:
ret
3.4温度检测模块
本设计温度传感器选用AD590。
AD590属于半导体集成电路温度传感器,测温范围-55℃-+150℃,在其二端加上一定的工作电压,其输出电流与温度是线性关系,1uA/°K,误差有几种等级:
±1、±0.5、±0.3℃,本设计中选取±0.5℃品种。
OP07为高精度运算放大器,AD590电流流经R1、RP1转换为电压信号,R2、RP2为运算负反馈电阻,成反相比例放大器,将温度信号转换成0-5V的电压信号,ADC0832再将其转换为数字信号,输入CPU。
图3.4为温度检测和A/D转换电路图。
图3.4温度检测电路
3.5键盘模块
P1.0-P1.7口作为按键的信号输入端,键按下,就执行该键的功能。
其电路如图3.5所示。
(为了编程简单、方便,采用独立式键盘电路)
图3.5键盘电路
3.6显示模块
本设计采用共阳型数码管,8个LED灯如图3.6中接法,灯的负极依次接到数码管的a-f段,采用动态扫描电路,并把显示程序作为主程序。
数码管的段用P0口控制,P2.0口、P2.3口作为数码管的位控制,P2.4作为指示灯的控制。
图3.6显示电路
第四章软件设计
4.1主程序流程图
图4.1主程序图
4.2温控进水程序
4.3温度显示子程序
4.4键盘处理程序
第五章系统调试与原理图
本次设计主要在系统软件调试方面。
困难主要出现在软件的编写。
虽然没有错误,但是进行仿真时,不能达到预期的效果。
经过多次调试,程序也修改过好几次,仍然走不通。
而问题也主要集中在扫描显示这一模块。
最后经过与同题目的其他的同学交流,结合设计思想,以及对以前的一
个单片机编程作业的代码,进行了修改、调试,也终于达到了方案的总体要求。
对软件方面逐步进行分析之后,重新进行系统的软件上的仿真。
图5.1控制系统原理图
第六章总结与体会
本控制装置充分应用AT89C51单片机的软硬件资源,该系统具有智能化、结构紧凑、性能稳定等优点,通过对这次基于单片机的太阳能温控进水及水温水位显示控制装置的设计,我将在大学里所学的专业知识在这次毕业设计中的到了广泛的运用,加深了理论与实际的联系。
提高了思维与动手能力,增长了才干;培养了自己的创新意识,使自己在单片机应用方面得到了全面提高,为今后的工程实际应用,新产品开发奠定了基础。
通过这次课程设计,自己进一步熟悉和掌握了ISIS仿真软件PROTEL软件,体会到ISIS、PROTEL等功能强大的设计软件,在现代电子系统设计中发挥的强大的作用。
总之,此次课程设计经过自己独立思考、查找资料,自己受益匪浅。
而且,通过这次设计,更深切地感觉到团队合作的重要性。
是全体组员的共同努力,才完成了此次智能仪器课程设计任务!
总之,以往的课程设计都是停留在理论层面上,而这次课程设计的实际意义非常明显。
经过这次课程设计,自己从心理上就成长了不少,这将是自己以后人生路上一笔宝贵的财富。
参考文献
[1]刘刚、秦永左.单片机原理及应用.北京:
北京大学出版社,20061.
[2]胡汉才.单片机原理及其接口技术.北京:
清华大学出版社,2004.
[3]蔡美琴、张为民.MCS-51系列单片机系统及其应用(第二版)高等教育出版社,2004.
[4]杨振江、杜铁军.流行单片机实用子程序及应用实例.西安电子科技大学出版社,2002.
[5]刘迎春、叶湘滨.现代新型传感器原理与应用国防工业出版社,1998.
[6]张毅刚、彭喜元.单片机原理及应用.高等教育出版社,2007.
[7]何立民.单片机应用系统设计系统北京航空航天大学出版社,2001
[8]王幸之.单片机应用系统抗干扰技术北京航空航天大学出版社,2001
附录1程序设计
SO5BITP3.2
CS5BITP3.3
SI5BITP3.4
SCK5BITP3.5
DQBITP3.6;温度DS18B20
disp_clkbitp3.1;(送显示时钟)
disp_datbitp3.0;(送显示数据)
dsp2bitp0.6;第2个数码块的控制线
dsp1bitp0.7;第1个数码块的控制线
out_wbitp0.0;加水控制
out_cbitp0.1;加热控制
outbitp0.2;用水控制
LEDWbitp0.4
LEDTbitp0.3
LEDHbitp0.5
LSbitp2.6;报警,并加
keysequ20h;按键状态
out_bjbit21h.0
kw_bjbit21h.1
kc_bjbit21h.2
NEGATIVEBIT25h.0
Krunbitp1.0
KDISWbitp1.1
KDISTbitp1.2
Kupbitp1.3
Kdownbitp1.4
KWbitp1.5
KCbitp1.6
TEMPER_NUMequ27h
TEMPER_HEQU28H;TESTTEMPERATUREH
TEMPER_LEQU29H;TESTTEMPERATUREL
bufferequ30h
led1equ31h
led2equ32h
temperequ36H;检测到的温度;0~99
stateequ37h;显示菜单
temper_setequ38h;设定温度
temp0equ39h
a_lequ3ah
a_hequ3bh
waterequ40h;设定水位50h,80h,99h
temp1equ42h
water_numequ43h;检测到的水位
STATUS_REGDATA10H
WREN_INSTDATA06H
WRDI_INSTDATA04H
WRSR_INSTDATA01H
RDSR_INSTDATA05H
WRITE_INSTDATA02H
READ_INSTDATA03H
MAX_POLLDATA200
ORG0000H
LJMPBEGIN
nop
nop
reti
nop
nop
reti
BEGIN:
LCALLRET_WDOG
lcalldelay
MOVPSW,#00H
MOVTMOD,#10H
MOVTH1,#00H;10ms
MOVTL1,#00H
MOVIP,#08H
setbEA
setbET1
MOVR0,#5FH
MOVA,#00H
C_M:
MOV@R0,A
DJNZR0,C_M
MOVSP,#60H
movkeys,#00h
LCALLX5045_INIT
LCALLINIT_1820
setbEA
LCALLCHECK_5045
movr7,#10
main2:
lcallget_temp
movled1,#08h;8
movled2,#08h;8
LCALLRET_WDOG
lcalldisplay;刚上电显示88
djnzr7,main2
main:
MOVR5,#20H
LCALLREAD
movtemper_set,a;水温
MOVR5,#21H
LCALLREAD
movwater,a;水位
clrtr1
;**主循环*******************************
main0:
LCALLRET_WDOG
lcallget_temp;检测水温
lcalltest_water;检测水位
lcalltest_key
lcalldipkey
ljmpmain0
;**按键检测*****************************
test_key:
mova,p1
cpla
anla,#7fh
jzkey_ret00
lcalldelay;延时消抖
mova,p1
cpla
anla,#7fh
jzkey_ret00
movkeys,a;保存按键值
cjnea,#01h,test20
setbout_c;停止加热
jbkc_bj,test11
setbkc_bj
setbout_bj;置用水标记
clrout;用水
ljmptest_key_ret
key_ret00:
ljmptest_key_ret
test11:
clrkc_bj
clrout_bj
setbout;已经在用水,关水
ljmptest_key_ret
test20:
cjnea,#02h,test30
mova,state
cjnea,#01h,test21
setbLEDW;关水位灯亮
movstate,#00h
ljmptest_key_ret
test21:
movstate,#01h
clrLEDW;=1;水位灯亮
setbLEDT;关温度灯
ljmptest_key_ret
test30:
cjnea,#04h,test40;水温
mova,state
cjnea,#02h,test31
setbLEDT;关水位灯亮
movstate,#00h
ljmptest_key_ret
test31:
movstate,#02h
setbLEDW;=2;水温灯亮
clrLEDT
ljmptest_key_ret
test40:
cjnea,#08h,test50;up
mova,state
cjnea,#01h,test45
test40_5:
mova,water;修改水位
cjnea,#02h,test41
movwater,#50h
mova,water
movr5,#21H;水位,保存修改后的值
lcallWRITE
ljmptest44
test41:
cjnea,#05h,test42
movwater,#08h
mova,water
movr5,#21H;水位,保存修改后的值
lcallWRITE
ljmptest44
test42:
cjnea,#08h,test43
movwater,#10h
mova,water
movr5,#21H;水位,保存修改后的值
lcallWRITE
ljmptest44
test43:
cjnea,#10h,test44
movwater,#02h
mova,water
movr5,#21H;水位,保存修改后的值
lcallWRITE
ljmptest44
test44:
lcalltest_water;检测水位,并考虑加水
ljmptest_key_ret
test45:
cjnea,#02h,test4a;修改温度
mova,temper_set
lcallbcdtoh;变为16进制
cjnea,#99,test46
test46:
jctest47
mova,#00h
ljmptest48
test47:
inca
test48:
lcallhtobcd
movtemper_set,a
movr5,#20H;水温,保存修改后的值
lcallWRITE
ljmptest44
test4a:
movstate,#00h
ljmptest_key_ret
test50:
cjnea,#10h,test60;down
mova,state
cjnea,#01h,test55
ljmptest40_5
test55:
mova,temper_set
lcallbcdtoh;变为16进制
cjnea,#00,test56
mova,#99
ljmptest58
test56:
jctest57
mova,#00h
ljmptest58
test57:
deca
test58:
lcallhtobcd
movtemper_set,a
movr5,#20H;水温,保存修改后的值
lcallWRITE
ljmptest44
test60:
cjnea,#20h,test_key_ret
jbkw_bj,test61
jnbp2.0,test61;100%;手动加水
setbkw_bj
clrout_w;加水
ljmpkey_ret
test61:
setbout_w
clrkw_bj
ljmpkey_ret
test70:
cjnea,#40h,key_ret
jbkc_bj,test71
clrout_c
setbkc_bj
ljmpkey_ret
test71:
setbout_c
clrkc_bj
ljmpkey_ret
test_key_ret:
lcalldipkey
key_ret:
ret
bcdtoh:
movb,#10h
divab
movr6,b
movb,#0ah
mulab
adda,r6
ret
htobcd:
movb,#0ah
divab
swapa
adda,b
ret
;*************************************************
test_water:
jbp2.0,test_w1
movwater_num,#10h;100%
ljmpact_w
test_w1:
jbp2.1,test_w2
movwater_num,#08h;80%
ljmpact_w
test_w2:
jbp2.2,test_w3
movwater_num,#05h;50%
ljmpact_w
test_w3:
jbp2.3,test_w4
movwater_num,#02h;20%
ljmpact_w
test_w4:
jbp2.4,w_err
movwater_num,#01h
act_w:
mova,water_num;判断是否加水。
cjnea,water,act_w1
act_w1:
jcact_w2
setb