基于Arduino的太阳能追踪系统的设计与优化
2023-01-11朱利军
朱利军
(苏州工业园区职业技术学院,江苏苏州,215123)
太阳能是可再生的能源,也是非常清洁的能源,所以,太阳能的有效利用一直是个非常重要的话题,太阳能有效地接收在光能被越来越重视的今天受到了广泛的关注。由于许多太阳光接收器无法跟随太阳位置的改变而改变,使得太阳能的接收效率低下,研究表明:在相同的太阳能发电系统中,自动跟踪太阳能系统比传统固定式系统的发电效率可以提高将近30%[1]。如何有效提高光电转换效率也越来越引起了人们的重视,因而,通过太阳能接收装置的设计与优化来对太阳能进行高精度的追踪,从而来实现对太阳能的有效接收,继而达到提高太阳光能的利用率,从而可以很好地应用于其他与太阳光能有关的设备。
有许多学者对太阳能追踪进行过很多研究,采用了一些办法,有采用太阳角度追踪和光电追踪的(毛桂生,2010[2]),有基于角度计算和光敏感应的(王涛,2009[3]),有采用双轴追踪和光电传感器相结合(陈沛宇等,2019[4]),本文将检测光强以及太阳轨迹算法两种方法相结合,设计与优化整个太阳能有效追踪系统。
1 设计思路
本文所设计的太阳能追踪系统是以Arduino微控制器为核心,由光电传感器、步进电机、驱动芯片、电源模块、人机交互界面等组成。Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出)、6路模拟输入、一个16MHz晶体振荡器、一个USB口、一个电源插座、一个ICSP header和一个复位按钮。Arduino Uno开发板非常适合做本设计中微控制器。
光电传感器确定太阳能接收器是否正对太阳,DS1307是一个实时时钟芯片,功耗比较低、具有56字节、地址和数据双向串行传输,而且能够每个月的天数能够自动调整,具有闰年补偿功能,可以精确到秒,如果是晚上程序就进入睡眠等待状态,如果是白天则运行程序。通过太阳能探测器和太阳轨迹算法,微控制器经过计算处理之后给驱动芯片SN754410发送指令,步进电机接收控制信号后执行旋转命令,从而保证太阳能接收装置的接收面能够时时正对太阳。系统总体结构如图1所示。
图1 系统总体结构图
具体设计思路如下:使太阳能接收装置的接收面能够依照太阳的运动轨迹进行转动,保证时时对着太阳,从而达到太阳光的高效率利用。为有效实现这一目的,主要分为两个方法:检测光强以及太阳轨迹算法。检测光强主要使用光敏电阻来进行,当四周的光敏电阻感受到同样的光强时,即为正对太阳。太阳轨迹算法即根据地球的自转和公转规律,得出太阳的运动轨迹,对于给定的经度、纬度及时间,可以算出太阳的角度。然后,将这算法用C语言的形式写入Arduino Uno开发板中,可以实现接收面按照正对太阳轨迹的方式运动。
通过太阳能探测器和太阳轨迹算法,Arduino微控制器能够在工作期间计算太阳位置,并发送控制信号至步进电机,该信号将被步进电机驱动芯片放大,步进电机将执行旋转命令,使太阳能接收装置的接收面能够时时对着太阳。
将检测光强以及太阳轨迹算法两种方法相结合,可以使整个太阳能有效接收装置系统满足要求,高效工作。首先,太阳轨迹算法是所有方法中可以提供最高精度、最低功耗的方法之一,但当使用一个步进电机作为机电设备时,它无法自校准;其次,只使用太阳能检测器,会不可避免地受到无法预料的光源的影响。将两种方法相结合,可以达到电路简单、成本低、功耗低和精度高的理想效果。
2 设计方法
2.1 检测光强
使用一系列沿直线布置的光电传感器,并且比较它们所检测到的光强度,从而来确定沿该轴方向的太阳位置。采用两组传感器分别检测太阳方位角和仰角。每组有三个光敏电阻LDR(光敏电阻),且两组共享中心位置的LDR,如图2所示。
图2 传感器设置原理图
5个LDR在电路中具有相同的性能,同时,每组分别对称,确保当光源发出光至检测器的中心时,每一组中无光强度偏差。这样,根据其原理图,光强度转换为电压,这是由于依赖于光强度的LDR阻抗造成的。换句话说,太阳位置通过Arduino Uno上的模拟引脚读取的电压值来表示的,这种方法取决于LDR的精度。
本设计中所采用的光敏电阻是对400nm到700nm的光敏感的CdS光敏光电管。其电阻值从10千欧到200千欧变化。这些LDR的灵敏度通常情况下是0.85/LuxΩ ,对本设计足够高了。
根据原理图所示,应仔细选择电阻,因为电阻直接影响检测器的准确度。LDR的阻值会随入射光强度的改变而变化,合适的电阻决定了测得的电压值的范围。本设计目标应实现最广泛的输出电压范围。假设的LDR的电阻呈线性变化,检测到的电压范围可表示为:
Vout是LDR和电阻之间的电压,R是电阻,Rmax和Rmin是LDR的最大电阻和最小电阻,Vcc是电源,本设计中为5V。
R与电压范围Vrange之间的关系如下:
根据Vrange的表达式,当取最小值时,rangeV取最大值,从中可以推导出电阻为:
电压范围为:
2.2 驱动电路
设计中所采用的步进电机是两相双极步进电机,作为混合动力同步步进电机的模型,其集成了永磁步进和可变磁阻步进的优势。但是,步进电机的选择带来了两个不可避免的问题,一是Arduino的电流不足,另一种是步进电机本身的分辨率限制。
电流不足是步进电机和Arduino之间的电流不匹配导致的:单一的步进电机所需的驱动电流是0.33A,而Arduino数字引脚的最大输出电流为40mA,基于这种状况,需要使用驱动芯片来解决这个问题。
驱动器芯片的型号根据不同的步进电机而不同,相应的双极步进电机的驱动器是半H驱动器,本设计中使用的是SN754410,它具有高的输出电流能力,可以提供高达1A的双向驱动电流,以及4.5~36V较宽的电源电压范围,是一个非常适合于双极步进电机的驱动器。具有独立的输入逻辑电源,可以最大限度地减少设备功耗。此外,集成在芯片上的驱动器的数目与步进电机的输入口的数目是相同的。这样,一个芯片控制一个步进电机,使得代码和电路简单。该驱动器电路如图3所示。
图3 电路原理图
从原理图可以看出,不需要额外的电源供给,Arduino具有给两个步进电机和半H驱动器提供足够电流的能力。这是采用这种特定型号的驱动器芯片的另一个优点,不需要外部支持装置或设备,可确保安装的高适应性和低难度。
3 代码的连接与测试
系统上电运行后,先进行初始化。初始化之后,系统先判断白天还是黑夜。如果是黑夜,系统会产生中断,立即停止运行,处于睡眠待机状态[5];如果是白天,根据太阳能接收器状态是否执行校准,如果是,光电传感器工作,比较它们所检测到的光强度,从而来确定沿该轴方向的太阳位置。如果否,将读取时间,Arduino微控制器计算太阳位置,并发送控制信号至步进电机,步进电机接收到指令后将执行旋转命令,如此循环往复,使太阳能接收装置实时追踪太阳。
最终代码的流程图如图4所示,用于校准由LDR和其他组件组成的太阳能检测器。给太阳轨道算法提供一个起点,如果太阳能接收器已经正对太阳的话,太阳轨道算法能够计算出步进电机旋转的方位角和仰角,但它无法确定接收器的当前角度。其结果是,需要太阳能检测器给微控制器一个基准。
图4 最终代码的流程图
执行校准的时间和持续的时间间隔是至关重要的。这两个参数直接决定了校准是否成功。首先,如果时间点太早,太阳能光不够强,校准后会出现偏差,如果时间点太晚,会浪费大量的太阳能;其次,如果时间周期太短,受到意外光源干扰的可能性将被放大,如果时间周期太长,也会浪费太阳能。
经过测试和调整,实现准确、高效校准的最好方式如下:计算太阳的仰角,一旦角度超过15°,开始设置传感器在特定的时间内,当太阳在天空中移动角度为1°时来追踪太阳。校准完成后,太阳能接收器应该正确地面对太阳,然后不断计算太阳位置,并进入正常运行循环。
4 小结
最终成品需要在两种特殊情况下进行实验测试。一是在室内用可快速移动的光源进行测试,以验证产品的基本工作情况。可以逐渐改变入射角,但速度比太阳更快(避免长时间的测试时间);二是在室外自然光条件下长时间放置,以验证产品的性能和品质。并基于实验的情况,进行调试和优化,同时,必须加入工作时段和天气因素影响的考虑。
本太阳能有效追踪系统能够稳定、可靠地实现太阳能的接收,具有电路简单、价格低廉、安装便易、适应性强等特点,能够准确可靠地实现太阳能的有效追踪,提高太阳能的利用率,可很好地应用于其他与太阳光能有关的设备。