太阳能充放电控制器_第1页
太阳能充放电控制器_第2页
太阳能充放电控制器_第3页
太阳能充放电控制器_第4页
太阳能充放电控制器_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要太阳能光伏发电现已成为新能源和可再生能源的重要组成部分,也被认为是当前世界最有发展前景的新能源技术。目前太阳能光伏发电装置已广泛应用于通讯,交通,电力等各个方面,其核心部分就是充电控制器。本设计针对目前市场上传统充电控制器对蓄电池的充放电控制不合理,同时保护也不够充分,使得蓄电池的寿命缩短这种情况,研究确定了一种基于单片机的太阳能充电控制器的方案。在太阳能对蓄电池的充放电方式、控制器的功能要求和实际应用方面做了一定分析,完成了硬件电路设计和软件编制,实现了对蓄电池的高效率管理。在总体方案的指导下,本设计使用低功耗、高性能,超强抗干扰的STC89C52单片机作为核心器件对整个电路进行控制。系统硬件电路由太阳能电池充放电电路,电压采集和显示电路,单片机控制电路和RS232串口通信电路组成,主要实现对蓄电池电压的采集和显示。软件部分依据PWM(PulseWidthModulation)脉宽调制控制策略,编制程序使单片机输出PWM控制信号,通过控制光电耦合器通断进而控制MOSFET管开启和关闭,达到控制蓄电池充放电的目的,同时按照功能要求实现了对蓄电池过充、过放保护和短路保护。实验表明,该控制器性能优良,可靠性高,可以时刻监视太阳能电池板和蓄电池状态,实现控制蓄电池最优充放电,达到延长蓄电池的使用寿命。关键词:充电控制器;太阳能光伏发电;PWM脉宽调制;

