




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第页1引言1.1课题的研究背景当今世界正面临能源短缺,许多国家对能源问题十分重视,包括核能,水力能,风能,太阳能,地热能等可持续发展能源。在诸多的可持续能源中,太阳能是一种取之不尽,用之不绝的清洁能源,在开发和利用过程中能节约大量化石能源,不仅环保,而且安全。太阳能有着非常广阔的前景,在众多的可再生清洁能源中,被科学家认为是未来的主要能源之一,其主要优势有如下几点:(1)到达地球大气外层的太阳照射强度其中约30%被大气层反射回外太空,其余到达地面的能量被大气,海水,陆地,植物吸收。这些能源相当于全世界2009年全部能源消耗的8000倍。也就是说地球表面一小时接收的太阳能足够人类使用一年。(2)存在的普遍性,从空间上来说,太阳能非常容易获得,在地球表面无处不在,同时没有勘探和开采成本,可随时获取,这为能源缺乏的国家提供了一种可行性的方法。(3)环保,在获取和利用太阳能的过程中不会产生污染气体排放,像风能,潮汐能一样对环境无污染,是新时期的理想能源。1.2课题的发展历程和现状1.2.1太阳自动跟踪监控系统的发展历程随着科技的发展,测量领域发展迅猛,仅就测量方式来说,已经从最早的电磁感应的指针仪表发展到以微处理器为基础的智能化仪表。但是,随着虚拟仪器的出现,人类在测量技术上的发展已经进入到一个新的时代。虚拟仪器从最初的设想到现在的技术发日渐成熟,标志着虚拟仪器技术对传统测量技术的工业革命。所谓的LabVIEW就是在基于PC的基础上,用户根据自己的需要和设想开发测量平台。其核心是将传统的测量仪器硬件和计算机软件结合起来,完成测量任务。通过LabVIEW搭建的控制系统,外围硬件设备只是为了数据的传输提供通道,软件才是控制系统的核心。对于使用者来说,可以通过修改LabVIEW后面板的程序来改变平台的功能,这可以充分发挥用户的想象力,按照自己的构思,设计自己的虚拟仪器平台。目前,随着太阳能跟踪技术的发展,由于虚拟仪器有着互换性强、成本低廉等非常明显的优势,虚拟仪器逐渐应用到太阳能跟踪中。1.2.2太阳自动跟踪系统的发展现状:(1)国外发展现状在国外,埃及吉萨电子研究所的AtiaYousry建立的基于LabVIEW和微控制器接口的太阳能电池曲线测量系统,该系统通过虚拟仪器建立光伏太阳能电池及其模块的数据采集系统,在太阳能电池板跟踪太阳过程中,通过虚拟仪器和单片机的串行接口建立通讯,相关数据信息显示在虚拟仪器建立的用户界面上,实时测量和监控太阳能电池的位置信息。印度的NITSilchar电子工程系建立的基于LabVIEWSVM二维太阳能电池板跟踪系统,该系统通过光敏电阻来实现自动跟踪太阳,使得太阳的入射光线垂直照射到太阳能电池板上,得到最大的发电功率,太阳能电池板的运动由两个步进电机控制,该系统跟踪精度高,已经投入使用。(2)国内发展现状在国内,南通大学电子工程系设计的基于LabVIEW的无线监控聚焦光伏发电系统,该系统通过双抛物面反射器聚焦和跟踪技术产生太阳能光伏发电,无线远程监控通过Zigbee和LabVIEW来完成,系统通过上位机和下位机建立通讯,实现对系统在线监测、远程控制、故障诊断等操作。湖北工业大学的曾利霞设计的基于视日运动轨迹的双轴太阳跟踪系统,该系统通过天文知识计算出太阳的高度角和方位角,利用工控机控制两个轴的伺服电机转动,通过LabVIEW设计用户界面,实现双轴跟踪,跟踪精度在±2°。香港大学建筑系的KPcheung和scMHui教授研究了太阳光照角度与太阳能接收率的关系,理论分析表明:太阳的跟踪与非跟踪,能量的接收率相差37.7%,精确的跟踪太阳可使接收器的热接收率大大提高,进而提高了太阳能装置的太阳能利用率,拓宽了太阳能的利用领域。因此,本文研究了关于如何充分高效利用太阳能的方法,希望在所有能接收到阳光的地方都能充分利用这一能源。综上所述,Amonix公司和Acciona太阳能公司幵发的太阳能跟踪装置主要是基于天文知识,计算太阳的运动轨迹,从而驱动跟踪装置跟踪太阳,这种装置不受天气的影响,跟踪精度取决于算法的算法的准确性,同时由于是开环控制,电机在运行中的产生的误差难以消除,随着运行时间的不断增加精度会降低。而对于国内的汉龙集团的核心产品Zstaig2000和武汉理工大学的杨培环设计的光筒式二级传感器,由于是闭环控制,跟踪精度比较高,但是由于光敏元件受天气影响很大,在阴天和多云天气条件下光电跟踪失效,同时可能因为杂光的影响导致误跟踪,因而很难保证跟踪的准确性和稳定性。1.3课题研究的意义太阳能是一种清洁的可再生能源,具备许多化石能源不具备的优点,许多国家都在积极大力发展太阳能发电技术,很大程度上缓解了人类的能源危机,是实现人类可持续发展的有效途径之一,所以当今开发太阳能发电技术势在必行。因为太阳能密度很低,分散性很高,虽然太阳的辐射总量很大,但是到达地球的表面时密度很低,同时太阳能受到天气影响,具有不稳定性,同时也考虑到昼夜,季节周期性变化,地球经纬度,海拔等的不同。使得太阳辐射光到达地球时处于不稳定,不断变化的状态。因而,太阳能的利用装置必须具备相当的面积才能提高光能利用率。当今提高光伏发电效率的途径主要有两个:其一是提高光伏电池的光电转换效率,即有效使用跟踪技术,随着新材料和新工艺的发展,光伏电池光电转换效率越来越高;同时,随着批量化生产,其成本也越来越低一般的对光伏系统实行跟踪,即减少光伏电池的余弦效应。目前,使用较多的是平板光伏发电系统,即把光能转成电能。由于电池本身转化效率较低,同时电池的余弦效应,系统的光电转换效率低,一般在10%左右。带有跟踪技术的平板光伏系统,即具有双轴跟踪的光伏系统,由于实现了跟踪,减少了光电池的余弦效应。因此,附带跟踪技术的平板光伏系统,发电效率可以达到12%~18%。在太阳能跟踪光伏系统中,目前主要有太阳运动轨迹和光电跟踪两种跟踪方式。它们的应用原理不同。太阳运动轨迹跟踪是通过数学公式,得出每天太阳的运动轨迹,从而实现跟踪装置自动跟踪太阳。而光电跟踪是通过光敏元件来检测太阳光线位置变化,从而控制装置跟踪太阳。据测试使用上述两种方式可以使发电量提高30%左右,本次毕业设计在不考虑天气阴晴的情况下,通过光电跟踪自动跟踪太阳,设计的一种基于LabVIEW和单片机的太阳自动监控系统。2太阳跟踪方式及控制系统的选择太阳跟踪方式包括太阳轨迹跟踪,光电跟踪以及二者相结合的混合跟踪的方式。跟踪方式的不同决定了控制系统的复杂程度和控制方式。根据不同的控制方式,可以选择不同的硬件支持。2.1跟踪方式概述由于地球的自转和公转,太阳的位置相对于地面的某一固定点而言,无时无刻都在变化,即使是连续两天的同一时刻,由于太阳的赤纬角的不同,该点的太阳高度角也不同。由于太阳能电池板的发电效率与太阳的入射角密切相关,当太阳光线垂直照射太阳能电池板时,发电效率最高。为了太阳能的利用率,现有的光伏系统通常都采用跟踪控制方式。因此,如果通过实时跟踪太阳光来调整电池板的朝向,使之与与太阳光垂直,从而可以提高太阳能的采集效果。通过理论估计,采用自动跟踪方式将使发电量提高40%,从而降低投资成本的20%以上。2.2跟踪方案选择跟踪太阳光线的方法有很多种,目前国内主要采用以下三种方式:(1)通过计算太阳的高度角和方位角的太阳运动轨迹跟踪方法;(2)通过光电传感器计算太阳光线入射角的光电跟踪方法;(3)太阳运动轨迹跟踪和光电跟踪的混合跟踪;通过比较,在不考虑天气阴晴的情况下本设计采用光电跟踪。2.2.1光电跟踪原理这种跟踪方式的工作原理:太阳光线的变化使光敏元件输出信号发生变化,光电元件通过信号的变化来确定太阳的位置,输信号经过一系列的处理后传给微处理器,从而检测出太阳入射光线的偏差角度ε。当ε大于跟踪系统的跟踪精度时,通过控制系统调整跟踪装置的方位角和高度角,使得调整后的ε小于入射角,此时跟踪机构停止跟踪。过一段时间后,由于太阳的运动引起偏差角度ε再度大于入射角时,此时控制系统再次驱动跟踪装置跟踪,就这样不断循环,通过检测偏差角度ε来驱动跟踪装置跟踪太阳。下边是光电跟踪原理图。图2.1光电跟踪原理图2.2.2光电跟踪流程通过光电传感器采集光电信号,通过这些信号计算太阳入射光线的偏差角,当大于设定的偏差值[]装置定位,小于设定值时,则重新采集光电信号,计算入射光线偏差角,直至大于设定值;跟踪装置定位后,再次采集光电信号,计算入射光线偏差,如果入射光线偏差小于设定的偏差值时,则停止跟踪,如果入射光线偏差大于设定值时,则跟踪装置重新定位,直至小于设定值。以下是光电跟踪流程图。图2.2光电跟踪流程图2.2.3跟踪坐标选择太阳在宇宙中的方位,一般来说我们以目测者为圆心,半径长度为无穷的球体,描述此设想的球体是天球,以其为研究对象。太阳在天空中的位置随时间,日期的不同而不同,尽管太阳相对于地面观测者来说总是变动的,虽然太阳总是变动的,但是太阳东升西落有严格的规律性,我们可以通过两种不同的坐标系来确定,对于赤道坐标系,太阳的位置有赤纬角和时纬角两个参数不易确定,同时赤道坐标系是对整个宇宙空间而言,因此赤道坐标系不适宜太阳能利用工程。对于地平坐标系而言,由于其是针对地面上某一观测点而言的。我们总是从地球某一地平面上观察太阳的运行,不同的经纬度地区,太阳的轨迹也不相同。因此,本次设计选取地平面坐标系来计算,通过计算高度角和方位角来确定太阳的位置。地平面坐标系如图2.3。图2.3地平面坐标系图地平坐标系是以地平圈为基本圈,以地面观测点为基点的天球坐标系,太阳在天空中的位置由太阳的高度角和太阳的方位角确定,如2.3图中所示,太阳的高度角表示的是太阳光线与地平面的夹角,其变化范围是0~90度。方位角表示太阳光线在地面的投影与该地正南方向之间的夹角,正对时为0度。向西为正,向东为负。(1)高度角的计算:(2.1)(2)方位角的计算:(2.2)其中为太阳时角,为太阳赤纬角,为跟踪装置当地的纬度。2.3控制系统的的选择太阳自动跟踪系统的控制系统设计方式有很多种,目前国内外的研究现状,控制部分大致有三种(1)基于DSP控制;(2)基于单片机控制;(3)基于虚拟仪器的控制。由于题目要求,所以选择基于虚拟仪器的控制。下面做一个的简单的介绍。硬件以计算机为核心,利用单片机采集数据,软件以LabVIEW图形化编程方式,该编程语言直观简单,容易操作。与传统的测量仪器相比,虚拟仪器有着非常明显的优势。以前的测量技术主要依赖于硬件,互换性差,与其它设备相连有技术限制,而对于虚拟仪器而言,其软件是核心,这样就使得成本低廉,同时由于虚拟仪器由模块化构成,因此用户可以自己的需求设计,另外互换性强,通过各种总线接口就可以与其它外设相连。这样也方便了LabVIEW和外设间的通讯。由于是图形化编程方式,同时提供了在线帮助,对于初学编程的人来说,门滥很低。可以通过很直观的方式就可以建立非常美观的人机交互界面,各种所要测试的数据信息也在可以直观的显示在界面上。LabVIEW对于测试、控制领域来说是非常好的一个助手。综上所述,本课题之所以选择虚拟仪器和单片机相结合,主要有以下优势:(1)单片机具有功能强大的I/O口,为搭建外围电路创造了了条件;同时内部集成了A/D转换电路,可以对光电传感器采集的电信号经性转换;另外内部有功能强大的的定时器/计数器及通讯接口,方便了和基于PC机的虚拟仪器通讯。(2)单片机相对于DSP和运动控制卡而言,控制成本低,使用简单。(3)采用基于PC机的虚拟仪器作为上位机可以控制多台下位机,同时由于LabVIEW编写代码简单,对于初学者而言,无需太多的编程经验就可以轻易上手。(4)通过Labview中的TCP/IP相关函数组可以实现远程控制。选择C/S模式,即客户/服务模式。一方面可以接受太阳能跟踪系统发过来的信息,并将信息通过串行端口送至服务器端的计算机;另一方面,接受服务器发送的控制信息,并通过无线模块送至太阳能跟踪系统,驱动跟踪装置跟踪太阳,实现远程控制更加智能化人性化。基于以上优点,我们选择了虚拟仪器和单片机相结合的控制方式。3太阳自动跟踪监控系统的硬件设计3.1光电采集模块本模块中所采用光电传感器为4块相同的光敏电阻用来作四象限光电采集部分。太阳跟踪传感器是本系统的关键部件。为了保证太阳能板的受光面始终与太阳光线保持垂直而不发生偏离,采用特制的四象限光敏电阻作为太阳跟踪误差校正用传感器。如图3.1所示为四象限跟踪太阳传感器原理图,当光轴对准太阳时,光斑的中心在光轴上。四个象限接收到相同的光功率,输出相同的电压信号。当光轴未对准太阳时即太阳光与光轴成一角度时,光线经光学系统照射到四象限光电池上形成的光斑必然发生偏移即由于各象限的光功率与各象限的光斑面积成正比,每个象限被光斑覆盖的面积不同,因此各象限光电池产生的电压不尽相同,根据上述将进行A/D转换,然后送入单片机,单片机通过驱动设备可控制俯仰角电机和方位角电机转动。直到则表明系统光轴已经对准太阳,根据以上原理即可对太阳能板位置误差进行校正。图3.1光电采集模型图3.2单片机控制步进电机设计本次设计的控制系统选用了AT89C51单片机作为智能单元。它是一种低功耗,低电压,高性能的8位单片机。片内带有一个4KB的FLASH可编程,可擦除的只读存储器。该系统为地平坐标系的双轴自动跟踪控制系统,因此采用双坐标步进电机控制,双坐标步进电机控制就是在X轴方向控制1台步进电机,在Y轴方向控制1台步进电机。这2台步进电机同时驱动同一个对象,使对象在一个平面上以任意曲线运动。AT89C51单片机通过P2口输出控制脉冲信号,P1.0~P1.3为一路,P2.0~P2.3为一路,分两路各控制1台步进电机,采用ULN2803达林顿芯片驱动步进电机各相绕组,图中L1,L2即为步进电机的各相线圈,光电采集和A/D转换部分采用PDF8591芯片动作,下边是整套下位机硬件设计电路图。图3.2太阳自动跟踪硬件电路图3.3虚拟仪器和单片机相结合的太阳自动跟踪监控系统结构框图如图3.3所示主要由上位机、下位机、执行机构组成,其中上位机主要是由LabVIEW软件编写的人机交互界面构成;下位机主要由单片机AT89C51、高度角和方位角绝对式编码器、光电传感器、高度角和方位角步进电机、高度角步进电机驱动器和方位角步进电机驱动器、信号调理电路组成;执行机构由减速器和电机构成。各部分的功能如下:(1)上位机:即人机交互界面,就是通过LabVIEW做的前面板界面。主要功、 能包括:太阳运动轨迹的计算,可以提前计算出一天中太阳的运动轨迹;通讯、端口的设置,包括通讯口和波特率的设置;跟踪方式的选择,如太阳运动轨迹跟踪、光电跟踪、混合跟踪;显示跟踪装置的各个时刻的高度角和方位角信息。上位机主要是向下位机发送控制指令,驱动步进电机转动使太阳跟踪装置跟踪太阳光线,同时下位机把跟踪装置的位置信息反馈给上位机,以便于监测跟踪装置的位置状态。同时上位机还预先计算出太阳的运动轨迹,以便于控制跟踪装置太阳运动轨迹跟踪。(2)下位机:下位机主要由驱动器、89C51单片机、髙度角和方位角步进电机、光电传感器、高度角和方位角编码器构成,它们构成一个闭环的控制系统。在太阳运动轨跟踪过程中,上位机发送控制命令给单片机控制高度角和方位角电机的转动,同时单片机将跟踪装置的高度角和方位角位置信息通过串口通讯传给上位机,通过和入射角的比较驱动电机进行下一次的跟踪。在光电跟踪过程中,光电传感器的电流信号经过转换、放大,把太阳跟踪装置偏离太阳入射光线的偏差角度传给上位机,上位机驱动电机使跟踪装置跟踪太阳。(3)执行机构:该部分主要有两部分组成,其中减速器的作用是减速,使得跟踪装置平稳缓慢转动;电机包括高度角电机和方位角电机,作用是驱动跟踪装置做仰俯运动和水平旋转运动。该系统通过光电传感器(使用四象限光敏电阻)来采集太阳入射光线,当太阳入射光线发生变化时(即未垂直照射在光电传感器上时),光电传感器输出的电信号发生变化,这种电信号经过信号调理电路的I/V转换和放大后传给单片机,单片机通过计算处理后把电压信号通过串口通讯传给上位机,PC机通过LabVIEW对这些信号处理后通过串口通信发送指令给单片机,单片机接到指令后驱动高度角和方位角电机转动,从而实现了跟踪装置跟踪太阳的目的。图3.3控制系统组成结构原理图4太阳自动跟踪监控系统软件设计对于一个基于LabVIEW的控制系统,软件设计是太阳能跟踪系统的关键,设计一个完整的软件流程同时能实现各部分程序是本设计的重点。本章以LabVIEW为开发平台,对太阳自动跟踪监控系统的软件进行设计,主要包括系统的整体流程设计,光电跟踪软件设计,其他主要功能设计,监控界面的设计。4.1LabVIEW介绍LabVIEW是时下比较流行的编程语言,其源代码称之为G代码,它和平常我们所用的编程语言C和C++有非常大的差别,C和C++编写的代码是从上至下运行,LabVIEW在程序运行时是按照数据流执行的,数据流的方向表明代码执行的先后顺序,对于一个程序而言,当它所需要的数据全部获取后才得出结果。虚拟仪器集数据的釆集和分析、控制、输出、人机交互界面等功能与一身,只要确定了接口设备,用户就可以通过软件编程来完成各种功能。虚拟仪器的实质是通过PC机各种总线和各种控制器建立通讯,控制器将采集的信号经过一系列的处理传给虚拟仪器,虚拟仪器通过软件编程对数据做出相应的处理。LabVIEW程序分为前面板和程序框图两部分。前面板是用户接口,用于向程序中输入各种控制参数,并以数字或图形形式输出测试结果。我们可以把它想象为传统仪器的面板,面板上自然会有表头、按钮、拨盘等各种元件。程序框图是程序的源代码,可以把它想象为传统仪器机箱里用来实现仪器功能的零部件。下面分别介绍一下程序前面板和程序框图。4.1.1前面板前面板是人机交互的界面,主要有显示控件和控制控件构成,显示量主要用于向用户显示数据和信息,控制控件主要用于用户向程序发送控制信号及数据。我们如果将VI程序比作一部机器的话,控制控件相对于仪器的控制开关和数据进入端口,而显示控件相当于机器的显示屏,把后台的数据经过分析处理后显示在屏幕上。如图4.1所示,为前面板的示意图。图4.1LabVIEW前面板示意图4.1.2程序框图用户通过程序框图编写图形化源代码,又称G代码,这种代码类似于传统编程语言的源代码,通过图形化源代码对前面板上的输入量进行控制。节点的连线表示程序框图中数据的流向。同时,程序框图中提供了丰富的函数控件,这些函数控件能彻底的把工程师从复杂枯湿的文本编程中走出来。如图4.2为程序框图示意图。图4.2LabVIEW程序框图示意图4.2光电跟踪软件设计4.2.1设计流程这里的光电跟踪指的是太阳方位的跟踪,光电跟踪流程图如图4.3所示,程序开始运行后,根据光电传感器采集到太阳方位的四路信号经过放大、I/V和A/D转换后变成Ua、Ub、Uc、Ud,根据这四组信号计算出太阳光斑中心在四象限桂光电池上的当量偏移量Ex和Ey,通过Ex和Ey可以计算出太阳光线在方位角和高度角上的偏移角度βx和βy,如果|βx|和|βy|的值都小于阀值入射角θ,则说明太阳光线的累积误差比较小,在允许的误差范围内近似平行于太阳光线,不需要跟踪。当|βx|大于入射角θ,则说明光电传感器的主光轴不与太阳光线平行,需要进行方位角跟踪,当βx大于0时,说明太阳光线在方位角方向在向西偏移,则方位角步进电机驱动太阳电池板向西转动;当βx小于0时,说明太阳光线在方位角方向向东偏移,则方位角步进电机驱动太阳电池板向东转动。当|βy|大于入射角θ,则说明光电传感器的主光轴不与太阳光线平行,需要进行高度角跟踪,当βy大于0时,说明太阳光线在高度角方向向南偏移,则高度角步进电机驱动太阳电池板向南转动;当βy小于0时说明太阳光线在高度角方向在向北偏移,则高度角步进电机驱动太阳电池板向北转动。调整完毕后,一次跟踪结束。图4.3光电跟踪流程图下位机光电传感的数据采集流程框图如图4.4所示,数据采集程序开始时,首先将采集次数初始化为0,STC89C51单片机将采集到的四路信号放在一个数组中,每采集一次数据采集次数加1,延时2s后进行下一次的数据釆集,当采集次数大于设定值n时,数据采集结束,跳出循环。最后将采集到的每组数据中的四个值相对应的相加取均值,均值后的结果为U1、U2、U3、U4。这样做的主要目的通过多次数据采集减少了由于天气变化和其它杂光干扰而造成的数据波动,从而可以获得相对稳定和实时反应太阳光照情况数据,也提高了系统的稳定性。另外,延时时间可根据跟踪系统安装地的太阳辖射和气候情况所决定,一般为几秒至几十秒;采集数据的次数一般为4至10次,采集次数并不是越大越好,次数越多不仅增加了系统的数据计算负担,同时由于次数过多,所需的时间也多,采集的数据可能会与开始时刻的数据出入很大,这样会降低跟统的稳定性和跟踪的精度,因此采集次数视情况而定。图4.4数据采集流程图4.2.2程序设计太阳自动跟踪监控系统采用光电跟踪时高度角和方位角的调整程序如图4.5和图4.6所示。图4.5为方位角调整程序,当采集到的βx绝对值大于入射角0.2且值为正数时,上位机发送数字77给下位机,方位角步进电机正转,即向西转动;当采集到的βx绝对值大于入射角0.2且值为负数时,上位机发送数字78给下位机,方位角步进电机反转,即向东转动。如果βx的绝对值比0.2小,说明太阳光线的累积误差比较小,在允许的误差范围内近似于太阳光线,不需要跟踪。图4.5方位角调整程序图4.6为高度角调整程序,当采集到的βx绝对值大于入射角0.2时,说明光电传感器的主光轴不与太阳光线平行,需要进行高度角跟踪,当βy大于0时,发送数据80给下位机,高度角步进电机正转,即向南偏移;当βy小于0时,发送数据79给下位机,高度角步进电机反转,即向北偏移;如果βx的绝对值小于0.2,说明太阳光线的累积误差比较小,在允许的误差范围内近似平行于太阳光线,不需要跟踪。图4.6高度角调整程序4.2.3通讯口程序设计计算机和单片机之间的数据传送有两种通讯方式:串行通讯和并行通讯。由于串行通讯具有成本低、线路少、适合远距离传输等优点,而并行通讯虽然传输速度快,但是由于线路多容易产生干扰同时成本髙,因此本课题采用串行接口和上位机通讯。如图4.7所示为串口通讯的基本程序。其中通讯口可以选择coml、com2、com3,本文通讯端口选择coml口;波特率的选择有4800、9600、19200,一般来是说波特率越高,传输的速率也越快,但是有时候有些无法避免的干扰,核能使某个频率段通讯错码率很高,反而是较低的波特率可以实现稳定的通讯,本文通讯的波特率选择9600;对于串口资源中终止符的设置,将其设置为TRUE,避免当通讯过程中收到ASCII码为10的字符(即换行符)时停止结束数据,不管后面有没有数据。在上位机和下位机通讯时,主机和从机在发送和接收数据时要有一定的时间间隔,通常时间间隔设置为200ms就行了。设置时间间隔主要目的是因为串口是底层硬件,上位机发送数据到串口需要一定的时间,同时单片机对上位机的指令也要一定得反应时间,为了上位机和下位机传输数据不发生错乱,因此要时间延迟。另外还需要设定的串口读的最大字节输入数,在上位机和下位机通讯时,如果设定的最大字节输入数为50时,如果串口缓冲区的字节输入数少于50,则程序会停留在串口读的节点上,如果在超时的时间(默认为20s)内没有达到50个字节数的话,程序就会报超时的错误,解决办法是加了属性节点BytesatPort,目的是读取当前缓冲区的所有字节数,不需要任何等待。通讯完毕后要关闭串口。图4.7通讯口程序4.3上位机监控界面通过基于PC的图形化编程软件LabVIEW建立人机界面,用户可以直观方便的在前面板上设置跟踪系统的运行参数,同时太阳跟踪系统的运行状态、参数的变化可以直观的的显示在人机界面上,用户一目了然。4.3.1通讯口监控如图4.8所示,设置通讯端口以及波特率大小,同时控制通讯的通断。图4.8通讯口设置4.3.2光电跟踪监控如图4.9和4.10所示,显示跟踪装置高度角和方位角的跟踪情况。图4.9高度角监控界面图4.10方位角监控界面4.4光电跟踪监控系统的测试测试过程中首先将光筒式太阳方位检测传感器按照上面介绍的方式水平放置在阳光底下进行光电跟踪的实验,每隔20分钟单片机采集—次四象限的四路输出电压,然后根据式(2.1)和(2.2)计算当前时刻下太阳光线在方位角和高度角的偏;移分量Ux和Uy,同时根据电子星图软件SKYMAP得到相应时间下的太阳高度角和方位角的科学计算值和,则和可以看作为当前时刻下太阳光线的偏移角度值,通过绘制Ux和以及Uy和a的关系曲线,看Ux和Uy是否能反映太阳光线在方位角和高度角的方向上的偏移角度。图4.10、图4.11、图4.12为2014年4月12号所测得的数据绘制的关系曲线图。图4.10太阳光线在方位角上偏移角度的关系曲线由图4-5所示,由于太阳方位角的变化范围为-1200~1200正午时刻太阳方位角为00,由于正午时刻之前,太阳光线在B和C象限上的光照面积比A和D象限大,所以Ux为负值,随着方位角的增大,Ux也逐渐增大,并且在正午时刻(12点23分)由负值变为正值,Ux在下午3点40左右达到最大值,之后随着方位角继续向西最大,Ux逐渐减小,在日落时刻为0,因为随着方位角的继续最大,超出了光电传感器的检测范围,太阳光落在四象限硅光电池感光区域的面积逐渐减小,直至为0。通过上图我们可以得知,可以直白的表示太阳光线在方位角上的变化情况角度。对于太阳光线在高度角上的偏移角度与Uy关系情况,需要分上午和下午分别来分析,因为在正午时刻之前,高度角一直增大,正午时刻之后,高度角逐渐减小。图4-6为上午太阳光线在高度角上的偏移角度a与Uy的关系曲线图。图4-7为下午太阳光线在高度角上的偏移角度a与Uy的关系曲线图。图4.11上午太阳光线在高度角上的偏移角度a与Uy的关系曲线图图4.12下午太阳光线在高度角上的偏移角度与Uy的关系曲线图由图4-10所示,由于太阳高度角的而变化范围是0~900,太阳光线在A和B象限上的光照面积比C和D象限大,所以Uy-直大于0。太阳光线在正午时刻之前,太阳的高度角一直增大,相应的Uy—直增大,直至到正午时刻达到最大值。下午太阳髙度角由大到小变化,相应的Uy也一直减小,直至太阳落山时刻,太阳光线变暗,Uy趋于0。所以,通过上面的实验可以说明太阳光线在方位角和高度角的偏移分量Ux和Uy可以很好地反映太阳高度角和方位角的变化,因此可以通过实时采集Ux和Uy的值传给上位机来控制跟踪系统进行光电跟踪。5总结经过为期近三个月的努力,我的毕业设计终于接近了尾声。这次的毕业设计我选择的是基于LabVIEW和单片机的太阳自动跟踪监控系统的设计研究。没选题之前我就清楚的知道毕业设计不是一项简单的工作,后来开始做这项工作时才深深的体会到毕业设计到底是个什么概念,真的需要以一种极其认真的态度对待毕设,需要整整一个长期的过程来完成的任务,真的很不简单。毕业设计是对四年来的学习的一次检验,这才是对大学学习真正的考核。纸上得来终觉浅,需知此事要躬行。以前总觉得只要每次的期末考试考个优秀的成绩就很不错了。但是,当做了这次的毕设才觉得以前的自己在动手能力方面还存在欠缺,原来自己学的那点知识远远不足以顺利完成此次的毕设。我的毕设首先要掌握好电力电子技术,数模电,单片机,C语言程序设计,电机学,微机原理与接口技术等课程。开始的时候发现这些知识基本忘得差不多了,于是又拿着书重新温习了一遍,同时还要去图书馆自学关于LabVIEW图形化编程,在网上看教学视频,不懂的地方还要加入LabVIEW讨论群进行讨论。这些东西必须自己亲自去实践,谁都替代不了。基本硬件电路还好,可是像控制电路,驱动电路,A/D转换电路之类的实在是无从下手,好复杂。只能根据查阅的资料分析并加以改善得出最符合设计要求的。在毕设中一些问题有时候实在是想不通,尤其是做实物模型时光电板不能很准确的跟踪太阳光,这里需要处理软件程序的更改问题同时要进行不断地调试,原理只是理论,而实物运行则是实践,最使我感到头疼的是关于LabVIEW的编程和与整个下位机系统的通讯,由于始终没实现数据采集卡的配置问题,致使毕设最终还是没能达到完美的设计结局。除此之外,在毕设过程中也毫无疑问提高了自己的独立思考与自学能力,因为每个人的题目都是独一无二的,不像以往的课程设计有人能和你一起探讨,所有的知识都要自己通过查阅资料来获取,每一个的结果都要经过在软件中一次次失败最后才能得出正确结果。这也是我最后一次以一个学生的身份来完成一项重要的任务,在设计的过程中我受益匪浅。一路磕磕绊绊,毕设终于到了最后的阶段,毕设也为我四年的大学四年学习生涯画上了圆满的句号。附录A附录B#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineacharchar#defineAddWr0x90//写数据地址#defineAddRd0x91//读数据地址#defineControl_Byte10x0#defineControl_Byte20x1 #defineControl_Byte30x2#defineControl_Byte40x3uintx,y,x1,y1,z1;uchari,a,num1,num2,num3,num4,numx,numy,qian,bai,shi,ge,sd,t1,t2,ADtemp;achart,u,u1;sbitSda=P3^7;//定义总线连接端口sbitScl=P3^6;sbitA1=P1^0;sbitB1=P1^1;sbitC1=P1^2;sbitD1=P1^3;sbitwela=P2^7;sbitdula=P2^6;sbitF1=P1^0;sbitF2=P1^1;sbitF3=P1^2;sbitF4=P1^3;unsignedcharcodeFFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//反转unsignedcharcodeZFW[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};//正转unsignedintK;unsignedcharcodeFFZ[]={0xEE,0xCC,0xDD,0x99,0xBB,0x33,0x77,0x66}; //反反转unsignedcharcodeZZZ[]={0x66,0x77,0x33,0xBB,0x99,0xDD,0xCC,0xEE};//正正转unsignedcharcodeZFZ[]={0x6E,0x7C,0x3D,0xB9,0x9B,0xD3,0xC7,0xE6}; //正反转unsignedcharcodeFZZ[]={0xE6,0xC7,0xD3,0x9B,0xB9,0x3D,0x7C,0x6E}; //反正转unsignedcharcodeFFM[8]={0xEF,0xCF,0xDF,0x9F,0xBF,0x3F,0x7F,0x6F};unsignedcharcodeZFM[8]={0x6F,0x7F,0x3F,0xBF,0x9F,0xDF,0xCF,0xEF};ucharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetablewe[]={0xBE,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};voidmdelay(){;;}voiddelay1(uintz){ for(x=110;x>0;x--) for(y=z;y>0;y--);}voidspeed(uintz){ for(t1=50;t1>0;t1--) for(t2=z;t2>0;t2--);}voiddelay2(uintu){ for(t=u;t>0;t--);}voidinit(){ Scl=1; mdelay(); Sda=1; mdelay();}voidstart(){ Sda=1; mdelay(); Scl=1; mdelay(); Sda=0; mdelay();}voidstop(){ Sda=0; mdelay(); Scl=1; mdelay(); Sda=1; mdelay();}voidrespons(){ uchari=0; Scl=1; mdelay(); while((Sda==1)&&(i<<250))i++; Scl=0; mdelay();}voidwritebyte(uchardate){ uchari,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; Scl=0; mdelay(); Sda=CY; mdelay(); Scl=1; mdelay(); } Scl=0; mdelay(); Sda=1; mdelay();}ucharreadbyte(){ uchari,k; Scl=0; mdelay(); Sda=1; for(i=0;i<8;i++) { Scl=1; mdelay(); k=(k<<1)|Sda; Scl=0; mdelay(); } mdelay(); returnk;}voidwrite_add(ucharaddress,uchardate){ start(); writebyte(0xa0);//地址 respons(); writebyte(address); respons(); writebyte(date); respons(); stop();}ucharread_add(ucharaddress1,ucharadd,ucharch){ uchardate; start(); writebyte(address1); respons(); writebyte(ch); respons(); start(); writebyte(add); respons(); date=readbyte(); stop(); returndate;}voidsend_add(ucharaddress,ucharch,uchardate){ start(); writebyte(address); respons(); writebyte(ch); respons(); writebyte(date); respons(); stop();}voidmotor_ffw(){unsignedchari;//unsignedintj; //for(j=0;j<10;j++)//转1*n圈{for(i=0;i<8;i++)//一个周期转30度{if(K==1)P1=FFW[i]&0x1f;//取数据 if(K==2)P1=ZFW[i]&0x1f; if(K==3)P1=FFZ[i]; if(K==4)P1=ZZZ[i]; if(K==5)P1=FZZ[i]; if(K==6)P1=ZFZ[i]; if(K==7)P2=FFW[i]; if(K==8)P2=ZFW[i];speed(sd);//调节转速}}}voiddisplayg(){ wela=1; P0=tablewe[1]; wela=0; dula=1; P0=tabledu[ge]; dula=0;}voiddisplays(){ wela=1; P0=tablewe[2]; wela=0; dula=1; P0=tabledu[shi]; dula=0;}voiddisplayb(){ wela=1; P0=tablewe[3]; wela=0; dula=1; P0=tabledu[bai]; dula=0;}voidmax(){ send_add(AddWr,Control_Byte1,0); delay1(5); num4=read_add(AddWr,AddRd,Control_Byte1); send_add(AddWr,Control_Byte2,0); delay1(5); num1=read_add(AddWr,AddRd,Control_Byte2); send_add(AddWr,Control_Byte1,0); delay1(5); num2=read_add(AddWr,AddRd,Control_Byte3); send_add(AddWr,Control_Byte1,0); delay1(5); num3=read_add(AddWr,AddRd,Control_Byte4); }voiddisplay1(){ displayb(); delay2(10); displays(); delay2(10); displayg(); delay2(10);}voidmain(){ init(); while(1) { max(); t=num3-num1; u=num4-num2; if(u1>=0) {u1=t;} if(u1<0) {u1=-t;} ge=u1%10; shi=u1%100/10; bai=u1/100; // display1(); if(t>=-3&&t<=3) {P2=0;} if(t>3&&t<10) {K=8;sd=10;motor_ffw();} if(t>=10&&t<100) {K=8;sd=5;motor_ffw();} if(t>=-7&&t<-3) {K=7;sd=10;motor_ffw();} if(t>=-100&&t<-7) {K=7;sd=5;motor_ffw();} if(u>-7&&u<1) {P1=0;} if(u>=1&&u<5) {K=1;sd=10;motor_ffw();} if(u>=5&&u<100) {K=1;sd=5;motor_ffw();} if(u>-10&&u<=-7) {K=2;sd=10;motor_ffw();} if(u>-100&&u<-10) {K=2;sd=5;motor_ffw();} /*if(t>240&&u>240) { sd=sd1=50;K=3; motor_ffw(); } if(t>30&&t<100&&u>30&&u<100) { sd=sd1=50; K=4; motor_ffw(); } if(t>240&&u>30&&u<100) { sd=sd1=50; K=5; motor_ffw(); } if(t>30&&t<100&&u>240) { sd=sd1=50; K=6; motor_ffw(); } else { P1=0; } /* if(t>240&&t<=255) { sd=150;K=2;motor_ffw1(); //P1=0X00; } elseif(t>230&&t<=240) { sd=100;K=2;motor_ffw1(); } elseif(t<=230&&t>200) { sd=10;K=2;motor_ffw1(); } elseif(t>20&&t<=35) { sd=150;K=1;motor_ffw1(); //P1=0X80; } elseif(t>35&&t<=50) { sd=100;K=1;motor_ffw1(); } elseif(t>50&&t<=100) { sd=10;K=1;motor_ffw1(); } else { P3=0; } /* elseif(ADtemp<=210&&ADtemp>=180) { K=2;motor_ffw(); //P1=0Xc0; } /*elseif(ADtemp<=180&&ADtemp>=150) { P1=0Xe0; } elseif(ADtemp<=150&&ADtemp>=120) { P1=0Xf0; } elseif(ADtemp<=120&&ADtemp>=90) { P1=0Xf8; } elseif(ADtemp<=90&&ADtemp>=60) { P1=0Xfc; } elseif(ADtemp<=60&&ADtemp>=30) { P1=0Xfe; } if(num1-num3>10) {D1=1;} if(num3-num1>10) {C1=1;} if(shi==0) {P1=0;} */ //mdelay(); //displays(); //mdelay(); }附录C参考文献[1]王国安,米鸿涛,邓天宏等.太阳高度角和日出日落时刻太阳方位角一年变化范围的计算[J].气象与环境科学,2007(9):161-164.[2] AlistairB.Sproul.Derivationofthesolargeometricrelationsusingvectoranalysis[J].RenewableEnergy,2007(32):1187-1195.[3]刘海波,王建芳,于海芹等.太阳能工程中几种相关角度的计算及应用[J].中国建设动态:阳光能源,2010(6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲状腺消融术后护理规范
- 消防培训课件版
- 宠物肿瘤术后护理常规
- 脂肪间充质干细胞研究与应用
- 新生儿护理演示指南
- 2025至2031年中国沥青混合料旋转压实仪行业投资前景及策略咨询研究报告
- 学习用品个性化定制行业深度调研及发展项目商业计划书
- 定制化广告解决方案行业跨境出海项目商业计划书
- 2025至2031年中国抗静电瓷质复合活动地板行业投资前景及策略咨询研究报告
- 果园采摘体验园企业制定与实施新质生产力项目商业计划书
- 门店卫生管理制度
- 山西省卫生院社区卫生服务中心信息名单目录
- 工程量核定单格式
- 西方经济学章节练习题题库及答案1-16章(全)
- 全国交通运输行业“捷安杯”城市轨道交通服务员(职业组)职业技能竞赛题库及答案
- 电动车充电突发事件应急预案演练记录
- 办公室主任培训[1]ppt课件
- 射阳汉鼎新能源科技有限公司分布式光伏并网发电项目电站运维合同
- 护理查房胎盘早剥
- 分部开工申请表
- 肺炎住院病历及病程记录教学文案
评论
0/150
提交评论