摘要
对绿色能源的开发和利用是响应我国节能减排重要决策,太阳能跟踪装置。此装置使用了单片机,外加两个步进电机,光电转换器和相关的外部元器件及传感器等等,其中太阳能电池板和云台都可以很好的完成360°旋转,使用两个步进电机也可以更精确的定位旋转角度,使用单片机控制,感光元器件采样,再进行电平对比来实现方位和角度的控制,当两者没有电平差的时候,电机静止运作,当有电平差的时候单片机控制步进电机运动,课题成果不仅可以用于太阳能发电,还可以用到其它的向光场所,如天文观测等具有较高的实用价值。
关键词:太阳能;步进电机;单片机控制;感光元器件
Abstract
The development and utilization of green energy is an importantdecision in response to China's energy conservation and emission reduction,solar tracking device. This device USES a single chip microcomputer, plus twostepper motors, photoelectric converter and related external components andsensors and so on, including solar panels and yuntai can be very good tocomplete 360 ° rotation, using two step motor can also be more precisepositioning of the rotation Angle, using single-chip microcomputer control,photosensitive components sampling, Again level compared to realize theposition and Angle control, when there is no level difference between the motorstill work, when the level difference single-chip microcomputer controlstepping motor sports, subject results not only can be used for solar power,can also use the other to light place, such as astronomical observation hashigh practical value.
Key words: solar energy; Stepper motor;MCU control; Sensitive element
第一章 绪论
1.1 前言
随着时代的进步与科技的飞速发展,使得对能源的需求随之增加,对不可再生能源的过度依赖,从而使得不可再生能源的存储量急剧减少,一些不可再生能源(石油)被视为战略资源,据目前统计,煤炭、石油、天然气也会在岁月的实践中而日趋枯竭[1],消耗殆尽。为更好可持续发展,此次设计提出了可行性方案太阳跟踪解决方案。
1.2 研究太阳能跟踪器的目的和意义
为了解决人们对不可再生资源的过度依赖和对清洁能源的高利用率。提出设计一款零污染高效率的装置——太阳追踪器。通过电机,控制器,采光板光线传感器等元器件之间的相互配合,实现对太阳光照射最强的方位跟踪,安全且绝对的无污染清洁能源,这也就很好的阐述了光能的可行性。——对此提出太阳跟踪装置设计与制作。
1.3 对太阳能的认识
优点:太阳作为一个取之不尽用之不竭的能源。在《太阳能利用技术》[2]就有相关的提到,所到达地球表面能量等同于每秒向地球源源不断的投放了500万吨煤炭。阳光所到之处,皆为财富,免费使用的同时也不需要考虑任何的运输费用以及零污染等特性。缺点:即便如此的看似完美无缺,也存在着两个致命性缺点[3]:一是能流密度很小;二是太阳的光照强度也会因为(天气、白夜等)因素的不同而有着很大的差距,很难长时间维持在恒定值,这也在一定程度上大大的影响了使用效率[4]。
1.4 太阳追踪器国内外现状与发展趋势
国外太阳追踪器:对太阳能的使用在两千零四年到两千零六年太阳能的发电量都是惊人的4961MW[5],在一九九七年,美国的Blackace研制了单轴追踪器,热接收率提高了百分之十五......, [6]。
国内太阳追踪器:在应用市场上面得到了不断扩张,对于太阳能追踪器的利用那也是一个相当热门的谈话主题,途径多年的经验,将其用在了热水器、路灯以及西部计划、太阳能发电、太阳能供暖等等[7]。
更多的往往是采用单轴跟踪的方式,相比之下更需要多轴,实现全方位无死角跟踪。
1.5 工作内容
自动控制和手动调节工作方式:
“自动模式”:自动模式顾名思义也就是不受人为控制的一种自动追寻的过程。设备上电后,初始化完成,根据感光元件对光强度值得采集,后经过A/D转换将电信号转换成数字信号,根据数字信号的大小关系实行控制电机运动,当光照强度值下方大于上方,单片机发出控制指令,上端电机向下翻转;同理光照强度上方大于下面,单片机发出控制指令上端电机向上翻转;当且仅当上下光照强度均等时,上端电机不进行任何的相对翻转。左右方向转动,光照强度值右高于左方,单片机发出指令,控制下方电机左方向旋转相应角度;光照强度值左高于右时时,单片机发出控制指令,下方电机向左转动相应角度;当左右方位采光度也保持几乎均应的时候光照,那么下方位的第一个电机也将保持不动。
手动模式下,通过手动控制四个按钮的高低电平状态实现上,下,左,右翻转动作。
第二章 方案选择与系统设计
2.1 方案选择
2.1.1 编译语言的选取
选项1:C语言
语言结构,丰富的运算符和程序在编写时既简单又紧凑。直接访问物理地址可实现直接硬件控制。该程序运行非常有效。
作为面向过程的C语言,它的特征在于对算法和数据结构的处理。通过直接算术处理,实现高效率输出。
选择2:C++语言
C ++面向对象,更好地适应现代编程。使用过程中C++的使用具有局限性,嵌入式的应用中,更多的依旧是采用C语言作为开发环境使用,C语言运行也较快。C++由于过于复杂,在这方面就稍逊一筹。
选择3:Java
Java是一种解释性语言,Java在运行程序时,运行前进行解释,使得速度会减慢;而C++会被直接编译系统所能识别的二进制代码形式,使得在运行速度更快。
从系统的复杂性出发来考虑,同时整个过程的计算量比较大,因此我选用了浮点数的计算方式,选用1作为整个系统编译方式。
2.1.2控制系统总体方案选取
选择1:视日寻迹追踪模式
这种模式是基于天文学公式,通过公式对其理想化计算得出太阳在不同时候所处的不同方位和角度。后期依据当地的每日实际运行轨迹进行对应控制算法程序的编写来完成两个步进电机来达到俯仰和方位上的转动。优点是对外界环境的依赖小,弊端是不管外界环境是何种天气,它都会以同样的工作方式运动,增加了不必要的能耗和元器件的寿命磨损。
太阳俯仰角h和方位角A的两个位置参数,可表达如下所示:
[if !vml]
[endif]
δ倾角,Φ局部纬度,Ω太阳时角。 (5-1)
选择2:光电跟踪模式
特定方法:模拟电池板的不同之处在于,在四个方向上安装了光敏元件[8],并且有关外部光强度的信息的反馈通过光敏元件传输到核心板上的A/D转换。单片机再进行信息处理比对光照强度下大于上STM32发出控制指令,驱动上端电机向下翻转;另外的三种不同的运动情况,也都是完全相同的控制比较方式。
通过两者的比较,选择2,简单易操作性,更适合被普及广泛使用,在同等使用条件下,最简方案,则是最优方案。
2.1.3主控系统选择
选择1:51单片机控制芯片的选择。程序修改,相当方便快捷,价格低,但A/D转换需要拓展,增加软硬件负担,运行速度慢,在使用中保护能力欠佳。
选项2:FPGA基于SRAM,编程信息存储SRAM中。缺点系统断电后信息遗失,每次使用都必须重新配置。
选择3:ARM高性能嵌入式系统。对解决数据处理和控制功能具有相当不错的表现,十分适用于太阳能跟踪,断电后信息不会丢失,可无限次使用。
结合任务要求,选用3作为设计标准,采用STM32F103C8T6。
2.1.4电机选择
选择1:步进电机。可以精确控制电机的转到角度,以便于更好的实时跟踪。
选择2:直流电机。减速机提高转矩,具有较大的负载,高精度电机控制直流电机无法满足设计要求。
通过控制脉冲数直接控制启动和停止。启动速度快,步距角和速度仅取决于脉冲频率,不受外部因素的影响。因此,作为此设计任务的前提条件,我们选择了方案1作为本路线设计的驱动电机,以便更精确地控制角度值并更好地利用太阳能。
2.1.5电机驱动系统选择
选择1:L298专业电机驱动模块选型,这种类型的驱动模块易于使用和连接,并且可以同时驱动步进电机和直流电机。
选择2:用于三极管和其他分立元件的H桥。重点是优点,简单的控制方法和简单的结构。载流量小,由于元件离散,体积大,稳定性得不到保证。
选择3:采用集成芯片,ULN2003。
可驱动八个步进电机芯片,可用于两个步进电机。在实际使用中,它通常被用作为大型步进机动车辆提供动力的起点。
在本设计中,根据实际设计要求选择了选项3作为步进电机驱动系统。
2.1.5实体结构框架选择
选择1:电机互相处成90°角安装,电机的左右翻转和上下翻转,缺少互助设备会出现运动死角。
选择2:将两个电机垂直安装,改变为大于90°的安装,在不引入外部设备的情况下,可以很好的避开运动死角,从而可实现全方位无死角跟踪,综合上述情况选择方案二进行本次的实体结构设计。
2.2系统设计2.2.1 单片机构成如下图:
[if !vml]
[endif]
图2–2–1 单片机构成示意图
控制方式:第一步是将数据程序装置,输入设备将程序发送到CPU,并且相应地将每个程序发送到控制器,然后控制器完成相互命令的传输,最后作用在输出装置上,输出设备上显示的结果是原始程序的效果。
2.2.2系统整体控制框图如下:
[if !vml]
[endif]
图2–2–2 系统整体控制框图
控制方式:完成整个驱动控制,第一步就是感光元件及光敏电阻传感器对外界光的采集,完成电压跟随,通过A/D转换,然后通过电压的比较,使用STM32F103C8T6单片机控制电机的驱动,最终完成不同电机在不同的光照强度情况下不同方向的运动,最后实现对光的最大化接收。
2.2.3电机控制框图如下:
[if !vml]
[endif]
图2–2–3 电机控制框图
控制方式:通过光的采集,实现对电机运动方式的最终选择和控制。
1当第一组感光元件接收到的光强度值大于其他三个方向的光强度值时,电机完成电机在水平方向的正向旋转,并返回到原始状态。
2当第二组感光元件接收到的光强度大于其他三个方向的光强度时,电机在水平方向上完成电机反转并返回到原始状态。
3当第三组感光元件采集到光敏数值大于另外任何方位的值,垂直方向电机做正向旋转。
4当第四组感光元件采集到光敏数值大于另外任何方位的值,垂直方向反向运动。
感光元件在接收管的均匀照明下时,此时的照明强度几乎相等,这意味着电机的状态不移动。
2.2.4整体电路原理图如下:
[if !vml]
[endif]
图2-2-4 整体电路原理图
系统上电启动,感光元器件采集此时此刻的光照强度,进行A/D转换后单片机对光强值比较,发出指令控制步进电机相应运动【2】,初始默认状态是自动跟踪模式【3】。
手动模式,通过控制4个按键的高低电平来实现接通与断开,单个控制开关分别控制两个电机四种不同的状态运动,升压模块是为了给整个系统稳定供电而存在。
第三章 元器件介绍
3.1 系统硬件系统分析设计
3.1.1
STM32单片机核心电路设计
较低的功耗,在达到使用要求的情况下,可为实验之外提供更多的串口和扩展的应用电路【4】,对发展前景的选择多于51。
一、STM32优点:
ARM架构,Cortex-M3内核;功耗控;易于开发等。
二、STM32平台的选择可靠性:
存储空间和管脚应用大;引脚与软件的高度兼容性。
STM32F103C8T6图如下:
[if !vml]
[endif]
图3-1-1(a) STM32单片机核心板接口原理图
STM32单片机实物图如下图所示:
[if !vml]
[endif]
图3-1-1(b) STM32单片机核心板实物图
3.1.2 步进电机驱动电路设计
在系统中,选择了4期5线的5V-步进电机。
[if !supportLists]1. [endif]型号为28BYJ-48。
[if !supportLists]2. [endif]直径:28mm
[if !supportLists]3. [endif]电压:5V
[if !supportLists]4. [endif]步进角度:5.625 x 1/64
[if !supportLists]5. [endif]减速比:1/64
[if !supportLists]6. [endif]单个重:0.04KG
具体驱动电路原理图如下:
[if !vml]
[endif]
图3-1-2(a) 驱动电路原理图
[if !vml]
[endif]
图3-1-2(b) 驱动电路原理图
[if !vml]
[endif]
图3-1-2(c) 步进电机实物图
3.1.3 按键电路设计
按键控制相当于一种电子开关,当S1受外力按下时,电路导通从而达到人机交互的效果。按键时,引脚电平发生变化,由高变低,系统开始传输手动输入指令,电机运动。
原理见下图:
[if !vml]
[endif]
图3-1-3 按键电路原理图
3.1.4 光照检测电路设计
本系统的感光元件是行业最新出现的光敏电阻元件,通过四个光敏电阻的串联,既能达到分压的效果,又对整个系统起到保护作用。光敏电阻原理图如下:
[if !vml]
[endif]
图3-1-4 光敏电阻原理
3.1.5
TFT触摸彩屏1.44寸模块
TFT,也被称为电影场效应晶体管。由点脉冲控制,这相当于为每个像素设置了一个控制开关。节点之间完全独立,也可连续控制,连续控制可提高反应速度。
一、该模块有如下特点:
[if !supportLists]1) [endif]128×128分辨率。
[if !supportLists]2) [endif]1.44寸的彩显示器。
[if !supportLists]3) [endif]色彩深度:16位。
二、接口定义
表 3-1-5 接口定义表
管脚顺序管脚定义功能阐述
1GND电源接地端
2VCC电源正极
3SCLSPI时钟输入
4SDASPI数据输入
5RES屏得复位
6DC命令/数据选择
7CSSPI片选输入
8BL背光控制输入
三、模块实物图如下图所示:
[if !vml]
[endif]
图3-1-5 显示屏
原理图如下:
[if !vml]
[endif]
图3-1-5 显示屏原理图
3.1.6 太阳能发电电路设计
太阳辐射能要通过光电效应或化学效应实现转换,那么我们首先就要使用到可以吸收太阳光的太阳能大多数面板(Solarpanel)仍然是由“硅”。对于普通的干电池或充电电池,重点是节能环保零污染
特点:超白玻璃作为高透明性的低铁玻璃,透光率达到了惊人的91.5%。
组件在自然情况下是全部裸露,而空气中的容易色变,从而影响组件的透光率。
晶体硅主要是分为多晶和单晶料是最主要的光伏材料,市场中占比也是惊人的达到了90%以上,然而在今后较长时间内也是主要是以硅作为太阳能电池板的主要材料,可将其相当不错的未来可预见性。
实物图如下图所示:
[if !vml]
[endif]
图3-1-6(a) 太阳能电池板实物图
其电路接口原理图如下图所示:
[if !vml]
[endif]
图3-1-6(b) 太阳能电池板发电接口原理图
3.1.7 TP4056锂电池充电模块电路设计
TP4056锂电池充电模块,防倒充电电路,TP4056作为恒定电流/电压可持续性充电模块,作为本次选择的有力据。为了防止因为高温和大功率状态下对芯片的影响,选用TP4056可完成对电流大小的可控调节。
本模块的特点:
[if !supportLists]1) [endif]外设通过USB直接通电。
[if !supportLists]2) [endif]IN+和IN-针供电。
[if !supportLists]3) [endif]输入电压:4v-8v。
[if !supportLists]4) [endif]充电红灯点亮,充电后蓝灯点亮。
TP4056锂电池,并联电容器,稳定电压输出滤波功能。
充电原理图见下:
[if !vml]
[endif]
图3-1-7(a) TP4056锂电池充电模块接口原理图
TP4056锂电池充电模块实物图如下图所示:
[if !vml]
[endif]
图3-1-7(b) 锂电池充电模块实物图
3.1.8 USB-5V升压模块电路设计
USB5V升压模块,高效输出以及恒定频率。可提供中等电压输出规格。本设计系统采用升压模块将电压从3.7V升压到5V
实物图如下:
[if !vml]
[endif]
图3-1-8(a) 模块5V跳线取线图
在焊接USB-5V升压模块时,直接与电源线焊接,也可以单排插脚焊接后插入PCB板或通用板。
USB开关闭合,升压模块得电工作,锂电池3.3V升压到5V。增压模块失电,减小电压波动,使电压输出更加稳定。接口原理图如下:
[if !vml]
[endif]
图3-1-8(b) USB-5V升压模块接口原理图
USB-5V升压模块实物图如下图所示:
[if !vml]
[endif][if !vml]
[endif]
图3-1-8(c)USB-5V升压模块实物图
3.1.9 分压电路设计
采集电压信号大于光电转换模块要求上限值时,需要采用分压器的形式来解决电压过高引起的溢出问题。
3.2
STM32 单片机系统软件设计
3.2.1 Keil程序开发环境
C语言逻辑结构清晰,包括链接器和图书馆管理,我们使用集成开发环境(Vision)把各个部分放在一起。选择Keil通过以上的基本解释,即最后的选择,最好的选择。
Keil界面如下:
[if !vml]
[endif]
图3-3-2Keil uVision5开发界面图
3.2.2 STM ISP程序烧录
STM ISP是用于编程的烧录软件可以直接下载单片机使用的程序,同时程序检查和编程。32开发板、下载器以及PC连接后,选择相应的串口号,选择目标程序对应端口,单击“开始变成(P)就可以完成对程序的下载”。
具体下载界面如下图所示:
[if !vml]
[endif]
图3-3-3 烧录软件下载界面
3.2.3
CH340串口程序烧写模块介绍
[if !vml]
[endif]
图3-3-4(a) CH340串口烧写模块
二、CH340串口烧写模块引脚说明
[if !supportLists]1. [endif]TXD 对应RXD引脚
[if !supportLists]2. [endif]RXD 对应RXD引脚
[if !supportLists]3. [endif]GND 对应GND。
三、CH340串口烧写模块
具体接线图如下表所示:
表3-4-4(b)
CH340串口烧写模块与单片机接线
CH340模块单片机开发板
TXD引脚PA10
RXD引脚PA9
GNDGND
3.4 软件开发工具
[if !supportLists]1. [endif]STC11F16XE单片机开发集成环境:Keil
[if !supportLists]2. [endif]单片机下载上位机软件:STM
ISP下载器MCUISP
[if !supportLists]3. [endif]PCB绘图软件:dxp
[if !supportLists]4. [endif]流程图绘画软件:WPSOffice
第四章 系统测试
4.1 软件调试
为了防下载程序出错,在调试前,我们需要特别留意,所编写程序在对单片机选型,是否准确无误,串口也要正确,本设计所使用的单片机型号为STM32F103c8t6,使用keil软件作为编程工具,程序完成后生成。hex文件,现在编译程序,当软件编译完成后,下方显示检查无错误,接着就是程序的调试部分,调试完成,生成最后的最终程序其型号选择如图4-1所示。Keil编译程序成功如图4-2所示。
[if !vml]
[endif]
图4-1 Keil单片机型号选择
[if !vml]
[endif]
图4-2 Keil编译成功
程序编译结束,切换输出选项卡,生成.hex文件,确认保存路径,重新编译和组建程序,后生成.hex文件。Keil生成.hex如图下图。最后将程序从Keil传输到STM32F103c8t6最小系统
[if !vml]
[endif]
图4-3 Keil生成.hex文件
4.2 系统整体调试
利用软件AD15将原理图绘制成PCB板。绘制PCB板过程是:来到了软件首先调用画好的原理图,再者电路设计图打开后点击设计菜单栏,选择Update PCB Document PCB1.PcbDoc;第三步点击验证变更,将原理图导入PCB,正常生成PCB,个体图PCB完成后,自动布线,整体的PCB完成。利用keil软件下载器将程序导入32单片机后,按照预定要求进行调试。
[if !vml]
[endif]
图5-6 布置好线的PCB图
第五章 全文总结与展望
5.1全文总结
整个系统使用了STM32F103C8T6核心板、光敏采集电路、调压模块、步进电机等构成。光敏采集板和主控板连接线相互连接。光敏采集板安装光敏传感器模拟太阳能板。主控板按键控制及相关驱动方面进行指令控制。
一、太阳能板采光。电路稳压后将电能备用到电池里面进行储能,3.3升压到5V给整个系统供电,有单独的电源控制开关可以进行电源的通断控制。在给设备系统进行上电后,系统最初的默认形式为随太阳运动而运动的“自动模式”,还有就是可以通人为控制改为“手动模式”[9]。
二、 系统上电时,无论是自动还是手动,光敏电阻都会采集光强度并完美地显示在显示屏上,上、下、左、右四个方位。通过两个步进电机驱动来完成上下左右运动,将两个步进电机焊接在一块形成了一个角度多自由度的整体。两个电机都是通过连接线与主板进行的连接,通过光敏电阻对光强度的采集获得四个方位的不同关照强度值,最后通过与预计值的比较,最后来确定电机的运动轨迹[10]。
三、自动模式:Automatically judge the light
intensity, if the light intensity below is greater than the light intensity
above, the STM32 MCU will directly drive the upper motor to flip down;以便于在下午太阳西落的时候,获得更多的关照,若上面光照强度大于下面光照强度,STM32单片机就会直接驱动上端步进电机向上进行运动[11];若上下两个方位的光照强度均是大小相差无几,那么上端步进电机则不进行任何的动作。接下来就是对于当上下光照均匀左右运动的情况,若右方位的光照强度大于左方位的情况下,STM32单片机就直接驱动下方位第一个步进电机向左方位一定角度转动[12];左方光照强度高于右方光照强度,单片机直接驱动下方位步进电机左位运动[13];当左右方位采光度也保持几乎均应的时候光照,那么下方位的第一个电机也将保持不动。那么此时此刻设备的状态将是完全的禁止,STM32单片机将不对电机给出任何的运动指令[14]。
四、切换“手动模式”状态手动按键完成设备状态切换。四个按钮控制:上、下、左、右四个方位的运动。通过点动的方式来控制驱动步进电机的实际运动[15]。
四、当太阳能收集有限时,此时使用外部电源USB充电模块对其进行锂电池上电,以保障系统的正常运行[16]。
显示屏显示光敏电阻采集光的范围0-1000。自动模式和手动模式,对上、下、左、右方向进行光的采集。两个步进电机实现多维度控制,上下翻转和左右转动。
5.2后续工作展望
它在原有的基础上,还可以与外部设备配合使用,如利用电厂的储能,向鱼塘的制氧机供电,通过电力实现步行关灯,蓝牙控制路灯等
致 谢
时间很快,毕业设计已经开始接近尾声,几年的大学学习生涯即将告一段落,在后期的研究生生涯中希望可以得到更好的视野拓展。通过本次的设计,问题也是层出不穷,也是这些困难让我学会了成长,以前几乎自己一个人没有单独做过设计,因此也遇到C程序的编写这一大困难。慢慢的一切都会因人而解,吴导师的大力帮助,是很重要的一个环节。
从这次的毕业设计中,深刻的体会到学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次毕业设计中的最大收获。硬件只有多做,自己多搭建电路来调试才能真正的学得知识。
首先,我要感谢我的导师对我的悉心指导。他为我的毕业设计指导尽心竭力,他渊博的知识、平易近人的性格以及在设计上敏锐的洞察力,使我受益非浅。在整个毕业设计期间,老师时不时提醒着我,要做什么了,听在耳里,看在眼里更是记在心里。从最初的选题到后期的完成,少不了导师的教导。占用了老师的宝贵时间,得以最后完成论文。
在大学的几年学习生活中,感谢学院也感谢各位老师让我们有了获取知识的平台,结识了一帮有着共同爱好的朋友,我们大家共同学习,为完成毕业设计打下了基础——感谢得以与大家相识、相知、相惜。
谢谢大家!
参考文献
[if !supportLists][1] [endif]张翠华,范小振.《能源新视野》. [M]. Boston: Artech House, 2017 , 5-8
[if !supportLists][2] [endif]罗金玲.《电脑编程技巧与维护》.[M].2015年第22期31-32,37共3页
[if !supportLists][3] [endif]武奇生.《基于ARM的单片机应用及实践》.[M].机械工业出版社12页
[if !supportLists][4] [endif]郭欣. 太阳能双轴跟踪系统的研究与设计[J].装备制造与教育, 2017, 03 , 6-9
[if !supportLists][5] [endif]杨亚龙. 太阳能电池板自动追光系统研究与实现[D]. 长安大学, 2014 , 5-6
[if !supportLists][6] [endif]高绪昊. 太阳能跟随系统设计[J].硅谷, 2013 02
[if !supportLists][7] [endif]刘卿卿,俞强,赵毛毛,王竞雄. 基于STM32的光电式太阳跟踪系统设计[J]. 仪表技术与传感器, 2017, 01
[if !supportLists][8] [endif]扎西顿珠袁超 胡石峰.《黑龙江科学》. [M].2019年第24期28-31,共4页
[if !supportLists][9] [endif]
[if !supportLists][10] [endif]李仁浩,龚思敏,杨帆. 基于单片机控制太阳能智能跟踪控制系统的设计[J]. 仪表技术与传感器.2015(04) :21-23
[if !supportLists][11] [endif]叶伟慧,廖才,石金强,陈国康.基于阳光方位探测器的太阳能收集板姿态调节系统 [J]. 仪表技术与传感器, 2011(03) :156-160
[if !supportLists][12] [endif]刘卿卿,俞强,赵毛毛,王竞雄.基于STM32的光电式太阳跟踪系统设计[J].仪表技术与传感器.2017(01)
[if !supportLists][13] [endif]李仁浩,龚思敏,杨帆,刘松,李小兵.基于单片机控制太阳能智能跟踪控制系统的设计[J].仪表技术与传感器.2015(04)
[if !supportLists][14] [endif]王定玲,夏美娟.太阳能自动跟踪系统设计[J].江苏科技信息. 2017(02)
[if !supportLists][15] [endif]申来明,杨亚龙.一种利用单片机实现太阳跟踪的设计方法[J].现代电子技术. 2014(10)
[if !supportLists][16] [endif]许义泉,王燕昌,王子文,慕松.赤道坐标系下新型太阳能自动跟踪装置设计[J].机械设计与制造. 2013(09)
[if !supportLists][17] [endif]闫云飞,张智恩,张力,代长林.太阳能利用技术及其应用[J].太阳能学报. 2012(S1)
[if !supportLists][18] [endif]王阳.太阳能电池板追光系统的研究[D].沈阳工业大学.2017
[if !supportLists][19] [endif]Du Xiaoqiang,Li Yuechan,WangPengcheng,Ma Zenghong,Li Dangwei,Wu Chuanyu. Design and optimization of solartracker with U-PRU-PUS parallel mechanism [J] IOP J.MECHMACHTHEORY.2020.104107
[if !supportLists][20] [endif]Qingli HaidongLiu. Design of
Solar Energy Automatic Tracking Control System Based on Single Chip
Microcomputer [J]. IOP Conference Series Earth and Environmental Science March
2019
[if !supportLists][21] [endif]Du Xiaoqiang, Li Yuechan, WangPengcheng, et al. Design and optimization of solar tracker with U-PRU-PUSparallel mechanism[J]. 2021, 155:104107
附录Ⅰ系统PCB如下:
[if !vml]
[endif]
附件图 0–1主控板PCB
[if !vml]
[endif]
附件图 0–2光敏PCB
附录II部分程序
#include "my_include.h"
char dis0[25];//液晶显示暂存数组
char dis1[25];//液晶显示暂存数组
#define F_SIZE 16
#define MyLCD_Show(m,n,p) LCD_ShowString(LCD_GetPos_X(F_SIZE,m),LCD_GetPos_Y(F_SIZE,n),p,F_SIZE,false)
#define RONGCHAZHI_UD 500 //容差值
#define RONGCHAZHI 500 //容差值
#define ZHUANDONG_ZZ 50 //转动一个正角度
#define ZHUANDONG_FZ -50 //转动另一个方向转动
int lighVla_left = 0;//ad采集结果1
int lighVla_up = 0;//ad采集结果
int lighVla_right = 0;//ad采集结果
int lighVla_down = 0;//ad采集结果
float batteryVolt = 0;//锂电池电压ad采集结果
float BatCap=80; //容量初始化
unsigned char disFlag = 0;//更新显示
unsigned char setMode =0;//设置模式
unsigned char rememberMode =0xff;//记录上一次设置状态
int main(void)
{
unsigned chardisYplace=0; //显示所在行递增变量
USARTx_Init(USART1,9600);
// My_LED_Init();
// My_RTC_Init(false);
My_ADC_Init(ADC1);
My_KEY_Init();
My_StepMotor_Init();
LCD_Init(); //tft初始化
// TP_Init(); //校准已经包括再此函数中 先执行LCD_Init(); 触摸校准调用显示
LCD_Clear(Color16_BLACK);//清全屏
BACK_COLOR=Color16_BLACK;
FRONT_COLOR=Color16_LIGHTGRAY; disYplace=0; //显示所在行递增变量
MyLCD_Show(2,disYplace++,"双轴追光系统");//显示
FRONT_COLOR=Color16_LIGHTBLUE;
MyLCD_Show(1,disYplace++,"光照参数: ");//显示
MyLCD_Show(4,disYplace++,"上: ");//显示
MyLCD_Show(1,disYplace,"左: ");//显示
MyLCD_Show(9,disYplace++,"右: ");//显示
MyLCD_Show(4,disYplace++,"下: ");//显示
MyLCD_Show(1,disYplace++,"设置: ");//显示
while(1)
{
My_KeyScan();
if(KeyIsPress(KEY_5))
{
if(setMode!=0 )setMode =0;//自动模式
elsesetMode=1;//手动模式
}
switch(setMode)
{
case 0: //自动模式
if((lighVla_left- lighVla_right)>RONGCHAZHI_UD ) //调整向强光方向转动
{My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ);}
elseif((lighVla_right - lighVla_left )>RONGCHAZHI_UD )//调整向强光方向转动
{My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);}
else{My_StepMotor_Stop(10);}
if((lighVla_up- lighVla_down)>RONGCHAZHI_UD ) //调整向强光方向转动
{My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);}
elseif((lighVla_down - lighVla_up )>RONGCHAZHI_UD )//调整向强光方向转动
{My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);}
else {My_StepMotor_Stop(10);}
break;
case 1: //手动模式
if(KeyIsPressed(KEY_1))//按键按下
{
My_StepMotor_RotateAngle(0,ZHUANDONG_ZZ);//转动度数正值一个方向负值另一个方向
}
elseif(KeyIsPressed(KEY_3))//按键按下
{
My_StepMotor_RotateAngle(0,ZHUANDONG_FZ);//转动 度数 正值一个方向 负值另一个方向
}
else {My_StepMotor_Stop(0);}
if(KeyIsPressed(KEY_2))//按键按下
{
My_StepMotor_RotateAngle(1,ZHUANDONG_FZ);//转动 度数 正值一个方向 负值另一个方向
}
elseif(KeyIsPressed(KEY_4))//按键按下
{
My_StepMotor_RotateAngle(1,ZHUANDONG_ZZ);//转动 度数 正值一个方向 负值另一个方向
}
else{My_StepMotor_Stop(10);}
break;
default:break;
}
lighVla_left =1000- 1000*My_ADC_GetValue(ADC1,ADC_Channel_0)/4096; //读取ad值 转化为0-1000
lighVla_up = 1000- 1000*My_ADC_GetValue(ADC1,ADC_Channel_1)/4096; //读取ad值 转化为0-1000
lighVla_right =1000 - 1000*My_ADC_GetValue(ADC1,ADC_Channel_2)/4096; //读取ad值 转化为0-1000
lighVla_down =1000 - 1000*My_ADC_GetValue(ADC1,ADC_Channel_3)/4096; //读取ad值 转化为0-1000
if(disFlag == 1)//更新显示
{
disFlag =0;
FRONT_COLOR=Color16_LIGHTBLUE; disYplace=2; //显示所在行递增变量
sprintf(dis0,"上:%d ",lighVla_up);//打印
MyLCD_Show(4,disYplace++,dis0);//显示
sprintf(dis0,"%d",lighVla_left);//打印
MyLCD_Show(4,disYplace,dis0);//显示
sprintf(dis0,"%d",lighVla_right);//打印
MyLCD_Show(12,disYplace++,dis0);//显示
//**Allnotes can be deleted and modified**//
if(rememberMode!= setMode)
{
rememberMode= setMode;//记录设置模式
if(setMode== 0)MyLCD_Show(8,disYplace++,"自动 ");//显示
elseif(setMode == 1)MyLCD_Show(8,disYplace++,"手动 ");//显示
}
batteryVolt =My_ADC_GetValue(ADC1,ADC_Channel_4)*3.3/4096 *2 ;//锂电池电压
if(batteryVolt>4.15) //电压值对比
{BatCap =0.99;}//容量
elseif(batteryVolt<3.4)
{BatCap=0;}
else
{BatCap =(batteryVolt-3.4)/(4.15-3.4);}//正常情况下计算比例
if(BatCap<0.45){FRONT_COLOR=Color16_RED; }
sprintf(dis0,"B:%3.1fvQ:%02d%% ",batteryVolt,(int)(BatCap*100)); //打印
MyLCD_Show(1,6,dis0);//显示
}
}
}