AbstractSolarphotovoltaicpowergenerationhasbecomeanimportantpartofnewenergyandrenewableenergy,itisconsideredthecurrentworld'smostpromisingnewenergytechnologies.Atpresentsolarphotovoltaicdevicehasbeenwidelyusedincommunications,transport,electricityandotheraspects,thecorepartisthechargecontroller.Theconventionalchargecontrolleronthemarkettodayonthebatterychargeanddischargecontrolisunreasonable,anditsprotectionisalsoinadequate,whichsmakesthebatterylifetoshorten.Tosolvethisproblem,thedesignidentifiesasolarchargecontrollerbasedonsinglechipsolution.Inthesolarenergytobatterychargeanddischargemeans,thecontrollerofthefunctionalrequirementsandthepracticalapplicationaspects,makingsomeanalysis,completedthehardwarecircuitdesignandsoftwaredevelopment,toachievethehighefficiencyofthebatterymanagement.Undertheguidanceoftheoverallprogram,thedesignuseslow-power,highperformance,superanti-jammingSTC89C52microcontrollerasacoredevicetocontroltheentirecircuit.Hardwarecircuitconsistsofasolarbatterycharginganddischargingcircuit,voltageacquisitionanddisplaycircuit,theMCUcontrolcircuitandRS232serialcommunicationcircuit,themainachievementoftheacquisitionanddisplaybatteryvoltage.SoftwareisbasedinpartonPWM(PulseWidthModulation)pulsewidthmodulationcontrolstrategy,programmingthemicrocontrolleroutputPWMcontrolsignal,bycontrollingthephotocoupleron-offthecontrolMOSFETopeningandclosing,tocontrolbatterycharginganddischargingpurposes,andinaccordancewiththefunctionalrequirementsimplementedthebatteryovercharge,overdischargeprotectionandshortcircuitprotection.Experimentsshowthatthecontrollerperformance,highreliability,canalwaysmonitorthestateofsolarpanelsandbatteriestoachieveoptimalcontrolofbatterychargeanddischarge,toprolongbatterylife.Keywords:chargecontroller;solarphotovoltaic;PWMpulsewidthmodulation;目录1绪论 11.1课题研究背景和意义 11.2太阳能充放电控制器现状 21.3设计主要任务 32太阳能充电控制器的总体设计方案 42.1太阳能路灯系统基本结构 42.2充电控制器的控制策略 62.3控制器的整体设计方案 83太阳能充电控制器的硬件电路设计 103.1系统层次原理图 103.2单片机最小系统 113.2.1STC89C52的简介 113.2.2单片机的最小系统及扩展电路 133.3充放电电路 153.4光耦驱动电路 163.5A/D转换电路 163.5.1ADC0804的简介 173.5.2ADC0804外围接线电路 183.6LCD显示电路 203.7E2PROM数据存储电路 213.8串口通信电路 224太阳能充电控制器的软件设计 264.1系统主程序设计 264.2电压采集转换模块 274.3显示模块 284.4数据存储模块 314.5软件调试和仿真 335总结与展望 365.1设计总结 365.1展望 37参考文献 38致谢 39附录Ⅰ源程序 40附录Ⅱ硬件电路图 541绪论1.1课题研究背景和意义能源资源是国民经济发展的重要基础之一,随着人民生活水平的不断提高和科学技术的迅速发展,能源的缺口增大,能源问题作为困扰人类长期稳定发展的一大因素摆在了人们面前。伴随着世界能源危机的日益严重,石油价格不断上涨,利用常规能源已经不能适应世界经济快速增长的需要,如何解决能源问题,是每个国家都必须面临的问题。同时,以煤、石油作为燃料在燃烧过程中产生的有害物质已经开始造成全球变暖,即“温室效应",人类的生活将会由此受到很大的威胁。这些难题迫使政府和社会在发展常规能源的同时必须加大对新能源的开发和利用。新能源包括水能、风能、太阳能等。虽然风能或水能等更加便宜,但是大多数的自家用户却都不可能找到适当场合进行架设,架设成本较高。而太阳能则不同,任何自家用户只要找到一个有阳光照射到的窗户都可以装置太阳能极板作辅助能源,几百元投资便可以架设。所以综合考虑,太阳能无疑是符合我国可持续发展战略的理想绿色能源,全球能源专家也认为,太阳能将成为21世纪最重要也最有前景的能源之一。而且太阳辐射能与煤炭、石油等常规能源相比较,更有如下的优点:(1)普遍性。地球上处处都有太阳能,不需要到处去寻找,去运输,容易获取。(2)无害性。利用太阳能作为能源,没有废渣,废料,废气,废水的排放,没有噪声,不会污染环境,没有公害,清洁干净。(3)长久性。只要有太阳,就有太阳能,因此太阳能可以说是取之不尽,用之不竭。(4)巨大性。一年内到达地面的太阳辐射能总量要比现在地球上消耗的各种能量的总和大几万倍。我国幅员辽阔,有着十分丰富的太阳能资源。全国各地的年太阳辐射总量3340.8400MJ/m2,中值为5852MJ/m2。年日照时数在2200小时以上的地区约占国土面积的2/3以上。我国的西部地区,包括西藏、新疆、青海、内蒙古等省,年日照时间长,这些地区面积宽广、人口密集低,在一些偏僻的地区传统的供电设施建设成本高,电能的供需矛盾显得十分突出,因此当地政府充分利用太阳能发电解决无电地区的用电具有重大的战略意义。为了更高效的利用太阳能,白天可将太阳能转化为电能,利用蓄电池将电能储存起来,需要用电时即可由蓄电池供电。总体看来我国太阳能资源比较丰富,因此充分利用丰富的太阳能资源,采用太阳能光伏发电技术,可以节约能源,发展经济,提高人民生活水平。1.2太阳能充放电控制器现状(1)太阳能光伏发电太阳能作为新能源有着巨大的优势,所以世界各国都在努力研发新技术进行获取,比较成熟的是太阳能光伏发电技术。太阳能光伏发电现已成为新能源和可再生能源的重要组成部分,也被认为是当前世界最有发展前景的新能源技术。目前太阳能光伏发电装置已广泛应用于通讯,交通,电力等各个方面。在进行太阳能光伏发电时,由于一般太阳能极板输出电压不稳定,不能直接将太阳能极板应用于负载,需要将太阳能转变为电能后存储到一定的储能设备中,如铅酸蓄电池。但只有当太阳能光伏发电系统工作过程中保持蓄电池没有过充电,也没有过放电,才能使蓄电池的使用寿命延长,效率也得以提高,因此必须对工作过程加以研究分析而予以控制,这种情况下太阳能充电控制器应运而生。(2)充电控制器的作用及现状太阳能充电控制器具备充电控制、过充保护、过放保护、防反接保护及短路保护等一系列功能,解决了这一难题,这样控制器在这个过程中起着枢纽作用,它控制太阳能极板对蓄电池的充电,加快蓄电池的充电速度,延长蓄电池的使用寿命。同时太阳能充放电控制器还控制蓄电池对负载的供电,保护蓄电池和负载电路,避免蓄电池发生过放现象,由此可见,控制器具有举足轻重的作用。市目前场上有各种各样的太阳能控制器,但这些控制器主要问题对于蓄电池的保护不够充分,不合适的充放电方式容易导致蓄电池的损坏,使蓄电池的使用寿命降低。目前,控制器常用的蓄电池充电法包括三种:恒流充电法、阶段充电法和恒压充电法。但是这些方法由于充电方式单一加上控制策略不够完善,都存在一定的局限性。另一方面,当蓄电池给负载供电时,由于控制器不能时刻检测蓄电池的电压,这样很容易发生蓄电池的过放电,将会导致蓄电池的深度放电,严重影响其寿命。所以,如何改善太阳充控制器的充放电方式,开发性能优良的充放电控制器,提高其在实际应用中的效率,成为了一个重要的研究方面。1.3设计主要任务本设计研究确定了一种基于STC单片机的太阳能充放电控制器的方案,在太阳能对蓄电池的充电方式、控制器的功能要求和电路保护方面做了分析,完成了系统硬件电路设计和软件编程,实现了对蓄电池的科学管理,并将充放电控制器应用于太阳能路灯或其他负载,实现了控制功能。这里以充/放电最大电流10A,额定电压12V控制器系统为例,其实现的主要功能如下。(1)要能自动检测太阳能电池板电压是否高于蓄电池电压,若高于蓄电池电压,则可开启充电;若低于蓄电池电压,则不能开启充电,否则蓄电池电流会反向流向太阳能电池板而造成点亮损耗。(2)当蓄电池电压低于10.8V时,自动关断负载(欠压关断),同时有报警功能;(3)当蓄电池电压高于14.5V,自动关断负载(过压关断)和充电电路,同时有报警功能。(4)当蓄电池处于浮充充电状态时电压值控制在13.5V左右。(5)当用户将太阳能电池板接反至控制器时,具有保护控制器不被毁坏的功能;(6)当用户将蓄电池接反至控制器时,要有报警功能,并且具有保护控制器不被毁坏的功能。2太阳能充电控制器的总体设计方案在确定设计方案之前,需要结合应用实例,进行一定的综合分析,更加明确控制器的作用,最后来确定整体方案。这里以太阳能充电控制器应用于太阳能光伏发电路灯系统为例,对系统各个组成部分的主要功能做详细的分析说明。2.1太阳能路灯系统基本结构本系统主要针对直流照明路灯进行系统设计,所以构成太阳能路灯系统主要有四大部分组成,即太阳能极板、蓄电池、充电控制器、照明电路。太阳能路灯系统基本结构如图2-1所示。图2-1太阳能路灯系统基本结构从图2-1中可以看出,太阳能极板阵列将太阳能转换为电能并将电能存储到蓄电池中,蓄电池再将存储的电能输出给照明电路供电,完成能量的传递。系统各个部分的控制功能全由充电控制器来完成。(1)太阳能电池板如图2-2所示,太阳能电池板是利用半导体光伏效应制成的,能够直接将太阳辐射转换成电能的器件。具有很强的光伏效应半导体材料,当吸收一定能量的光子后其内部导电的载流子电子和空穴分布和浓度发生变化。光照在半导体P/N结上,就会在其两端产生光生电压,当外部接通电路时,在该电压的作用下,将会有电流流过外部电路产生一定的输出功率。在这个过程中,光电池本身不发生任何化学反应,也没有转动磨损,因此使用太阳能电池的过程中没有噪声,没有环境污染,这是其他方式发电所不能比拟的。图2-2太阳能电池产生光伏效应(2)蓄电池这里首先介绍蓄电池工作原理。太阳能充电控制器最主要的功能是控制太阳能极板对蓄电池的充电,蓄电池的性能和充放电的方式有很大的关系,所以在设计控制器之前需要对蓄电池的原理、充放电过程做一个分析。一般铅酸蓄电池是由正极板、负极板、隔板、电池槽、电解液和接线端子等部分组成,极板主要有铅制成,电解液是硫酸溶液。依据化学基础理论:铅酸蓄电池释放化学能的过程(放电过程)是负极进行氧化,正极进行还原的过程;电池补充化学能的过程(充电过程)是负极进行还原,正极进行氧化的过程。分析可知,蓄电池的充电过程和放电过程是可逆的。实际上,蓄电池最重要的指标就是电解液中硫酸根的浓度,因此可以用电池中硫酸溶液的密度(比重)来衡量电池充放电的程度。工作原理搞懂了之后,接着看蓄电池在整个系统中的作用。在独立的太阳能光伏发电系统中,蓄电池是整个系统的重要组成部分,是对整个系统性能可靠性影响比较大的部分。在光伏发电系统中,蓄电池的主要作用有:储存能量、对太阳能极板的工作电压的进行钳位、给负载提供启动电流等。蓄电池的存在,可以解决太阳能产生电能和负载用电时间不一致不同步的问题,太阳能极板和负载两者之间电压不匹配的问题等。(3)充电控制器一般太阳能极板输出电压的不稳定,不能直接应用于负载,需要将太阳能转变为电能后存储到储能设备如蓄电池中,而控制器在这个过程中起着枢纽作用,其性能的好坏将会直接影响实际应用的使用效果。控制器控制太阳能极板对蓄电池的充电,为了延长蓄电池的使用寿命,必须对它的充放电条件加以限制,防止蓄电池过充电及深度充电。控制器同时负责蓄电池是否对负载供电,当蓄电池的电压在正常范围内时,控制器控制开关接通,蓄电池给负载供电;当蓄电池的电压处于欠压或是过放状态时,控制器控制开关截止,蓄电池停止对负载的供电,在这个过程中控制器起着至关重要的作用,保护负载和蓄电池。2.2充电控制器的控制策略作为光伏发电系统中的关键部件,蓄电池的寿命短是阻碍整个光伏发电系统性能和推广的主要原因之一。根据蓄电池的工作原理,结合实际应用情况,在光伏发电系统中,影响铅酸蓄电池寿命的主要因素有:充电电压的设置、过放控制点的设置、温度、运行环境等。依据这些影响因素,分析蓄电池常见充放电方式局限性,对充放电方式进行了一定的改进。(1)蓄电池常规充放电方式目前,控制器常规的蓄电池充电法包括三种:恒流充电法、阶段充电法和恒压充电法。恒流充电法是通过保持充电电流强度不变进行充电的方法。这种充电控制方法简单,但由于电池的可接受电流能力是随着充电过程的进行而逐渐下降的,到充电后期,充电电流多用于电解水,产生气体,使出气过多,影响蓄电池的使用寿命。第二种是阶段充电法。这种充电方法包括二阶段充电法和三阶段充电法。二阶段充电法是先用恒定电流充电至预定的电压值,然后改为恒定电压完成剩余的充电,一般两阶段之间的转换电压就是第二阶段的恒电压;三阶段充电法是指在充电开始和结束时采用恒定的电流充电,中间用恒定的电压进行充电。阶段充电法这种方法虽然可以将出气量减到最少,但作为一种快速充电方法使用,实际应用中受到一定的限制。恒压充电时要严格掌握充电电压,电压在全部充电时间里保持恒定的数值,充电电压过低,蓄电池会充不满,过高则会造成过量充电。由于充电初期蓄电池电动势较低,充电电流很大,随着充电的进行,电流将逐渐减少。这种充电方法在充电初期电流过大,对蓄电池寿命造成很大影响,且容易使蓄电池极板弯曲,将会影响蓄电池的使用。(2)改进的充放电方式针对目前市场上控制器的主要问题是由于对于蓄电池的保护不够充分,不合适的充电方式容易导致蓄电池的损坏,同时通过对蓄电池的工作原理和对影响蓄电池使用寿命因素的分析,本论文提出了PWM(PulseWidthModulation)脉宽调制充电方法。PWM是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。这种充电法不仅遵循蓄电池固有的充电接受率,而且能够提高蓄电池充电接受率,这也是蓄电池充电理论的进一步发展。PWM脉冲调制充电方式首先对电池充电一段时间,然后让电池停止充电一段时间,如此循环往复。充电脉冲使蓄电池充满电量,而间歇期使蓄电池经化学反应产生的氧气和氢气有时间重新化合而被吸收掉,从而减轻了蓄电池的内压,使下一轮的充电能够更加顺利地进行,使蓄电池可以吸收更多的电量。PWM调制充电方式使蓄电池有较充分的反应时间,减少了析气量,提高了蓄电池的充电效率。脉宽调制方式是指在固定时钟频率下,通过调节开关的通断时间来控制信号的占空比,从而实现对输出电压的调整。实际也就是以一直流电压经过以一定频率打开与闭合开关的控制来改变电压。输出电压波形如图2-3所示。图2-3输出电压波形针对目前市场上的太阳能充电控制器当蓄电池给负载供电时,没有时刻检测蓄电池的电压,很容易导致蓄电池的深度放电这个问题,本论文提出时刻在线检测蓄电池电压来避免蓄电池发生过放现象,保护蓄电池,提高其使用寿命。2.3控制器的整体设计方案通过对应用实例的分析,更加明确太阳能充电控制器的在系统中重要性和作用,同时依照其功能要求和改进的控制策略,最后确定了整体设计方案。本系统以STC89C52单片机为主控芯片,利用分压电路对蓄电池的电压、进行采样,然后经过A/D转换将检测电压数据输入到单片机中进行处理,通过液晶芯片把电压值显示出来方便调整。单片机在软件程序的控制下输出PWM控制信号,经光耦驱动MOSFET管开启与关闭来控制充放电电路。该系统可以实现控制蓄电池的最优充放电,有效的延长蓄电池的寿命。系统整体结构框图如图2-4图2-4系统整体结构框图以上通过对控制器、被控对象蓄电池的分析,结合硬件资源和软件控制策略,进行了硬件电路设计和软件编程设计,最终确定整体设计方案。整体方案设计,讲述了光伏发电技术中最重要部分控制器和蓄电池的作用,控制器主要负责控制太阳能极板对蓄电池的充电以及控制蓄电池对负载的供电。由于不合适的充放电方式会导致蓄电池的损坏,缩短蓄电池的使用寿命,本论文提出了PWM脉宽调制充电方法,这种充电方法能够使蓄电池有较充分的反应时间,与以前的充电方式相比,提高了蓄电池的充电效率。同时提出了时刻在线检测蓄电池电压的放电控制方法,避免蓄电池发生过放现象,保护蓄电池。各个部分的控制功能通过对单片机进行软件编程来实现。3太阳能充电控制器的硬件电路设计在整体方案的指导下,依据工程设计的常见思路,本论文从硬件电路设计和软件设计两个方面入手,运用模块化的设计方法去进行控制器的设计。硬件电路主要由以下几部分组成:单片机最小系统、充放电电路、光耦驱动电路、A/D转换电路、LCD显示电路、E2PROM数据存储电路、串口通信电路等。下面先从系统层次原理图入手,对系统原理进行详细的分析,然后再对具体电路地进行一一介绍。3.1系统层次原理图系统层次原理图如图3-1所示,电路设计以STC89C52单片机作为主控芯片构成控制电路模块对整个电路控制。首先采用并联分压方式对蓄电池电压采集后,送到AD模块中的A/D转换器进行转换得到一个数字信号的电压值,再将此信号送入到控制模块中单片机进行处理;然后在软件程序控制下,单片机输出控制信号送到充放电模块中,经光耦驱动电路来控制MOSFET。控制MOSFET管导通的方式是脉冲宽度调制(PWM),根据载荷图3-1系统原理图最后通过通信模块实现数据的传送和保存。串口通信模块采用MAX232芯片进行TTL电平和RS-232电平之间的转换,加入串口的目的主要是使控制器具有远程通信或远程监控功能,同时方便将每天的异常状态数据记录下来,供工作人员查看。数据存储电路模块,使得当电压出现异常时,让蜂鸣器报警,同时把异常电压值通过I2C3.2单片机最小系统3.2.1STC89C52的简介STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用STC公司高密度非易失性高加密性存储器技术制造,与工业80C51产品指令和引脚完全兼容。在芯片内部,拥有很高频率8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52具有低功耗设计,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。而且STC89C52的工作频率很宽,可以在0~35MHz之间选择,芯片具有超强抗干扰性,加密性强。STC89C52常见的是PDIP封装,是一个有40个引脚的芯片,引脚如图3-2所示。按其功能类别将它们分为三类:(1)电源和时钟引脚。如VCC、GND、XTAL1、XTAL2。(2)编程控制引脚。RST、、ALE/、/VPP。(3)I/O口引脚。如P0、P1、P2、P3。图3-2STC89C52引脚图这里仅详细介绍编程引脚:(1)RST:复位输入。晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。(2)ALE/:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的振荡频率输出脉冲,可作为外部定时器或时钟使用。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。(3):外部程序存储器选通信号()是外部程序存储器选通信号。当STC89C52从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。(4)/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器指令,必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,也接收12伏Vpp电压。3.2.2单片机的最小系统及扩展电路单片机是系统的主控芯片,为了使整个电路得到很好的控制,首先必须构建最小系统是单片机可以工作起来。本设计单片机最小系统扩展电路包括上电复位电路,时钟电路,工作指示灯和蜂鸣器报警电路等。(1)时钟电路单片机内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入端和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz~12MHz之间选取。时钟电路如图3-3所示。电路中C6、C7是反馈电容,其值在5pF~30pF之间选取,本电路选用的电容为30pF,晶振频率为11.0952MHz。图3-3时钟电路 图3-4复位电路(2)复位电路复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。单片机的复位电路如图3-4所示。本系统采用的是上电+电平按钮复位,上电复位是通过外部复位电路的电容充电来实现的。按钮复位是当按钮按下后,电源通过电阻R14施加到复位端上,实现单片机复位。复位电路虽然简单,但其作用非常重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路电阻和电容值进行实验。(3)工作状态指示灯电路本设计可以时刻检测蓄电池电压,为了更好的进行监控,要对整个电路的工作状态进行指示,这是很有必要的。工作状态指示灯电路如图3-5所示。其中LED1为正常充电指示灯,LED2为过压指示灯,LED3为欠压指示灯。串联的电阻的目的是为了限制通过发光二极管的电流太大而将其烧毁。图3-5工作状态指示灯电路 图3-6蜂鸣器报警电路(4)蜂鸣器报警电路报警电路采用蜂鸣器来发出报警声音,由于STC89C52输出引脚的驱动能力较弱,所以蜂鸣器要加三极管进行驱动。在对蓄电池电压实时监测的过程中,一旦发现检测电压值连续超出阈值范围,便启动自身报警电路,即当电压超过程序设定的最高值或最低值时,单片机的P2.6引脚(beep端)输出低电平,三极管随之导通,驱动蜂鸣器发出报警信号。蜂鸣器报警电路图如图3-6所示。3.3充放电电路充放电电路如图3-7所示,电路由防反充二极管D1、滤波电容C4和C5、稳压管D2、续流二极管D3、MOSFET管Q1和Q2等构成。二极管D1是为了防止反充,当阴天或晚上蓄电池的电压高于太阳能电池板的电压时,D1就生效,可以防止蓄电池电流流向太阳能电池板。分析可知,通过控制MOSFET管闭合和断开的时间(即PWM—脉冲宽度调制),就可以控制输出电压。所使用的MOSFET是电压控制单极性金属氧化物半导体场效应晶体管,所需驱动功率较小。而且MOSFET只有多数载流子参与导电,不存在少数载流子的复合时间,因而开关频率可以很高,非常适合作控制充放电开关。设计中采用IRL2703-N沟道MOSFET管,N沟道MOSFET的导通电压Vth>0。当光耦U2断开时,由于Q1的G极电压接近蓄电池电压,S极是接地,使得Vgs>0,当G极电压达到一定值时,Q1导通。电容C4是太阳能电池板输出电压滤波,使得更稳定地给蓄电池充电。电容C5是对蓄电池输出电压进行滤波,以保证负载供电电路的稳定性。图中稳压管D2用来对蓄电池进行稳压作用。当用户将蓄电池反接至控制器时,续流二极管D3可以进行续流,从而保护控制器不被毁坏。图3-7充放电电路按程序设计当检测到蓄电池的电压低于12V,充电模式为均充,Q1为完全导通状态,也就是导通的脉冲占空比最大;当检测到蓄电池的电压在12V-14.5V,充电模式为浮充,Q1导通与不导通的占空比例变小,;当检测到蓄电池的电压等于15V左右,Q1截止使充电停止,同时Q2也关闭来关断负载。当检测到蓄电池的电压低于10.8V,Q2关闭停止放电,关断负载来实现欠压关断。3.4光耦驱动电路为了增加系统的可靠性,本设计用光电耦合器实现单片机控制电路和充放电电路的隔离。光耦驱动电路如图3-8所示。M0S管Q1控制着充电电路,当充电控制信号PWM为低电平时,光耦内部的发光二极管的电流近似为零,右侧三极管不导通,输出端两管脚间的电阻很大,相当于开关“断开”,输出端K1被抬高,电阻R9右侧被稳压管D2稳压到12V左右,MOSEFT的Vgs>0,MOS管Q1开启,太阳能极板开始对蓄电池充电;当充电控制器信号为高电平时,光耦内部的发光二极管发光,三极管导通,输出端两管脚间的电阻变小,相当于开关“接通”,此时从U2输入的电压经光耦流向接地端,K1处的电压接近为零,MOSEFT的Vgs<0,Q1截止,充电电路关断。这就是充电电路原理。M0S管Q2控制着放电电路,其原理与Q1相似。图3-8光耦驱动电路3.5A/D转换电路本系统设计的STC89C52单片机没有内置的A/D转换模块,因此需要先采集蓄电池的电压,然后经A/D转换才可接入单片机。市场中集成的A/D转换器品种很多,选用时需要综合考虑各种因素进行选取。一般逐次比较型A/D转换器用到较多,本设计采用8位并行A/D转换器芯片ADC0804。因为蓄电池电压的采集转换在系统中极为重要,所以下面对所选ADC0804芯片及在本系统中是典型连接电路予以介绍。3.5.1AD转换就是模数转换,顾名思义,就是把模拟信号转换成数字信号。AD转换器最主要的技术参数是转换速度和转换精度,由于逐次比较型兼有并行A/D转换器转换速度高和双积分型转换精度高的优点,所以得到普遍应用。ADC0804就是这类集成A/D转换器。ADC0804为一只具有20引脚并行8位CMOS工艺逐次比较型的集成A/D转换器,其规格如下:(1)高阻抗状态输出,分辨率:8位(0~255)(2)存取时间:135us;转换时间:100us(3)总误差:正负1LSB (4)工作温度:0度~70度;(5)模拟输入电压范围:0V~5V(6)参考电压:2.5V;工作电压:5V(7)输出为三态结构,可直接连接在数据总线上。ADC0804引脚图如图3-9所示,其各个引脚的功能:—芯片片选信号输入端,低电平有效,一旦有效,表明A/D转换器别选中,可启动工作。—外部读取转换结果的控制输出信号。为1时,DB0~DB7处理高阻抗:为0时,数字数据才会输出。—用来启动转换的控制输入,相当于ADC的转换开始(=0时),当由1变为0时,转换器被清除:当回到1时,转换正式开始。图3-9ADC0804引脚图CLKIN—时钟信号输入端CLKR:内部时钟发生器的外接电阻端,与CLK配合可有芯片自身产生时钟脉冲,其振荡频率为1/(1.1RC)—中断请求信号输出,端,低地平动作.,表明本次转换已完成。VIN(+)VIN(-)——差动模拟电压输入。输入单端正电压时,VIN(-)接地:而差动输入时,直接加入VIN(+)VIN(-).AGND,DGND——模拟信号以及数字信号的接地.VREF/2—参考电平输入,决定量化单位。DB0~DB7—三态特性数字信号输出端.VCC:电源供应以及作为电路的参考电压.3.5.2ADC0804外围接线电路(1)电压采集电路如图3-10所示,电压采集电路使用两个串联的电阻,大小比例为2:1,然后并联在需要检测的电压两端,从两个电阻中间采集电压。由分压公式得出采集的电压为ADIN,当蓄电池充满电时电压大概为14.5V,计算出采集到的电压为4.8V,符合A/D转换芯片的ADC0804的输入值。图3-10电压采集电路(2)ADC0804构成的典型A/D转换电路图3-11按照芯片手册中ADC0804的典型接法,系统中设计的A/D转换电路如3-11所示。单片机的P2.7引脚,用来实现片选;、分别接单片机的P3.6和P3.7引脚,进行读写控制;CLK、CLKR、GND之间用电阻和电容构成RC振荡电路,用来给ADC0804提供工作所需的脉冲。蓄电池的电压采集信号ADIN从6脚引入,在内部采集转换后,从数字输出端输出到单片机的P1口,通过读P1口数据,便可以得到蓄电池的电压,实现实时在线检测。3.6LCD显示电路液晶具有体积小、功耗低,显示清晰的优点,所以比较适合作显示使用。为了更好的显示电压值,同时扩展自己学习芯片的能力,本设计用液晶1602来显示蓄电池的电压值。在使用1602之前,我们首先查阅其使用手册,对其进行一定的了解。从芯片手册中,可以得到1602液晶的主要技术资料,如表3-1所示,通过此表我们可以知道1602工作电压和显示容量,可以验证设计选择的是否合适。表3-11602的主要技术参数显示容量162个字符芯片工作电压4.5~5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.954.35(WH)mm显然,1602液晶可以满足要求,接下来介绍其各个引脚的功能,为后面设计电压显示电路做准备。1602引脚功能如表3-2所示。表3-21602引脚功能表引脚符号名称功能1Vss接地0V2VDD电路电源5V±10%3VO液晶显示对比度调节端用于调节对比度4RS寄存器选择信号H:数据寄存器L:指令寄存器5R/W读/写信号H:读

