《自动光源跟踪器的设计.doc》由会员分享,可在线阅读,更多相关《自动光源跟踪器的设计.doc(47页珍藏版)》请在三一办公上搜索。
1、自动光源跟踪器的设计摘要 自动光源跟踪器使用Freescale公司的超低功耗的MC9S12XS128单片机作为整个系统的控制核心,主要由电机驱动模块,光源检测模块,电源转换模块等模块组成。利用4路光敏电阻来检测光源的位置,经过单片机的运算和处理来确定光源的运动趋势,并将运算的控制信号传给四台舵机,使其能够在三维面内跟随光源运动。关键词 S12;光源;跟踪;光明电阻 Automatic light source tracker designDuan Shilei(Shaanxi University of Technology School of electrical engineering a
2、utomation 084 class, Shaanxi Hanzhoung 723003)Teacher: Hu BoAbstract Automatic light source tracker using Freescales ultra low power MC9S12XS128 MCU as the control core of the system, mainly by the motor drive module, light detection module, a power supply conversion module and other modules. The4ph
3、otosensitive resistor to detect the position of the light source, through the MCU to determine the movement of the light source and the trend, operation control signal is transmitted to the four actuator, which can follow the movement of the light source in a three-dimensional surface.Key words S12;
4、 light source; tracking; photosensitive resistance目录1.引言11.1课题背景11.2目的及意义11.3光源跟踪装置目前现状11.4设计思路及任务要求21.5进度安排22.方案论证32.1系统设计概述32.2方案选择与论证32.2.1主控芯片的选择32.2.2电机的选择42.2.3传感器的选择42.2.4电源模块42.2.5采集方案的选择43 系统硬件设计53.1硬件方框图53.2单片机MC9S12XS12853.3舵机83.4光敏电阻93.5信号放大器93.6硬件电路图设计94系统软件设计114.1主程序114.2各个模块的初始化124.2.
5、1锁相环模块144.2.2I/O端口144.2.3PWM模块144.2.4PIT定时器模块154.2.5A/D转换模块154.3 PID调节154.4程序算法185系统仿真与硬件调试及分析195.1开发环境195.2软件调试205.3硬件调试205.4结果分析216.总结与展望22致谢23参考文献24附 录25附录A:系统原理图25附录B:系统实物图26附录C:元器件清单29附录D:单片机最小系统板PCB原理图30附录E:英文文献及其翻译31附录F:源程序351.引言1.1课题背景目前太阳能是一种清洁无污染的能源, 发展前景非常广阔, 太阳能发电已成为全球发展速度最快的技术。然而它也存在着间歇
6、性、光照方向和强度随时间不断变化的问题, 这就对太阳能的收集和利用提出了更高的要求。目前很多太阳能电池板阵列基本上都是固定的, 没有充分利用太阳能资源, 发电效率低下。据实验, 在太阳能光发电中, 相同条件下, 采用自动跟踪发电设备要比固定发电设备的发电量提高35%,因此在太阳能利用中进行跟踪是十分必要的。本设计给出了一种基于单片机的光源自动跟踪系统设计方案, 该设计使用Freescale公司的超低功耗的MC9S12XS128单片机作为整个系统的控制核心,主要由电机驱动模块,光源检测模块,电源转换模块等模块组成。利用4路光敏电阻来检测光源的位置并将检测到的信号经过放大传给控制器MC9S12XS
7、128 单片机,经过单片机的运算和处理来确定光源的运动趋势,并将运算的控制信号传给四台舵机,使其跟随点光源运动。当水平方向上的2路光敏电阻测量数值相对接近,同时竖直方向上的2路光敏电阻测量数值也相对接近时,传感器模块将精确的指向光源。本系统可以扩展为以后的太阳的跟踪。太阳能作为一种清洁无污染的能源,发展前景非常广阔。然而它也存在着间歇性、光照方向和强度随时间不断变化的问题,这就对太阳能的收集和利用提出了更高的要求。目前很多太阳能电池板阵列基本上都是固定的,没有充分利用太阳能资源,发电效率低下。据实验,在太阳能光发电中,相同条件下,采用自动跟踪发电设备要比固定发电设备的发电量提高35%,因此在太
8、阳能利用中,进行跟踪是十分必要的。本文给出一种基于单片机的太阳光自动跟踪系统设计方案,该系统不仅能自动根据太阳光方向来调整太阳能电池板朝向,结构简单、成本低,而且在跟踪过程中能自动记忆和更正不同时间的坐标位置,不必人工干预,特别适合天气变化比较复杂和无人值守的情况,有效地提高了太阳能的利用率,有较好的推广应用价值。1.2目的及意义通过本次毕业设计,对课本上所学的理论知识加深和巩固:进一步熟悉和掌握基本理论在实践中综合运用,进一步熟悉和掌握单片机的基本知识、系统设计的基本方法及设计步骤,进一步熟悉和掌握常用单片机模块的设计和应用。能够熟练使用FreescaleCodewarriorIDE5.0等
9、电子软件,学会运用这些软件进行分析、设计和仿真电路。能够熟练运用FreescaleCodewarriorIDE5.0软件编写相应的程序模块。学习单片机系统实物制作、调试、测试、故障查找和排除的方法及技巧。培养实践技能,提高分析和解决实际问题的能力。了解光源跟踪的原理,初步掌握光源跟踪的调整及测试方法,提高动手能力和排除故障的能力。同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识, 能够独立地做完毕业设计,通过毕业设计受到一次综合运用所学知识、理论和技能的训练。它使我们可以进一步学会分析问题、解决问题;学会阅读、翻译参考文献;学会收集、运用各种资料。它是对我们在校学习的一次
10、全面检验、总结和提高;是对我们利用所学的理论知识解决实际工程问题的综合训练;是对提高我们的实践动手能力、创新思维能力具有不可替代的作用;也是对毕业及学位资格认证的重要依据。因此,做好毕业设计(论文)将为我们由学习走入工作、由学校进入社会打下良好的基础。1.3光源跟踪装置目前现状能源短缺问题是目前许多国家而临的最重要的问题,太阳能作为一种清洁无污染的能源,有着巨大的开发前景。我国的太阳能资源比较丰富,从其分布来看,西部地区的太阳能年辐射总量均在5 400 MJ/(m2*a)以上,西藏地区更是达到了6 700 MJ/(m2*a),开发太阳能对于西部的发展有着重要的现实意义。利用太阳能的关键是提高太
11、阳能电池的转换效率,目前一般情况下仍是采用太阳能电池板固定朝南安装的方式对太阳能进行采集,也有利用太阳的运动规律采用定时的方法对太阳进行跟踪,但这些方法均没有充分利用太阳能资源,转换效率较低,成本高。作者所设计的太阳能自动跟踪装置,能使太阳能电池板始终保持与太阳光垂直,保持最大的转换效率,具有跟踪精度高、少维护等优点具有很好的实用价值。太阳能以利用方便简捷、清洁干净、成本低为显著特点,以太阳能为代表的新能源的广泛应用是经济社会可持续发展的必要条件之一,尤其难能可贵的是,利用太阳能发电可以在一定程度上解决能源短缺的问题。目前,太阳能发电由于受技术条件限制,光伏转换效率低,在没有出现更高效的光伏转
12、换材料之前,如何提高太阳能电池板的发电量是关键课题之一。实践证明,太阳能电池板的发电效率和它相对于太阳的角度有很大关系,太阳能电池板的受光面如能一直和太阳的光线保持垂直,则它的发电效率将会大幅度提高。如果能够使太阳能电池板自动跟踪太阳的运动轨迹,就可以实现太阳能发电板和太阳的光线保持垂直。因此,太阳能自动跟踪传感器的可靠性是实现太阳能自动跟踪的核心保证。1.4设计思路及任务要求(1)设计思路利用4路光敏电阻来检测光源的位置并将检测到的信号经过放大传给控制器MC9S12XS128 单片机,经过单片机的运算和处理来确定光源的运动趋势,并将运算的控制信号传给两台步进电机,使其跟随点光源运动。当水平方
13、向上的2路光敏电阻测量数值相对接近,同时竖直方向上的2路光敏电阻测量数值也相对接近时,传感器模块将精确的指向光源。(2)任务要求a当光源靠近传感器时传感器模块后退,始终与光源保持一定的距离;b当光源远离传感器时传感器模块前进,始终与光源保持一定的距离;c当光源向传感器左侧偏离,传感器模块向左跟随光源移动,并始终与光源保持一定的距离;d当光源向传感器右侧偏离,传感器模块向右跟随光源移动,并始终与光源保持一定的距离。1.5进度安排本次设计主要分以下几个阶段完成:(1)前期准备阶段,收集资料,整理资料,设计课题的总体方案,完成开题报告;(2)根据总体方案设计,细化各模块,完成各个模块的设计;(3)学
14、习单片机的编程,完成硬件仿真电路的调试;(4)制作实物电路,完成调试硬件实物电路;(5)整理资料,完成毕业论文的书写,准备答辩。2.方案论证2.1系统设计概述本设计是一个光源追踪系统,主要由传感器来对光照检测与处理,控制器分析与处理,执行机构运行这几个部分构成。整个系统以Freescale公司的超低功耗的MC9S12XS128单片机为控制核心,通过四个光敏电阻组成传感器模块检测光照,依据光照强度的大小、变化来判断出光源的位置与运动趋势,并将光源的运动分解为水平、竖直和前后方向的三维运动,借以来控制水平舵机、竖直舵机和前后方向舵机的旋转角度。当水平方向上的两个传感器的测量数值相对接近,同时竖直方
15、向上的两个传感器的测量数值也相对接近时,传感器模块将精确的指向点光源。本系统是由MC9S12XS128单片机充当控制核心对传感器检测的光源的信号进行分析和处理,然后控制舵机,使其跟随光源移动,达到跟踪光源的目的。系统的硬件主要有控制器单片机,舵机驱动模块,光源检测模块,电源转换模块等模块组成的。具体方框图如图2.1所示。S12单片机传感器传感器传感器传感器A/D转换模块X轴舵机Y轴舵机Z轴舵机1Z轴舵机2图2.1 系统方框图2.2方案选择与论证2.2.1主控芯片的选择根据本题的要求,整个系统中必须要有一个主控芯片来处理数据和控制操作,主要考虑以下两种方案:方案一:飞思卡尔S12系列单片机。16
16、位低功耗单片机,性能良好。S12有以下优点:(1)最高可以超频到96MHz bus clock(不建议)。(2)BDM接口。(3)复位键。(4)PB上接8个发光二极管D0-D7。(5)电源指示发光二极管D8。(6)可以选择5V或者3.3V,也可以去掉VRH电阻外界参考电压;(7)S两个电源接口;(8)插针为100mil的整数倍,标准点阵板可以直接插上去;(9)板子尺寸:40*25mm;(10)可选参考电压,为摄像头采集提供更佳的参考电压;(11)带MicroSD卡座,数据保存变得非常的简单;(12)采用双排直插式,布线更方便;(13)重新优化EMI/EMC,增强抗干扰能力,Runing极其稳定
17、;(14)PGB采用加厚镀金工艺和焊盘阻焊技术,抗氧化能力强;(15)采用回流焊工艺,相对手工焊接质量更可靠;(16)板上开辟一块白色的注释区,方便用做标记。方案二:AT89C51系列作为光源跟踪系统的主控芯片。通过上面的比较本系统选取飞思卡尔系列MC9S12XS128单片机作为控制器,MC9S12XS128的稳定性很好且功能要比C51系列的强大的多,所以选取方案一。2.2.2电机的选择本系统电机的主要作用是调整传感器的位置,指向光源,可选取的类型如下方案:方案一:舵机。在非超载的情况下,舵机的转速、停止位置只取决于PWM信号的占空比,而不受负载变化的影响。每改变一次PWM信号,舵机能够转过一
18、个与PWM波相应的角度。方案二:直流减速电机。此电机在正常通电状态下,转速平稳,角度的变化也近乎连续,控制简单方便。根据设计的要求可知,直流减速电机存在的明显缺陷速度不容易控制,而舵机的控制和实现是相对简单一些。因而选用方案一。2.2.3传感器的选择本系统的传感器主要是检测光照度,可考虑的传感器如下列方案:方案一:光敏电阻。从光照特性来看,随着光照强度的增加,光敏电阻的阻值开始迅速下降,可以反映光照的变化,其灵敏度远高于光电池,受外界环境影响飘动比较较小,用四个光敏电阻组成四象限感光面,上下左右各一个光敏电阻。方案二:硅光电池。硅光电池是一种直接把光能转换为电能的半导体器件,根据硅光电池光照强
19、度曲线特性可知:硅光电池的开路电压或短路电流与光强呈很好的线性关系。方案三:光敏二极管。光敏二极管具有单向导电性,无光照时,有很小的暗电流,当受到光照时,光电流随射光强度的变化而变化。在测试光敏二极管与硅光电池时,发现光源的距离限制了两者的应用范围。当距离比较大时,两者的灵敏度大大降低。经实践测定,光敏二级管与光敏电阻满足要求,但在反映速度,及变化的灵敏、快速性方面,光敏电阻更胜一筹,因此传感器选择方案一。2.2.4电源模块方案一:铅酸电池供电,优点电流大,缺点重量太大。方案二:采用电源线供电,经集成稳压器,输出5V的电压,缺点不能移动。方案三:采用镍镉蓄电池对系统供电,优点电流大,重量轻,经
20、集成稳压器,输出5V的电压,以适应电路的多种需求。考虑到电路需要轻便型电源的缘故,我们选择第三套方案。2.2.5采集方案的选择方案一:本方案将各点的光线强度通过光敏电阻传感器转换为电压信号,然后将各点传感器采集的电压信号送入电压比较器进行比较,再用单片机检测比较器输出端输出的高低电平信号,根据比较器输出信号,微处理器会控制相应电机转动,达到光源追踪效果,但采用比较器,电路工作不稳定,电路复杂,不易调试。方案二:本方案将各光敏电阻采集的光线强度分别送入A/D转换通道,然后通过对A/D模数转换器特定的数学算法进行处理、比较,并将比较结果送入微处理器,微处理器会控制相应电机转动,达到光源追踪效果,此
21、方案系统工作稳定,精确度高,易于整机的调试与实现。综合考虑,决定采用方案二。3 系统硬件设计3.1硬件方框图 本系统最终以MC9S12XS128作为控制器,用光敏电阻做检测元件,通过控制舵机来使传感器模块指向光源。系统方框图如下图3.1所示:S12单片机AD0AD2AD4AD6A/D转换模块PWM01PWM23PWM45PWM67经由LM2940-5稳压后的5V电源图3.1 系统硬件方框图3.2单片机MC9S12XS128本系统中我们选的是飞思卡尔系列单片机下面介绍一下MC9S12XS128系列单片机:我们用到的单片机等资源涉及到MC9S12XS128的I/O、中断定时器/计数器模块、PWM模
22、块、外部中断等的使用。开发工具是Metrowerks的Code WarriorIDEV5.1编译器,主要用C语言进行代码的编写。调试工具使用清华大学摩托罗拉MCU应用开发中心的BDM调试模块。图3.2为S12实物图与下载器。图3.2 S12实物图与下载器Freecale系列单片机的主要特点:(1)最高可以超频到96MHz bus clock(不建议)。(2)BDM接口。(3)复位键。(4)PB上接8个发光二极管D0-D7。(5)电源指示发光二极管D8。(6)可以选择5V或者3.3V,也可以去掉VRH电阻外界参考电压;(7)S两个电源接口;(8)插针为100mil的整数倍,标准点阵板可以直接插上
23、去;(9)板子尺寸:40*25mm;(10)可选参考电压,为摄像头采集提供更佳的参考电压;(11)带MicroSD卡座,数据保存变得非常的简单!(12)采用双排直插式,布线更方便;(13)重新优化EMI/EMC,增强抗干扰能力,Runing极其稳定;(14)PGB采用加厚镀金工艺和焊盘阻焊技术,抗氧化能力强;(15)采用回流焊工艺,相对手工焊接质量更可靠;(16)板上开辟一块白色的注释区,方便用做标记。(1)MC9S12XS128单片机PWM模块PWM 调制波有 8个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供
24、选择的时钟源。每一个PWM 输出通道都能调制出占空比从 0100%变化的波形。 PWM 的主要特点有:a.它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。b.每一个输出通道都有一个精确的计数器。c.每一个通道的PWM 输出使能都可以由编程来控制。d.PWM 输出波形的翻转控制可以通过编程来实现。e.周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。f.8字节或16字节的通道协议。g.有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。h.通过编程可以实现希望的时钟周期。i.具有遇到紧急情况关闭程序的功能。j.每一个通道都
25、可以通过编程实现左对齐输出还是居中对齐输出。(2)MC9S12XS128单片机A/D转换模块A/D模块功能结构如图3.3:图3.3 A/D模块功能结构图 图中所示的是A/D模块的功能结构,这个功能模块被虚线划分成为图示所示的虚线所隔离的二个部分:IP总线接口、转换模式控制/寄存器列表,自定义模拟量。IP总线接口负责该模块与总线的连接,实现A/D模块和通用I/O的目的,还起到分频的作用;转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运行和连续扫描。自定义模拟量负责实现模拟量到数字量的转换。包括了执行一次简单转换所需的模拟量和数字量。(3)MC9S12XS128单片机PIT模块P
26、IT模块为MC9S12XS128单片机定时器模块,具体结构图如图3.4。图3.4 PIT模块功能结构图 3.3舵机基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用。在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。本系统中舵机的主要作用是调整传感器的位置,指向光源。我们选的是两相混合式步进电机,型号是MG995,扭矩:13kg,使用温度:-30-60摄氏度,死区设定:4微秒,工作电压:3v-7.2v,重量62g,外形尺寸(40*20*3
27、6.5)mm。图3.5为舵机信号线示意图图3.5舵机信号线示意图图舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。图3.6为舵机转角图。图 3.6 舵机转角图3.4光敏电阻光敏电阻
28、又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。 3.5信号放大器因为传感器检测到的信号是比较微弱的,单片机不好处理,为了使单片机更好更方便的处理检测到的微弱信号,我们需要将信号放大然后送给单片机处理。在本系统中我们选择的是信号放大器LM324。LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如图所示。它的内部包含四组形式完全相同的运算放大器,除电源共用外
29、,四组运放相互独立。每一组运算放大器可用图3.7所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。LM324的引脚排列见图3.8。图3.7 运算放大器 图3.8 LM324引脚图由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。3.6硬件电路图设计(1)电源转换电路设计本系统中用的电压是5V。所以我们
30、用下面的转换电路为系统各元件提供电源。电路图如下图3.9所示。图3.9 电源转换电路(2)信号检测电路设计光敏电阻采集到光信号后,使整个电路导通,再通过运算放大器LM324将微弱的电流信号放大,从而使单片机MC9S12XS128更好的处理信号。电路图如下图3.10所示:图3.10 信号采集电路(3)系统原理图光照强度采集电路由光敏电阻传感器和S12单片机最小系统等组成,光敏电阻将光照强度信号转换为电压信号并送入S12单片机的A/D转换模块中进行转换,经转换后的模拟电压信号可变为数字信号,然后将转换后的数字信号进行处理。最终使传感器模块跟踪指向光源方向,达到光源跟踪的效果。原理图见附录A,单片机
31、最小系统板PCB原理图见附录D。4系统软件设计4.1主程序本系统利用MC9S12XS128的PIT定时器模块,定时5ms采样一次传感器信号,将采样结果存入数组,十次采样,也就是50ms后,再将数组内数据进行分析处理,多次采样有助于提高系统的抗干扰能力,降低甚至消除系统误差、错误的出现。具体滤波方法如下:(1)将四个传感器经一个采样周期(50ms)所采集的四个数组内的值分别进行排序;(2)将排序结果取其最小的三个数据,最大的三个数据,保留中间的四个数据进行后续运算;(3)将保留下的四个数据进行累加,其结果用于后续运算。(4)由于传感器精度的限制,直接将以上所得的值运算误差很大,但每个传感器的变化
32、率却十分的接近,因此采用相连续的两次以上所得值相减后的差,也就是变化量进行真正的运算;根据传感器的排布(四个传感器排布见附录B),易得当上面两个传感器的变化量之和大于下面两个传感器的变化量之和时,光源位于传感器上方,传感器应向上移动,当下面两个传感器的变化量之和大于下面两个传感器的变化量之和时,光源位于传感器下方,传感器应向下移动。同理,当左边两个传感器的变化量之和大于右边两个传感器的变化量之和时,光源位于传感器左边,传感器应向左移动,当右边两个传感器的变化量之和大于左边两个传感器的变化量之和时,光源位于传感器右方,传感器应向右移动。当四个传感器测得的变化量之和大于某一个值时,说明光源正在远离
33、传感器,这时应该使传感器趋向光源正向运动,同理,当四个传感器测得的变化量之和小于某一个值时,说明光源正在靠近传感器,这时应该使传感器背离光源运动。流程图如图4.1所示。系统首先对各种设备进行初始化,然后通过传感器模块采集现场光强,送入S12单片机A/D转换模块,经加权、滤波算法运算后,将结果送入主程序参与相关运算,最后将运算结果通过四路十六位PWM模块输出,控制四台舵机的转向,从而达到使传感器模块始终趋向于光源的目的。参数设定完毕之后打开中断,最后循环执行位置控制程序。4.2各个模块的初始化包括锁相环初始化,I/O端口初始化,四路PWM初始化,PIT定时器初始化,A/D模块初始化,锁相环初始化
34、为64MHz;PORTB口因硬件接了八个LED灯,所以用PORTB口显示传感器的具体状态;PWM模块初始化为四路两两级联的十六位精度的PWM输出;PIT初始化为5ms中断,传感器信号的采集在中断中进行;A/D初始化为四路十二位精度,用以检测光敏电阻的信号;PID模块由软件构成,运用PD增量式对传感器信号进行计算并以PWM波的形式输出,用以控制四台舵机的动作。4.2.1锁相环模块 MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。这就得用到锁相环了。例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环
35、PLL把系统时钟倍频到64M,从而给系统提供更高的时钟信号,提高程序的运行速度。 51单片机,AVR单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。而MC9S12XS128单片机内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。在程序中配置锁相环的步骤如下: (1)禁止总中断; (2)寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2
36、。CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。(3)禁止锁相环PLL,即PLLCTL_PLLON=0。当PLLCTL_PLLON=0时,关闭PLL电路。当PLLCTL_PLLON=1时,打开PLL电路。(4)根据想要的时钟频率设置SYNR和REFDV两个寄存器。SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是PLLCLK=2*OSCCLK*(SYN
37、R+1)/(REFDV+1),其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV中的值。这两个寄存器只有在PLLSEL=0时才能够写入(这里就是第二步的设置原因所在了)。(5)打开PLL,即PLLCTL_PLLON=1。(6)CRGFLG_LOCK位,确定PLL是否稳定。当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。该位在正常情况下为只读位。(7)PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL
38、=1。到这里,锁相环的设置就完毕了。本设计中锁相环初始化为64MHz,此频率足以应付本设计中所需的信号采集,数据处理等。4.2.2I/O端口因本系统为光源跟踪所用,只需输出相应的PWM脉冲,输入相应的模拟信号,并且所使用的MC9S12XS128最小系统板上集成有PORTB口(8位)8个指示灯, 故在节约系统资源的前提下,只设置了单片机的PORTB口用来显示光源跟踪装置的相关状态。4.2.3PWM模块PWM 调制波有 8个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。每一个PWM 输出通道都能调制出占
39、空比从 0100%变化的波形。 PWM 的主要特点有:(1)它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。(2)每一个输出通道都有一个精确的计数器。(3)每一个通道的PWM 输出使能都可以由编程来控制。(4)PWM 输出波形的翻转控制可以通过编程来实现。(5)周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。(6)8字节或16字节的通道协议。(7)有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。(8)通过编程可以实现希望的时钟周期。(9)具有遇到紧急情况关闭程序的功能。(10)每一个通道都可以通过编程实现左对齐输出
40、还是居中对齐输出。本设计中用到四路两两级联的十六位PWM波,分别一一控制四个舵机的动作。4.2.4PIT定时器模块根据设计思路,A/D采样周期设定为5ms,采样十次为一个循环,进行一次输出,这就需要对PIT定时器模块的掌握和使用。开始各个模块的初始化A/D读取传感器状态加权滤波处理通过PID运算将处理结果发送给舵机舵机动作结束图4.1 主程序流程图程序开始时,先初始化所需的所有模块,例如锁相环模块,I/O模块,PWM模块,PIT定时器模块,A/D转换模块等模块。锁相环模块将单片机倍频初始化为64MHz,以便应付传感器的多次信号采集以及将采集到的信号做滤波处理,并运算输出。I/O模块初始化为输出
41、端口,因单片机最小系统板上PORTB口上接连了八个LED灯,所以将PORTB口作为传感器采集到的信号的显示能够十分直观的反应传感器的具体状态。PWM模块初始化为四路两两级联的十六位PWM,分别通过PWM01,PWM23,PWM45,PWM67口控制四个舵机的运动,并且对PWM输出做限幅处理,避免因传感器采集到的偏差太大而造成舵机打死以至于损毁硬件。PIT定时器模块初始化为5ms的中断,用于定时采集来自传感器的电压值,此中断为单片机内部中断,不需要输出或输入。A/D转换模块初始化为十二位,分别从AD0,AD2,AD4,AD6口分别输入,由于传感器采用光敏电阻充当,并且四个传感器的位置相距较近,因
42、此A/D采用高分辨率,才能更清楚的区分出光强的差异。初始化完成后,每当5ms的PIT定时器中断到来时,在中断中采集一次传感器的状态,连续采集10次为一个采样周期,一个采样周期后,将十个状态值进行滤波处理,得到的数值经由PID控制器运算后以PWM波的形式输出,控制相应舵机动作,最后将偏差存储,用于下个程序周期的计算。4.2.5A/D转换模块A/D转换模块在本系统中的主要任务是接收传感器采集回来的模拟信号,将此模拟信号转换成数字系统能够识别的数字信号。A/D模块按功能被划分为二个部分:IP总线接口、转换模式控制/寄存器列表,自定义模拟量。IP总线接口负责该模块与总线的连接,实现A/D模块和通用I/
43、O的目的,还起到分频的作用;转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运行和连续扫描。自定义模拟量负责实现模拟量到数字量的转换。包括了执行一次简单转换所需的模拟量和数字量。由于前面提到A/D的采样周期设定为5ms,采样十次为一个循环,进行一次输出。4.3 PID调节在连续控制系统中,按偏差的比例(P)、积分(I)、微分(D)进行控制的PID控制器获得了广的应用,它的结构简单,参数易于调整,适应性强,对于那些控制模型不准,参数变化较大的被控对象,采用PID控制器往往能得到满意的控制效果。用计算机算法来代替模拟式PID控制的数字PID控制算法不断改进和完善,显著地扩展了它的功
44、能。本例采用增量式数字PID程序以PWM方式来对直流电机进行调速。增量式数字PID调节的数学表达式。其中Kp为比例常数,Ti为积分时间常数,Td为微分时间常数,T为采样周期。对位置式算式加以变换,可以得到PID调节算法的另一种实用形式(增量算式),,可以得到一个方程,这个方程,经常用来在计算机上做逻辑运算。这种算法用来控制步进电机特别方便,对直流电机的控制也可以采用。如图4.3为增量式PID控制算法程序框图。程序开始时,先设置A参数,B参数,C参数,(即P、I、D参数),设置程序第一个采样周期中偏差初始值为零,然后由传感器采集信号,程序第一次执行,设第一次偏差e(k-1),第二次偏差e(k-2
45、)为零,传感器采集到的信号为0到5伏的电压信号,分别通过单片机AD0口,AD2口,AD4口,AD6口输入,经单片机计算偏差,偏差为设定值减去实际传感器采样所获得的值,即e(k)=r(k)-c(k),偏差计算完成后,由PID计算式u(k)= =Ae(k)-Be(k-1)+Ce(k-2)可得到舵机需要动作的大小,最后输出为PID增量式得到的值加上舵机当时的值,即u(k)=u(k)+u(k+1),这个u(k)就是PWM口需要输出的值,PWM波分别从单片机的PWM1口,PWM3口,PWM5口,PWM7口输出,分别控制四个舵机动作,并存储偏差值以供下个采样周期使用,待此个程序周期完成后,检测下个采样周期的完成,使程序循环执行。开始计算控制参数A,B,C设初值e(k-1)=e(k-2)=0本次采样输入c(k)计算偏差值e(k)=r(k)-c(k)计算控制量u(k)=Ae(k)-Be(k-1)+Ce(k-2)输出u(k)=u(k)+u(k+1)被控对象(舵机)结束图4.3增量式数字PID控制程序流程图 本系统采用增量式PID算法的具体流程图如图4.4所示。是是是否小于最小值增量式PID计算偏差计算设置调节死区输出最大值输出最小值返回舵机的占空比是否大于最大值开始结束否否是否超过最大值是否低于最小值图4.4 PID算法流程图PID程序运算开始时,先计