版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的太阳能追踪系统设计摘要随着我国经济的发展越发迅速,各种各样的能源使用量远远跟不上生产量,其中最主要的能源就是炭和石油资源,所以寻找新能源一直都是我们现在一直都在进行的目标。其中太阳能的无污染,可以再生,储存更容易等优点,一直都是现发展下重点开发对象。但太阳能利用效率低一直都是一个问题,所以本设计就是就是为了更有效的利用太阳能而设计的。本设计是以AT89C52单片机为核心,设计的一个太阳能自动追踪系统。系统主要包括光敏传感器、模数转换部分、单片机为处理器、步进电机和电机的驱动电路等,传感器采用光敏二极管作为光电转换器件,将四个完全相同的光敏二极管分别放置于电池板四个方向分别对光照强度采集,然后由光敏传感器电路将光照强度转换为电压信号,再由ADC0809将电压信号转换为数字信号送入单片机,最后单片机将数字信号进行对比控制电机转动。关键词太阳能自动追踪;A/D转换;光敏二极管;步进电机DesignofSolarTrackingSystemBasedonSingleChipMicrocomputerABSTRACTWiththerapiddevelopmentofChina'seconomy,theuseofallkindsofenergyisfarfromkeepingupwiththeproduction.Amongthem,themostimportantenergyiscarbonandoilresources.Therefore,thesearchfornewenergysourceshasalwaysbeenourongoinggoal.Amongthem,solarenergyhastheadvantagesofnopollution,regenerationandeasierstorage,andhasalwaysbeenthefocusofdevelopmentundercurrentdevelopment.However,thelowefficiencyofsolarenergyutilizationhasalwaysbeenaproblem,sothisdesignisdesignedtoutilizesolarenergymoreeffectively.SolarPanelAutomaticallyTrackingSystemisdesignedbasedonAT89C52microcontrollerinthispaper.Thesystemincludesphotosensitivesensor,A/Dconverter,SCM,steppingmotor,drivecircuitofmotorandsoon.Photodiodeasalightsensor-powerconversiondevices,thefouridenticalphotodiodeswereplacedinfourdirectionspanelswerecollectedonthelightintensity,thenthelightintensitywillbeconvertedtoVoltagesignalbythelightsensorcircuit,VoltagesignalisputintoSCMbytheADC0809toconvertdigitalsignals,theSCMcomparedigitalsignalswithdigitalsignalstocontrolmotorrotation.KeywordsAutomatictrackingsolar;A/Dconversion;Photodiode;Steppingmotor目录摘要...........................................................IABSTRACT.......................................................II1绪论.........................................................11.1选题背景................................................11.2国内外现状..............................................21.3课题研究的目的..........................................31.4课题研究的意义..........................................41.5论文结构................................................52太阳能自动追踪系统总体设计...................................72.1太阳的追踪方式..........................................7 2.1.1光电自动追踪......................................8 2.1.2视日运动轨迹追踪..................................9 2.1.3光电追踪和视日追踪的理想结合......................102.2系统总体设计要求的分析..................................11 2.2.1总体要求..........................................12 2.2.2系统总体设计......................................132.3本章总结................................................143系统的硬件设计...............................................15 3.1单片机控制电路的设计....................................15 3.1.1复位电路的设计....................................16 3.1.2晶振电路的设计....................................17 3.2光电转换电路............................................18 3.2.1光电传感器........................................19 3.2.2光电转换电路原理和设计............................20 3.3AD转换模块电路设计.....................................21 3.3.1AD转换模块........................................22 3.4步进电机驱动电路的设计..................................23 3.4.1步进电机..........................................24 3.4.2步进电机的控制方法................................25 3.4.3步进电机驱动电路..................................26 3.5外围电路设计............................................27 3.6实物的搭建..............................................28 3.7本章总结................................................294软件设计.....................................................30 4.1按键程序................................................30 4.2指示灯程序..............................................31 4.3模数转换程序............................................32 4.4驱动电路程序............................................33 4.5AD电压采样程序.........................................34 4.6本章总结................................................355结论.........................................................36 5.1总结....................................................36 5.2设计的不足之处和改进....................................37参考文献.......................................................38附录...........................................................39致谢...........................................................401绪论1.1选题背景能源是我们人类生存在这个世界上的物质基础.随着石油煤炭等矿物燃料的不断消耗和世界环境的不断恶化,越来越多的国家都在认真探索能源多元化的途径,积极展开新能源和可再生能源的研发工作[1]。在可预见的未来,煤炭、石油、天然气等矿物在世界能源中仍然占有很大比重,但人们对新能源的开发和使用也变得日益重视,其中特别是核能以及太阳能、风能、地热能、生物能等可再生能源的利用,对其的重视在能源消耗比例正在显著提升。据统计[2],20世纪90年代,全球煤炭和石油的发电量每年增长l%,而太阳能发电每年增长达20%,风力发电的年增长率更是高达26%。从这方面可以看出,太阳能似乎是未来社会能源的主要发展方向。人们目前直接利用的太阳能主要有三大领域[3],光热转换、光电转换和化学转换,还有的就是储能技术。关于太阳能的产品也是各种各样,热水器、采暖、干燥器、太阳灶、海水淡化装置、热力发电装置等等。太阳能作为一种可再生的新能源,对比其他常规能源有以下优点[4]:首先,太阳能是人类可以利用的最丰富的资源,据统计,在过去漫长的亿万年中,太阳只消耗了它本身的2%能量,可以说是取之不尽,用之不竭。其次,不论身在何处,太阳能的运输都不存在问题,就地开发使用,因为它的这个优点,对一些交通不发达的边远地区、农村的利用价值就更高了。最后就是,太阳能是一种无污染的能源,在开发和使用的过程中,也不会产生噪音和废物,更有利于生态平衡。当然有优点也就有缺点:最明显的就是,它的能流密度比较低,太阳光好的时候,一平方米的地方能够接收的能量只有1千瓦左右。这就需要很大的采光集热面来满足要求,这样的话,装置的占地面积就会变大,材料和成本也会增加。大气的影响也比较大,使用起来会很困难。1.2国内外现状 如今的世界各地发展最快的行业之一就是太阳能光伏产业,而太阳能光伏发电的工作原理是利用太阳能电池板吸收太阳光,然后通过电池板的吸收和电路的转化成为可以利用的电能。有统计称:太阳的跟踪与非跟踪,能量的接收率相差37.7%,因此进行准确的太阳跟踪是非常有必要的,这样就可以大大提高太阳光的接收效率,在太阳能的储存中有着至关重要的作用。 而就目前来说,太阳能自动追踪的方法主要有两种。一种就是视日轨迹跟踪法,太阳相对于地球上来说某一点的位置是可以估算的。而这种跟踪法就是通过计算地球上某一点某个时刻太阳的相对位置,然后对太阳进行追踪。另一种方法就是传感器追踪法,这个方法是通过光电转换器依据太阳光和接收的板子之间的误差产生一个反馈信号,经过放大后,步进电机转动,让接收装置可以准确的对准太阳光。 而在太阳能追踪这一方面,我国在97年研发了单轴追踪器,实现了东西方向的追踪,而南北方向则需要手动来进行,但相比之前,效率也有了很大程度的提升。98年美国则成功研发了ATM双轴追踪器,并且还在太阳能接收板上装上了集中阳光的透镜,使效率进一步提高。2002年美国大学又推出了新型的追踪装置,材料为铝型框架,利用控制电机来完成,大大拓宽了太阳能自动追踪器的应用领域。我国也有很多专家相继进行了这方面的研究,92年的太阳灶自动追踪系统,97年的单轴液压自动追踪系统都是这方面的成果。1.3课题研究的目的 这次课题主要研究的目的就是研究一种基于光敏电阻传感器的太阳能自动追踪系统,能够自动定位太阳位置和追踪太阳光,保持电池板始终与太阳光垂直,从而提高太阳光的转换效率。1.4课题研究的意义 长期以来[5],因为石油、煤炭等矿物燃料的过度使用产生的二氧化碳,使得地球的生态环境越来越恶化,地球变暖等一些问题越来越严重,然而这些一次性的资源也是有限的,不可能无限的开发出来,所以在以后的以后,随着这些矿物燃料越来越少,寻找新能源的任务迫使各国政府必须花费人力和财力来开发,特别是太阳能,风能等。所以越来越多的国家都致力于对可再生能源的开发和利用,其中太阳能开发的前景最为广阔,日本企划厅认为,到2030年后,世界的电力生产一半都取决于太阳能。 基于能源和环保的问题已经是全球的一个严重问题,所以本课题的研究对于节约能源、保护环境有着很重要的意义[6]。1.5论文结构第一章,阐述选题背景、目的和意义,以及国内外对太阳能的开发和利用现状。第二章,对太阳能自动追踪系统进行总体设计,确定追踪方式。第三章,设计追踪系统总体结构,包括光电转换器,单片机、外围电路、步进电机和驱动电路的设计。第四章,自动追踪系统软件部分的设计。第五章,总结和展望。2太阳能自动追踪系统总体设计2.1太阳的追踪形式 目前太阳能基本都是通过太阳板将太阳能转变为热能,所以为了尽可能的多收集太阳光,选取自动跟踪的方式,使太阳板始终都与太阳光垂直。最常见的追踪方法是光点缀欧总和视日运动轨迹追踪两种方法,前者是闭环的随机系统,后者则是开环的程控系统。2.1.1光电自动追踪 光电追踪采用的是光敏传感器,将四个光敏管分别放置于与双轴步进电机相连的遮光板上,当太阳光直射在遮光板上时,光敏二极管将光信号转换成电信号后的数值偏差在规定范围内,四个测光点的光照强度的偏差很小,这时电机就会停止不转动。但当太阳位置发生变化时,光敏二极管检测到的电信号偏差开始逐渐超出规定范围,再由放大电路将信号放大,控制跟踪装置就会产生动作而使遮光板与太阳光重新保持垂直,继续接受太阳能。这样的光电追踪装置灵敏度会大大提高,结构设计还算简单,但会受到天气的较大影响,如果长时间天气都是乌云,这样的话,太阳光就不能照射到光敏二极管,这样就导致装置无法对准太阳,还可能会引起误动。2.1.2视日运动轨迹追踪视日运动轨迹追踪方式分为单轴和双轴。(1)单轴追踪。单轴追踪又可以分为水平单轴追踪、不同倾角单轴追踪、最佳倾角追踪。单轴追踪一般采用倾斜布置东西追踪、焦线南北水平布置,东西追踪、焦线东西水平布置,南北追踪三种方式,这三种方式都是单轴转动,东西方向或南北方向追踪,优点就是结构简单,但是由于入射光线不能一直都和主光轴平行,所以太阳能的接受率并不是太好。(2)双轴追踪。因为为了能够在太阳高度角和方位角的变化上都能够追踪太阳以此来获得更多太阳能,双轴追踪就是在这样的需求下设计的。双轴追踪分为极轴式全追踪和高度角-方位角式全追踪[7]。2.1.3光电追踪和视日追踪的理想结合 视日运动追踪和光电追踪都存在一定的局限性。视日运动追踪在开始运行之前需要准确定位太阳角度,这个上面就会产生误差,并且误差产生后不能自动进行铁证,所以要定期人为调整装置。光电追踪则受天气问题影响,出现误动或错误追踪情况,尤其是在多云的天气为了追踪云层边缘的亮点,电机会反复运动,造成不必要的浪费和部件的磨损。 如果可以将两者结合起来,这样当遇到阴天或者光照强度过低时,光敏二极管上产生的电信号低于设定值,系统自动跳到视日运动轨迹追踪就可以很好的避免这种浪费了,所以这种是最理想的设计了。2.2系统总体设计要求的分析2.2.1总体要求 对于本设计的整体要求就是物美价廉、结构简单、性能齐全,充分考虑到经济性。在结构的设计过程中,复杂和浪费尽可能的避免,并且还要便于安装和维修。另一方面,考虑到天气以及气候的问题,选择的硬件要内用和抗干扰性强,避免发生故障。 本次设计所要达到的目的就是提高太阳能的利用率,使用太阳板将太阳能转换为更多的电能。因为在对太阳能进行转化时,太阳的位置一直是变化的,所以如果接收的装置是固定的话,就无法做到时刻和太阳能垂直,只能接收固定时间的一部分太阳能,而在其他时间吸收的效率不高甚至可能吸收不到,所以必须使用和太阳运行轨迹一致的装置,从而可以使装置可以一直吸收太阳光。所以本设计中将采用双轴追踪对太阳进行实时追踪,这样就可以使太阳板始终都正对太阳,从而提高吸收效率[8]。 设计要求: 1在进行追踪时,太阳板始终和太阳光垂直,充分吸收太阳光。 2硬件部分和软件部分可以合理的配合并且正常工作。2.2.2系统总体设计 本次设计主要的模块有:单片机控制电路、光电转换电路、AD转换电路、电机驱动电路。首先主要介绍各个模块的硬件电路,以及整体实物平台搭建的部分原理分析和软件方面的研究。硬件方面:采用双轴追踪系统,能够同时在方位角和高度角进行追踪,由光电传感器,信号处理和控制电路,方位角和高度角调整机构组成。传感器吧接收到的光信号转换成电信号,然后经过信号处理和控制电路后,由控制电路输出相对应的控制信号驱动方位角调整机构和高度角调整机构实现相应的位置调整[9]。软件方面:以单片机芯片为控制核心,经过数模转换模块,最后通过AD电压采样控制步进电机的正反转。综上,本次设计采用的具体方案就是将阳光照在光敏电阻上,通过光电转换变为电压值,输入AD转换电路,进行DA转换,然后进行AD电压采样,输入单片机控制核心,经过处理后通过驱动芯片来控制步进电机的转动,来控制太阳板始终和太阳光垂直。图2.1为系统的总体设计图:单片机驱动电路AD转换光电转换太阳光线 照射 单片机驱动电路AD转换光电转换太阳光线图2.1系统设计图2.3本章总结本章主要介绍了太阳追踪系统的两种追踪方式,并且分别介绍了两种方式的特点和原理,最后决定采用双轴追踪的方式,另外,也大体上介绍了总体设计的方案和原理,以及流程图。3系统的硬件设计3.1单片机控制电路的设计 为了可以使用起来方便,系统可以尽可能的进行在线改写,并且能够在断电的情况下保存编写的数据并且不需要保护电源,再者就是尽可能少的使用外围扩展芯片,提高系统的运行可靠性,单片机具有片内电擦除可编程只读存储器,综合考虑下来,决定选用STC89C51单片机[10],由复位电路和晶振电路组成。 STC89C51单片机是最早期也最典型的芯片,STC89C51单片机学习板就是一款基于8位单片机处理芯片STC89C52RC的系统。STC89C52RC是采用8051核的ISP在系统可编程芯片,内含8KBytes的可反复擦写1000次的Flash制度程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,速度更快。STC89C52RC系列单片机是单时钟的兼容8051内核单片机,内部集成MAX810专用复位电路[11]。 有以下功能:·8位CPU程序存储器·128bytes的数据存储器·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级·一个全双工串行通信口·外部数据存储器寻址空间为64kB·外部程序存储器寻址空间为64kB·逻辑操作位寻址功能·双列直插40PinDIP封装·单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据ROM:用以存放程序、一些原始数据和表格I/O口:四个8位并行I/O口,既可用作输入,也可用作输出T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式五个中断源的中断控制系统一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M[12]图3.1位89C51系统模块引脚图:图3.1单片机最小系统LED1、LED2:两个指示灯分别代表自动模式和手动模式TX、RX:指串口通讯接口即程序下载接口KEY1-KEY5:五个按键,其中一个是手动和自动模式之间的切换,另外四个是手动模式下,手动控制电机的上下左右四个方向的转动X1、X2:连接晶振电路IN1-INT8:一个上拉排阻,它连接驱动芯片ULN2803,目的是提高输出电平,增加单片机的驱动能力SDA、SCL:代表连接I²C总线的数据线和时钟线3.1.1复位电路的设计 单片机的置位和复位,都是为了把一个电路初始到一个确定的状态,而单片机的复位电路是把一个在状态中的初始化到空状态,在单片机的内部,复位的时候是把它初始化到起初预设的一个值。原理则是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个周期以上时有效。持续时间必须大于单片机的两个机器周期。图3.2为复位电路图3.2复位电路3.1.2晶振电路的设计 单片机系统中都有晶振,它在单片机系统中的作用非常大,全称叫晶体振荡器,结合单片机内部电路产生单片机所需的时钟频率,晶振提供的时钟频率越高,单片机的运行速度就越快,所以说单片机一切指令都是建立在晶振提供的时钟频率。在正常工作条件下,普通的晶振频率精度可以达到百万分之五十,而高级的精度会更高。一些晶振可以由外加电压在一定范围内调整频率,这种称为压控振荡器。晶振用一种能把电能和机械能互相转化的晶体在共振的状态下工作,以提供稳定,准确的单频震荡。晶振的作用是为系统提供基本的时钟信号,正常情况下,一个系统只需要共用一个晶振即可,便于各个系统部分保持同步。一些使用不同晶振的通讯系统则通过电子调频率的方法来保持同步。如果不同的子系统需要不同频率的时钟信号,这时候就可以用同一个晶振连接不同锁相环来实现。STC89C51使用11.0592MHz的晶体振荡器作为震荡源,而且因为STC89C51单片机内部带有振荡电路,所以外部连接一个晶振和和两个电容就行了,电容一般在15pF到50pF。3.2光电转换电路3.2.1光电传感器 光敏电阻是利用半导体的光电导效应制成的一种电阻值随着入射光的强度而变化的电阻器,当它受到光照时,半导体片内光敏层就激发出电子空穴对,参与导电,使电路中电流增强[13]。光敏电阻的工作原理是内光电效应。即在半导体光敏材料两端装上电机引线,然后封装在透明窗的管壳里构成光敏电阻,当入射光线消失后,由电子激发产生的电子空穴对复合,光敏电阻值恢复原值。在光敏电阻两端的金属电极加上电压,这样就有电流通过,当受到一定的光线照射时,电流就会随光照强度增大而变大,实现光电转换。光敏电阻是没有极性的,就是一个纯粹的电阻器件,既可加直流电压,也可以加交流电压,导电能力主要取决于半导体内载流子的数量[14]。3.2.2光电转换电路原理和设计当光电转换装置接收到太阳光,然后将光信号转换成电信号,根据接收到的信号,由单片机分析后控制的步进电机转动达到太阳能板的功能,使之始终都垂直太阳光线,一直都保持吸收的最大效率。当光电检测A对远离光线进行检测时,光线远离A,这时光电检测A就会检测后反馈给单片机,单片机得到信号后就会控制驱动芯片驱动步进电机M1正传使太阳板随光线左转。同理,当光电检测B对远离光线进行检测时,光电检测检测到光线远离,然后反馈给单片机,单片机根据接收到的信号控制驱动芯片驱动步进电机M1随光线右转。光电检测C和D则是对太阳垂直角度的检测,接收信号反馈给单片机,单片机控制驱动芯片驱动步进电机M2正反转来实现对太阳板垂直角度的调整[15]。具体如下图3.3、3.4所示图3.3光敏电阻模块图3.4光电转换电路3.3AD转换模块电路设计3.3.1AD转换模块AD转换电路有电压信号输入部分,AD转换部分和AD电压采样,信号输出部分构成。因为光电转换电路得到的信号时模拟信号,所以使用AD转换器将模拟信号转换成数字信号,这样就可以通过单片机来进行处理。模拟的信号可以使电压或电流等,但在AD转换之前,在信号输入到AD转换器之前必须是电压信号,转换后输出的信号有8位、10位、12位和16位等。本设计中采用的是PCF8591芯片,它是一种具有12C总线接口的8位转换芯片,在信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现。12C总线真是飞利浦公司推出的串行总线,与传统通信方式相比读写方便,结构也较为简单,系统扩展容易实现,可靠性高等很多优点。PCF8591是单一电源供电,值为5V,CMOS工艺PCF8591有4路8位A/D输入,属逐次比较型,内含采样保持电路;一路8位D/A输出,内部有DAC的数据寄存器,最大转换速率约为11KHz,但转换的基准电源需外部提供。PCF8951具有4个模拟输入、1个模拟输出和一个串行I²C总线接口。它的3个引脚A0、A1和A2可以用于硬件地址编程,可以再同一个I²C总线上接入8个这样的器件,无需额外硬件。AD转换模块如图3.5所示图3.5AD转换模块3.4步进电机驱动电路的设计3.4.1步进电机 前面分别介绍了光电转换电路,AD转换电路和单片机电路部分的设计,其实最终的目的就是要控制步进电机的正转和反转。步进电机就是将电脉冲转化为角位移的开环控制执行机构。步进电机又被称作脉冲电动机,当它接收到一个脉冲信号时就会按照设定的方向驱动步进电机转动一个固定的角度,称为“步距角”,它是以固定的角度一步一步旋转运行的。可以通过控制脉冲的个数来控制角位移量,达到精准定位;也可以通过控制脉冲频率来控制电机的转动速度和加速度,达到调速的目的。步进电机可以在很宽的范围里通过改变脉冲频率来调速,可以快速反转和制动。它不需要转换,可以直接将数字脉冲信号转换为角位移,适合微型计算机控制。步进电机将电脉冲信号转化为角位移,即给一个脉冲信号,它就转动一个角度,所以很适合于单片机控制。3.4.2步进电机的控制方式 本次系统用到的步进电机是四相步进电机,它是将电信号转换为角位移或线位移的开关控制元件,它的转速和停止位置纸盒脉冲信号的频率和脉冲数有关系,误差小,容易控制。选用28BYJ48型四相八拍电机,电压为5V-12V。当对步进电机施加了连续不断的控制脉冲时,就可以连续不断地转动。四相步进电机可以在不同通电方式下运行,常见的有单相绕组通电和双向绕组通电。3.4.3步进电机驱动电路 步进电机如果直接接交流或者直流电源时并不能运行,它要和驱动电路同时使用才能发挥功能,驱动电路则由控制电路和控制电机输出功率的功率电路组成。步进电机驱动电路原理图如图3.6所示图3.6步进电机驱动芯片 该电路为反向输出型,即输入低电平电压,输出端才能导通工作。 工作原理:如果1脚输入高电平1,则16脚输出低电平电压0,反之相同。一般来说,步进电机是工作在5V状态电压下的,对应的,9脚接步进电机的工作电压5V。输入端则接上拉电阻即单片机的引脚,引脚输入低电压,ULN2803就可以输出高电压,正转和反转都与输入电压有关。3.5外围电路设计1.电源模块的电路其中J1为开关按键如图3.7所示图3.7电源模块2.按键电路如图3.8所示图3.8按键电路其中S1是手动和自动之间模式的切换,默认状态下为自动,S2、S3、S4、S5为手动模式的按钮,利用这四个按键来控制步进电机的正转和反转。3.指示灯的电路如图3.9所示图3.9指示灯电路 默认状态下为自动模式,这时候指示灯LED1亮,当切为手动模式时,则指示灯LED2亮。3.6实物的搭建 机械部分主要是由电池板支架,转动轴,底座和步进电机构成,由电机驱动,可以使电池板水平360度和垂直方向0-80度之间旋转。控制部分则主要由STC89C51单片机系统构成。追踪系统大致上就是用螺丝将一个用来控制方向的步进电机安装在底座上,然后在这个步进电机上装上一个转动轴,上面则连接水平方向步进电机的底座。水平步进电机也用螺丝控制在垂直方向的底座上,然后上面也安装一个转动轴,裂解太阳板和光敏电阻等部件。机械结构部分就是用两个步进电机分别对高度角和方位角两个方向进行控制。追踪器的方位轴是垂直地面的,用来控制水平方向;另一根和方位轴垂直就叫它俯仰轴,控制垂直方向,两个步进电机分别和单片机驱动芯片ULN2803链接,芯片又和AD转换芯片连接,从而控制步进电机。工作的时候,太阳追踪器会依据太阳运动的位置,通过方位轴转动控制水平转动,俯仰轴控制垂直方向,来使太阳光和太阳板垂直,达到自动追踪的目的[16]。如图3.10所示图3.10机械部分3.7本章总结 本章介绍了各个系统硬件模块的介绍和工作原理,主要的模块有光电转换电路,AD转换模块,步进电机控制电路和一些外围电路,如按键模块,LED显示模块,电源模块,复位电路和晶振电路,最后就是整体介绍一下实物的搭建。4软件设计 本次设计采用的51单片机,它是这个系统的核心控制部分,软件部分就是用单片机来控制电机的正转和反转。用单片机将各个电路都连接起来,设计上下左右四个方向的光敏电阻的电压分别为U1、U2、U3、U4,精度为10。 如图4.1所示为软件流程图开始开始初始化初始化读U1U2U3U4读U1U2U3U4读U1>U2或U1-U2>10读U2>U1或U2-U1>10读U3>U4或U3-U4>10读U4>U3或U4-U3>10读U1>U2或U1-U2>10读U2>U1或U2-U1>10读U3>U4或U3-U4>10读U4>U3或U4-U3>10水平电机反转水平电机正转方位电机右转方位电机左转水平电机反转水平电机正转方位电机右转方位电机左转图4.1软件流程图4.1按键程序按键电路默认为自动模式if(!ENTER) { Delay_ms(20); while(!ENTER); k++; }4.2指示灯程序因为默认状态为自动模式,所以这是为LED1亮,即输出高电平。if(k%2==0) { LED1=1; LED2=0;4.3模数转换程序 数模转换电路是设计的关键部分,光电转化得到的电压值输入到AD模块后,经过PCF8951芯片中的电压采样,然后输出数字信号,反馈给单片机,进而控制步进电机的正转和反转。如图4.2所示DAC逐次比较寄存器比较器采样保持模拟多路输入输入 DAC逐次比较寄存器比较器采样保持模拟多路输入输入输出驱动采样输出驱动采样保持 图4.2AD模块流程图 这次用到的AD转换模块芯片为PCF8951,它有四路8位A/D输入,意思就是有四个通道,所以有以下四种情况。 Case0是读取芯片第一通道所采集到的模拟值;0x41是控制返送的字节数;IRcvByte是读取AD转换的数据;这个在AD模块中,利用PCF8951芯片,输入和输出都进行了电压保持采样,也可以说系统内部自己进行了两次采样,所以输出电压需要乘以二,才能保证输入和输出数据相同;ADC是寄存每一通道输出的数据。最后一个IF语句是手动模式下的操作。for(i=0;i<8;i++) { switch(AD_CHANNEL) { case0:PCF8591_ISendByte(PCF8591,0x41); AD_Up=PCF8591_IRcvByte(PCF8591)*2;//ADC0模数转换1 break; case1:PCF8591_ISendByte(PCF8591,0x42); AD_Down=PCF8591_IRcvByte(PCF8591)*2;//ADC1模数转换2 break; case2:PCF8591_ISendByte(PCF8591,0x43); AD_Left=PCF8591_IRcvByte(PCF8591)*2;//ADC2模数转换3 break; case3:PCF8591_ISendByte(PCF8591,0x40); AD_Right=PCF8591_IRcvByte(PCF8591)*2;//ADC3模数转换4 break; } Send_Hex(Table,4); if(++AD_CHANNEL>3) { AD_CHANNEL=0; Table[0]=AD_Up; Table[1]=AD_Down; Table[2]=AD_Left; Table[3]=AD_Right; } } } if(k%2==1) { LED1=0; LED2=1; AD_Up=0; //上 AD_Down=0;//下 AD_Left=0;//左 AD_Right=0;//右 } 4.4驱动电路程序 10精度值的设定,本次设计中有四个光敏电阻,分别分布在上下左右四个方向,当有光照时就会产生电压,当上电压大于下电压或者两者相差大于10或手动下按下向下的按键,水平电机就会反转,若下电压大于上电压或两者差值大于10或手动按下向上的按键,水平电机正传。同理,左电压大于右电压或两者差值大于10或按下向右的按键,防伪电机右转,当右电压大于左电压或两者差值大于10或手动按下向左的按键,防伪电机左转。程序如下:if(((AD_Up<AD_Down)&&(AD_Down-AD_Up>10))||(!UP))//上转 { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Up[j]; Delay_ms(10); } } } ////////////////////////////////////// if(((AD_Up>AD_Down)&&(AD_Up-AD_Down>10))||(!DOWN))//下转 { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Down[j]; Delay_ms(10); } } } ///////////////////////////// if(((AD_Left<AD_Right)&&(AD_Right-AD_Left>10))||(!LEFT))//左转 { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Left[j]; Delay_ms(10); } } } ////////////////////////////////////// if(((AD_Left>AD_Right)&&(AD_Left-AD_Right>10))||(!RIGHT))//右转 { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Right[j]; Delay_ms(10); } } } //////////////////////////////////// Delay_ms(100);//延时,可适当修改 }}4.5AD电压采样程序#include<PCF8591.H>bitPCF859_ack;/*应答标志位*//*******************************************************************起动总线函数函数原型:voidStart_I2c();功能:启动I2C总线,即发送I2C起始条件.********************************************************************/voidPCF8591_Start(){ PCF8591_SDA=1;/*发送起始条件的数据信号*/ _Nop(); PCF8591_SCL=1; _Nop();/*起始条件建立时间大于4.7us,延时*/ _Nop();_Nop();_Nop();_Nop(); PCF8591_SDA=0;/*发送起始信号*/ _Nop();/*起始条件锁定时间大于4μs*/ _Nop();_Nop();_Nop();_Nop(); PCF8591_SCL=0;/*钳住I2C总线,准备发送或接收数据*/ _Nop();_Nop();}/*******************************************************************结束总线函数函数原型:voidStop_I2c();功能:结束I2C总线,即发送I2C结束条件.********************************************************************/voidPCF8591_Stop(){PCF8591_SDA=0;/*发送结束条件的数据信号*/_Nop();/*发送结束条件的时钟信号*/PCF8591_SCL=1;/*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();PCF8591_SDA=1;/*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();}/*******************************************************************字节数据发送函数函数原型:voidSendByte(UCHARc);功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)发送数据正常,ack=1;ack=0表示被控器无应答或损坏。********************************************************************/voidPCF8591_SendByte(unsignedcharc){unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt++)/*要传送的数据长度为8位*/{if((c<<BitCnt)&0x80)PCF8591_SDA=1;/*判断发送位*/elsePCF8591_SDA=0;_Nop();PCF8591_SCL=1;/*置时钟线为高,通知被控器开始接收数据位*/_Nop();_Nop();/*保证时钟高电平周期大于4μs*/_Nop();_Nop();_Nop();PCF8591_SCL=0;}_Nop();_Nop();PCF8591_SDA=1;/*8位发送完后释放数据线,准备接收应答位*/_Nop();_Nop();PCF8591_SCL=1;_Nop();_Nop();_Nop();if(PCF8591_SDA==1)PCF859_ack=0;elsePCF859_ack=1;/*判断是否接收到应答信号*/PCF8591_SCL=0;_Nop();_Nop();}/*******************************************************************字节数据接收函数函数原型:UCHARRcvByte();功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数应答从机。********************************************************************/unsignedcharPCF8591_RcvByte(){unsignedcharretc;unsignedcharBitCnt;retc=0;PCF8591_SDA=1;/*置数据线为输入方式*/for(BitCnt=0;BitCnt<8;BitCnt++){_Nop();PCF8591_SCL=0;/*置时钟线为低,准备接收数据位*/_Nop();_Nop();/*时钟低电平周期大于4.7μs*/_Nop();_Nop();_Nop();PCF8591_SCL=1;/*置时钟线为高使数据线上数据有效*/_Nop();_Nop();retc=retc<<1;if(PCF8591_SDA==1)retc=retc+1;/*读数据位,接收的数据位放入retc中*/_Nop();_Nop();}PCF8591_SCL=0;_Nop();_Nop();return(retc);}/********************************************************************应答子函数函数原型:voidAck_I2c(bita);功能:主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)********************************************************************/voidPCF8591_Ack(bita){if(a==0)PCF8591_SDA=0;/*在此发出应答或非应答信号*/elsePCF8591_SDA=1;_Nop();_Nop();_Nop();PCF8591_SCL=1;_Nop();_Nop();/*时钟低电平周期大于4μs*/_Nop();_Nop();_Nop();PCF8591_SCL=0;/*清时钟线,钳住I2C总线以便继续接收*/_Nop();_Nop();}////////////////////////////////*******************************************************************DAC变换,转化函数*******************************************************************/bitPCF8591_DACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal){PCF8591_Start();//启动总线PCF8591_SendByte(sla);//发送器件地址if(PCF859_ack==0)return(0);PCF8591_SendByte(c);//发送控制字节if(PCF859_ack==0)return(0);PCF8591_SendByte(Val);//发送DAC的数值if(PCF859_ack==0)return(0);PCF8591_Stop();//结束总线return(1);}/*******************************************************************ADC发送字节[命令]数据函数*******************************************************************/bitPCF8591_ISendByte(unsignedcharsla,unsignedcharc){PCF8591_Start();//启动总线PCF8591_SendByte(sla);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 没有签贷款协议书有效
- 静安坡道土方外运协议书
- 中餐预订服务流程与规范
- 椎体骨折治疗流程
- 中班幼儿情绪管理引导策略
- 急诊科:中暑急救措施
- 2026g广西柳州市柳北区白露街道办事处招聘公益性岗位2人备考题库附参考答案详解ab卷
- 2026甘肃金昌永昌县红山窑镇卫生院招聘1人备考题库含答案详解(满分必刷)
- 2026山西省气象局招聘应届高校毕业生12人备考题库(第2号)附参考答案详解(综合题)
- 2026湖北长江产业资产经营管理有限公司所属企业招聘12人备考题库及答案详解(真题汇编)
- 2026年上半年黑龙江中医药大学校本部公开招聘工作人员37人考试备考题库及答案解析
- 2026急性缺血性卒中诊治指南:循证更新与临床实践
- 2026春统编版语文 语文五年级下册综合性学习遨游汉字王国 汉字真有趣 教学课件
- 老年人摄影与艺术创作指导
- 2024-2025学年度洛阳职业技术学院单招《职业适应性测试》综合提升测试卷含答案详解【新】
- 蒙牛校园招聘在线测评题
- (2025年)(新版)低压电工证职业技能考试题库(含答案)
- 规范参股公司管理制度
- 幕墙施工防坠落方案
- 工厂防错培训课件
- 2025人教版三年级数学上册 第六单元 分数的初步认识 单元分层作业
评论
0/150
提交评论