L:写6E片选信号下降沿触发,锁存数据7-14DB0-DB7数据线数据传输图3-12电压显示电路根据1602的技术参数和引脚功能,1602与单片机连接构成的电压显示电路如图3-12所示。EN使能端接单片机的P2.2引脚,用来实现片选;RS接单片机P2.0引脚,进行数据和命令选择;R/W接单片机P2.1引脚,进行读写控制;为防止直接加5V电压烧坏背光灯,在15脚串接一个10的电阻用于限流。液晶3端通过接一个10K电位器接地来调节显示对比度。数据输入端D0-D7接单片机的P0口用于电压数据的传送。3.7E2PROM数据存储电路为了把电路发生异常时的蓄电池电压记录下来,需要用存储芯片进行数据保存。若采用普通存储器,在掉电时需要备用电池供电,并需要在硬件上增加掉电检测电路,但存在电池不可靠及扩展芯片占用单片机过多口线的缺点。为了解决这一难题,本设计采用具有I2C总线接口的串行E2PROM器件,这里选择AT24C02芯片。AT24CAT24C02是一个2K位串行CMOSE2PROM,内部含有256个字节,采用先进CMOS技术实质上减少了器件的功耗。AT24C02内部有一个8字节页写入数据缓冲器。该器件通过I2C总线接口进行操作,有一个专门的写保护功能。为了更好的使用AT24C02,首先来介绍其各个引脚功能,如表3-3所示表3-3AT24C02管脚描述管脚名称功能A0A1A可编程地址输入端SDA串行数据/地址SCL串行时钟WP写保护Vcc电源端,+1.8V~6.0V工作电压GND地I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。根据各引脚的功能,依据总线系统的典型硬件连接图,AT24C02与单片机连接构成的数据存储电路如图3-13所示。图3-13数据存储电路3.8串口通信电路随着单片机系统的广泛应用和计算机网路技术的普及,单片机的通信功能愈来愈显得重要。单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,不过通常使用的是单片机与计算机之间的通信。通信有并行和串行两种方式。由于并行通信存在使用传输线较多,长距离传送成本高且收、发方的各位同时接受存在困难等诸多问题,所以在现代单片机测控系统中,信息的交换多采用串行通信方式。本设计中加入串行通信电路的目的主要有三个:一是方便给单片机下载程序;二是使控制器具有远程通信或远程监控的功能;三是将控制器每天采集到数据的极限值和发生异常状态时的数据记录下来,供用户查看。由于单片机的电平和计算机电平不兼容,设计中采用MAX232芯片进行TTL电平和RS-232电平之间的转换。而且系统采用易于实现的异步串行通信方式,用最简单也最实用的奇偶校验作为串行通信错误校验方式。MAX232芯片是专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。其主要特点:(1)符合所有的RS-232C技术标准(2)只需要单一+5V电源供电(3)片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-(4)功耗低,典型供电电流5mA(5)内部集成2个RS-232C驱动器(6)内部集成两个RS-232C接收器(7)高集成度,片外最低只需4个电容即可工作。了解芯片的主要特点之后,接下来我们来认识MAX232它的各个引脚的功能,即有什么作用,以更好地设计串口通信电路。其引脚图如图3-14所示。第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS电平从T1IN、T2IN输入转换成RS-232电平从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)图3-14MAX232的引脚图按照串行通信原理,根据RS-232串口协议和MAX232芯片的引脚功能,结合STC89C52单片机串行中断方式,本设计采用串口方式1(10位数据的异步通信)来构建串口通信电路。电路如下图3-15所示。设计中T1IN连接CMOS电平的单片机的串行发送端;T1OUT连接电脑的RS-232C串口的接收端PCRXD;同理,R1IN连接电脑的RS-232C串口的发送端PCTXD;R1OUT连接CMOS电平的单片机的串行接收端。当然单片机和DB9要共地,这是实现串行通信的前提条件。图3-15串口通信电路本章对充放电控制器的原理以及具体的硬件实现电路进行了详细的介绍,并对电路中使用到的芯片也予以描述,使读者通过阅读可以清晰的明白控制器的设计思路和实现过程。4太阳能充电控制器的软件设计软件设计采用C语言来实现,受C语言模块化编程设计思想的启发,本系统软件设计采用模块化设计思路,即整个控制软件由许多独立的子程序(子函数)模块组成,它们之间通过函数调用实现连接。既便于调试,连接,又便于移植、修改。系统软件主要完成蓄电池电压采集转换,PWM脉冲充电控制、实时LCD显示,异常报警等。包括以下几部分:系统主程序设计,电压采集转换模块,显示模块和异常数据存储模块。4.1系统主程序设计系统主程序流程图如图4-1所示。图4-1系统主程序流程图系统主程序是整个电压测控系统中最重要的程序,是一个顺序执行的无限循环程序。蓄电池电压的采集、转换显示和异常数据的存储都在测控子程序中进行,系统应用主程序采用模块化结构,首先完成初始化,然后就开始按顺序调用各个模块子程序,通过系统自检和控制指令来实现数据处理和电路控制,有效的控制蓄电池充放电。4.2电压采集转换模块为了更好理解模数转换器的对蓄电池电压采集转换过程,下面首先对ADC0804的启动和读取时序图予以介绍。时序图如图4-2所示。图4-2ADC804时序图如图,当CS与WR同时置低,为低电平时,A/D转换器被启动,且在WR上升沿后,经过约100uS后,模数完成转换,转换结果存入数据锁存器,同时,INTR自动变为低电平,表示本次转换已结束。在INTR变为低电平后,若CS、RD同时来低电平,则数据锁存器的三态门打开,把数字信号送出,此时直接读取数字端口数据,便可得到转换后的数字信号。反之,若RD为高电平,三态门处于高阻状态,数据被锁存。芯片的时序图是对芯片的操作的关键依据。按照ADC0804芯片的时序图,此模块通过对其进行启动和读取操作,主要来完成对蓄电池电压的采集转换,并对结果进行数据处理,送给后面的显示模块予以显示。由于ADC0804的转换时间很短,本设计未用中断读取A/D的数据,而是在启动A/D转换后,稍等一会时间(程序中用延时函数实现),直接读取A/D的数字输出口即可。软件设计中AD转换模块的流程图如图4-3所示。图4-3A4.3显示模块通过电压采集转换子程序,通过单片机处理就可以得到蓄电池的实际电压值,本设计用液晶1602作显示器来进行显示。液晶1602通常用并行操作,作为一款显示芯片,为了使其能够正常的工作,首先必须对其进行初始化,然后按照其时序图进行正确操作,才能够得到满意的显示效果,这就是软件设计中显示模块的任务。下面就1602的初始化指令和操作时序进行介绍。液晶1602的初始化,是让其正确显示的前提,其初始化通常如下:EN=0;首先关闭使能,防止开始时显示乱码,同时为以后高脉冲写入数据做准备。write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口write_com(0x0c);//设置开显示,不显示光标write_com(0x06);//写一个字符后地址指针加1write_com(0x01);//显示清零,数据指针清零了解液晶1602的基本操作时序,读懂其操作时序图,是对其读写操作的关键。1602的基本时序如下:读状态输入:RS=L, =H,E=H 输出:DO~D7=状态字读数据输入:RS=H, =H,E=H 输出:无写指令输入:RS=L,=L,DO~D7=指令码,E=H高脉冲输出:DO~D7=状态字写数据输入:RS=H,=L,DO~D7=数据,E=H高脉冲 输出:无作为显示用的芯片,通常对其进行写操作,1602液晶写操作时序图如图4-4所示。图4-41602液晶写操作时序图分析时序图可知,对1602液晶进行写操作的流程如下:(1)通过RS确定是写数据还是写操作,写命令包括使液晶的光标显示/不显示、光标是否闪烁、需/不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。(2)读/写控制端设置为写模式,即低电平。(3)将数据或命令送到达数据线上。(4)给使能端E一个高脉冲将数据送入到液晶控制器,完成写操作。关于时序图中的各个延时,不同厂家生产的液晶延时不同,不过大多数基本为纳秒级,而单片机操作最小单位为微秒级,因此在写程序是可不做延时,不过为了使液晶运行稳定,最好做简短延时即可。本设计采用C51库中自带的延时函数_nop_()(延时一个机器周期的意思)来实现简短延时。按照1602液晶的写操作时序图,结合硬件连接电路,软件设计中电压显示模块的流程图如图4-5所示。图4-5电压显示流程图4.4数据存储模块在对蓄电池充放电控制过程中,会出现电压值过高或过低的异常情况,很有必要对其进行存储,作为以后分析优化使用;同时我们可以按一定周期间隔性的对蓄电池电压进行采集,然后求取电压的平均值,通过分析每天的平均值情况,可以大致了解蓄电池的充电情况,这对以后优化充放电很有用。本设计用常见E2PROM器件AT24C02作为存储器对数据进行保存记录。AT24C02芯片的优点:采用总线标准,串行操作,可以简化硬件电路;同时具有很好的掉电保护功能。由于STC89C52单片机没有总线接口,所以使用时要先通过软件模拟总线的工作时序,正确的调用函数就可方便的扩展总线接口部件。总线模拟时序图如图4-6所示。图4-6总线模拟时序图按照时序图,设计中为了模拟总线通信,写出了几个关键部分的程序:总线初始化、启动信号、应答信号、停止信号等。下面以启动信号为例进行介绍。启动信号的程序如下:在SCL为高电平期间,SDA一个下降沿为启动信号。voidstart()//启动信号{ sda=1; delay1(); scl=1; delay1(); sda=0; delay1();}作为存储芯片最重要的是对其进行写操作,下面将给出总线发送一个字节的流程图如图4-7所示。并根据AT24C02字节写入方式,结合总线时序图,软件中实现异常数据存储的流程图如图4-8所示。图4-7发送字节流程图 图4-8异常数据存储流程图当检测蓄电池充电使电压值超过14.5v造成过充电时,首先蜂鸣器报警,标志位置1,然后调用数据存储函数把此时刻的电压值保存下来;当发生过放电时,同理如此。由于单片机的处理速度很快,因此很容易实现循环检测,做到对蓄电池状态的实时监控。4.5软件调试和仿真为了检验自己设计的单片机系统是否可以正常工作以及设计合理性,很有必要对系统进行模拟仿真。通过仿真可以看出系统硬件设计的不合理部分,以方便改善使得系统更加合理;同时更重要的是验证自己编写的软件程序是否已经实现其功能,完成了相应的设计要求和设计任务。软件调试的过程:首先根据太阳能充电控制器软件设计要完成的设计任务,然后按照C语言模块化设计的编程方法,设计出各个子模块和主程序的算法流程图,最后在KEILC51中去编写相应的程序去实现。当然在编写程序进行软件实现过程中,遇到的第一个问题就是:程序的调试。程序编写后,进行编译,一开始发现了很多错误,一下子把自己卡住了;后来通过查看相关资料,同时咨询指导老师和同学的经验,,在软件的提示下,慢慢地修改,最终把出现的错误都改正过来了。最终在显示输出信息窗口出现了一下信息:Buildtarget'Target1' //创建目标'Target1'compiling控制器移屏.c... //编译文件控制器移屏.c…linking... //链接….ProgramSize:data=21.1xdata=0code=1572 //项目大小:存储空间RAM和ROM的数据存储量creatinghexfilefrom"充放电控制器"...//创建了十六进制的目标文件"充放电控制器"-0Error(s),0Warning(s).//工程“充放电控制器”,编译结果-0个错误,0个警告。当看到这个信息时,我很激动,知道自己编写的程序终于调试成功了。通过编写和调试程序,深深的体会到了程序编写的不易和艰辛,同时积累了很多的经验,收益匪浅。更十分地感谢我的同学和指导老师的无私帮助,是在他们的指导下,我才把程序调试无误完成了软件调试工作。程序调试成功后,下一步就是软件仿真,是检验程序运行是否正确的关键所在,更是优化系统所必须的。Proteus软件为单片机系统提供了良好的仿真环境,所以程序调试完成后,把在KEIL中生成的目标文件HEX文件,下载在仿真系统的单片机中,进行KEIL和proteus联合调试,看系统是否能正常工作。和自己当初预料的一样,在刚开始仿真时,遇到了许多的问题,如1602液晶不显示,系统工作状态指示灯指示状态不正确等等,调试很久找不到关键所在。无奈之下,最后去咨询指导老师该怎么办,老师说可以在模拟的电池板和蓄电池附近并联虚拟的电压表,通过电压表的示数,用以时刻监测蓄电池的充放电状态。果然加上虚拟电压表,通过监测后发现蓄电池两端电压表的示数一直显示为零,明白是AD转换部分出现问题,然后通过修改AD转换模块的子程序,同时调整硬件引脚部分与软件相一致,慢慢的调试,最终蓄电池两端电压表有了示数,液晶1602也正确的显示了。然后再慢慢调试主程序,修改控制指令,最终三个工作状态指示灯也正确指示了。系统共三种状态:正常充电、过充、过放。这里仅列出系统在正常工作状态下的仿真图,如下图4-9所示,以便更形象的看出充电控制器内部结构设计和实现功能。正常工作时的状态:(此时电压13.4V)图4-9正常工作状态仿真其工作原理如下,单片机在软件程序控制下,控制着各个部分硬件电路有序工作,把从模数转换器得到的蓄电池的电压值,用1602液晶去显示,同时绿灯亮起表示系统正在充电。(注:这里为了得到更加逼真效果,仿真时采用直流电机作为负载)。由于利用C语言开发单片机与汇编语言相比,具有易于操作、规范性好、适合模块化处理且容易移植的优点,所以本设计采用C语言作为编程语言。按照C语言模块化程序设计方法,论文编制了系统主程序和各个子程序模块来实现PWM脉宽调制控制策略和各种保护,完成了软件设计任务。5总结与展望5.1设计总结通过复习以前学过的专业知识,同时对相关的资料和论文进行解读与综合分析、研究加上参与课题的实践,在导师的指导和同学的帮助下,最后基本完成了开题报告中确定的设计任务。太阳能已经成为21世纪非常重要的新能源之一。在光伏发电系统中,太阳能充电控制器起着枢纽作用,其性能优劣直接影响实际应用的效率。为了克服市场上常见充电控制器存在的对蓄电池保护不够充分的缺点,本设计基于太阳能充电控制器要实现的具体功能,加上实际工业应用严格要求,从模块化的思想出发具体开展各方面的设计工作,把硬件电路和软件编程有效结合在一起来完成设计任务。具体来讲,论文主要做了下面一些工作:(1)对铅酸蓄电池的充放电原理、影响蓄电池使用寿命的各种因素作了一定的分析,提出了改进的充、放电方式,确定了太阳能充电控制器的总体设计方案。(2)论述了基于单片机的太阳能充放电控制系统的硬件电路组成及其工作原理,并详细分析了各组成单元电路的性能及其工作原理,完成了充电控制器的硬件电路设计。控制器以STC89C52单片机为主控芯片,在软件程序控制下输出PWM控制信号,系统硬件电路设计包括单片机及外围电路设计、充放电电路设计、光耦驱动电路设计、电压显示电路设计、数据存储电路设计、串口通信电路设计等。整个系统的硬件设计采用了模块化设计结构,可以根据实际需要灵活配置,从而有利于实际应用的推广。所涉及的相关模块的电路设计,有的采用的是常见的经典电路的结构,有些是在原有结构的基础上,采用了集成度更高的现代芯片,从而使电路变得更加简单、可靠。不论怎样说,硬件电路设计,其实是一个对自己所学的专业知识吸收、分析、理解、掌握同时再创新的过程,能够灵活使用,遇到新问题能够解决目的也就达到了(3)在硬件设计的基础上,对太阳能充放电控制器进行了算法分析并编制了程序,软件编程实现对蓄电池的过充、过放、反接等保护。在软件设计过程中,深刻体会到了软件设计的灵活和多样性,在确定整体布局方案的思路指导下,先确定每个程序的结构框架即流程图,然后按照自顶向下的层次逐渐完成程序的模块化设计。设计要求是从实际应用需求中抽取而来,由于实际需求往往很复杂,因而一定要把设计要求层次化,首先实现最低要求,解决根本问题,然后再去完善、提高,这就是总结出来的软件开发思路。本设计针对太阳能充放电控制系统的研究,是对单片机技术、通信技术、电子技术和自动化等专业知识的综合运用。在设计和开发的过程中,紧密结合充电控制器的实际情况,综合了目前一些先进的充电控制策略。5.1展望由于实践经验缺乏,以及技术水平和实验条件的限制,本系统部分功能尚未完成,需要进一步完善,主要表现在以下几个方面:(1)对系统中的单片机控制功能需要进一步研究,以便找到功能更加强大的主控芯片去代替,从而更好更快的实现设计要求。(2)对蓄电池电压的采集方式过于简单,精度较低,需要探索采集精度更加精准的经典电路,使得对蓄电池的充电控制更加准确。(3)系统软件设计可增加串行中断控制方式,从而方便用上位机(如微机)通过串行通信进行有效的监控,增强对系统的在线检测和控制功能。参考文献[1]余发山,王福忠.单片机原理及应用技术.徐州:中国矿业大学出版社,2008.6[2]何立民.单片机高级教程.北京:航空航天大学出版社,2001[3]艾永乐,付子义.模拟电子技术基础.北京:中国电力出版社,2008.11[4]郭天祥.新概念51单片机C语言教程—入门、提高、开发、拓展全攻略.北京:电子工业出版社,2009.1[5]谈世哲.ProtelDXP2004电路设计基础与典型范例.北京:电子工业出版社,2007.9[6]马忠梅,张凯等.单片机的C语言应用程序设计(第四版).北京:北京航空航天大学出版社,2007.1[7]侯玉宝,陈忠平,李成群等编著.基于Proteus的51系列单片机设计与仿真.北京:电子工业出版社,2008.9[8]杨金焕.太阳能光伏发电应用技术.北京:电子工业出版社,2009.1[9]周志敏,纪爱华.太阳能光伏发电系统设计与应用实例.北京:电子工业出版社,2010.7[10]魏学业等.太阳能充电控制器研究.新能源,2009.[11]何朝阳,戴君,吴立琴.基于STCl2C54lOAD的太阳能路灯控制器设计.电子设计工程报,2007:27—30.[12]冯垛生.太阳能发电原理与应用[M].人民邮电出版社,2007[13]钟勇等.风光互补发电系统中蓄电池充放电控制器的研究.合肥:合肥工业大学,2006.11[14]张艳红等.一种新型光伏发电充放电控制器.可再生能源,2006.5[15]刘文刚等.基于单片机的新型太阳能控制器研究.广州:华南理工大学2008.11致谢回顾大学的四年学习生涯,有很多收获但也存在不足,在学习生涯即将结束之际,对四年来关心、指导、帮助和鼓励过我的老师、同学们表示衷心的感谢。本毕业论文是在高庆华老师的悉心指导下进行的。从最初的定题,到资料收集,到写作、修改,直至论文定稿,高老师都给了我耐心的指导和无私的帮助,使得我的毕业设计课题能够深入地进行下去,从而使我接触到了许多新知识和实际应用的新问题,使我做了许多有益的思考,加深了对本专业核心知识的认识和对工程设计的思考。在此首先对高老师表示诚挚的感谢和由衷的敬意!还要非常地感谢大学学习期间的授课老师和同学在学习中给我的教导和帮助,谢谢!最后,自己之所以能顺利完成,更要感谢自己的父母,如果没有他们每日辛苦的劳动与从小对我学习严格的要求,而且培养我认真做事的态度,也没有今天的我,可以说正是他们的养育和教导,才使我有了现在的成绩。附录Ⅰ源程序系统主程序代码controller.c:#include<reg52.h> #include<intrins.h> //库函数头文件,代码中引用了_nop_()函数#include"define.h" //变量定义和函数的声明#include"init.h" //初始化模块#include"AD.h" //AD转换模块#include"yj1602.h" //液晶1602显示模块#include"AT24C02.h" //数据存储模块/*主函数*/voidmain(){ init(); init1602(); init24c02(); battery_v=get_ad(); yj1602(); if(battery_v<108)PWM=0;//首次要直接充电 elsePWM=1; while(1) { delay(5000); battery_v=get_ad(); yj1602(); if(battery_v<0)//蓄电池反接,立刻关闭充放电电路,蜂鸣器报警 { PWM=1;FuZai=1;buzzer(); } if(battery_v>=108)//蓄电池电压大于10.8V { if(145<=battery_v) { LED1=0;//开启过电压指示灯 LED=1; LED2=1; PWM=1;//停止充电 buzzer(); //蜂鸣器报警 write=1; AT24c02(); } elseif(120<=battery_v<145)//蓄电池电压大于12v而且小于13.5v { LED=0;LED1=1;LED2=1; TR0=1; //开启固定PWM充电 if(count==4) { PWM=0; } if(count==12) { count=0; PWM=1; } } elseif(battery_v<120) { LED=0;LED1=1;LED2=1; TR0=0; PWM=0; } } else { LED=1;//开启欠压指示灯 LED1=1; LED2=0; FuZai=1;//关闭负载 PWM=0; buzzer(); write=1; AT24c02(); } }}/*****定时中断函数*****/voidtimer0()interrupt1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256;//定时时间为50ms,每50ms中断一次 count++;} 以下代码为define.h //变量定义和函数的声明#defineucharunsignedchar#defineuintunsignedint//定义控制信号端口//充放电控制端口sbitPWM=P3^2;//蓄电池开关sbitFuZai=P3^3;//负载开关sbitLED=P2^3;//充电指示灯sbitLED1=P2^4;//充电指示灯sbitLED2=P2^5;//欠压指示灯sbitbeep=P2^6;//蜂鸣器控制位ucharcount,battery_v;//AD转换sbitcsad=P2^7; //定义AD的片选位sbitadwr=P3^6; //定义AD的WR端口sbitadrd=P3^7; //定义AD的RD端口unsignedcharV1,V2,V3,adval,ad_vo; //1602液晶显示sbitRS=P2^0;//P2.0sbitRW=P2^1;//P2.1sbitEN=P2^2;//P2.2unsignedcharcodetable1[]="TYNCFDKZQXTSJ";unsignedcharcodetable2[]="D:12.0N:";unsignedcharcodelcdd[]="0123456789";ucharxs_vo,num;//AT24c02保存数据bitwrite=0;//写24C02的标志;sbitscl=P2^4;sbitsda=P2^5;ucharp=2,a1;RS232串口通信sbitRXD=P3^0;sbitTXD=P3^1;/*声明调用函数*/voidinit();//初始化主函数voiddelay(unsignedintt);//可控延时函数voiddelay1();//软件实现延时函数,5个机器周期voidbuzzer();ucharget_ad(); // AD程序//1602液晶显示部分voidwrite_com(ucharcom);voidwrite_data(uchardate);voidinit1602();voidyj1602();//AT24c02保存数据voidinit24c02();voidstart();//启动voidstop();//停止voidrespons();//应答voidwrite_byte(uchardate);//ucharread_byte();voidwrite_add(ucharaddress,uchardate);//ucharread_add(ucharaddress);voidAT24c02();以下代码为init.h //初始化模块voidinit()//初始化主函数{ TMOD=0x01; TH0=(65536-50)/256; TL0=(65536-50)%256;//定时时间为50ms,每50ms中断一次 EA=1; ET0=1; PWM=1;//初始化时先关闭充电 LED=0;//开启正常工作指示灯 LED1=1;//关闭异常指示灯 LED2=1; beep=1; write=0; }/*延时函数*/voiddelay(unsignedintt){unsignedintj,i;for(i=0;i<t;i++)for(j=0;j<110;j++);}/*延时函数1*/voiddelay1(){_nop_(); _nop_();_nop_(); _nop_();_nop_();}//蜂鸣器报警函数voidbuzzer(){ beep=0; delay(10); beep=1;}以下代码为AD.h //AD转换模块//ad转换程序ucharget_ad() // AD程序{ csad=0;//置CSAD为0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论