基于51单片机的太阳自动跟踪系统的研究
2 软件设计
本文介绍的控制系统的软件设计采用了结构化、模块化的程序设计方法。主程序初始化完毕之后,即进入等待状态,单片机控制运行交由中断服务程序控制。所需完成的功能主要由子模块实现。各部分独立完成一定的功能,又有机的结合为一个整体,完成所要求的控制任务。
程序的结构如图7所示。主程序包括初始化、最初的A/D转换程序。整个程序周期里,初始化程序只在主程序第一次执行时执行一次。初始化之后,进行最初A/D转换,实际上等于对A/D转换滤波器置初始值。
2.1 定时器1溢出中断服务程序
定时器1溢出中断服务程序包含多个模块,先后在一个T1溢出周期内执行完毕。这些模块包括:控制算法、控制量输出、A/D转换、转换结果处理和分析、异常处理等部分。通过每次T1溢出,周期性的采样、反馈比较、调整、输出,从而实现控制策略。
2.2 控制算法
编制控制算法子程序包括以下几个步骤:计算当前期望位置;计算补偿通道输出值;计算当前实际位置;计算误差和误差通道输出值;补偿通道输出值和误差通道输出值相加。
2.3 控制量输出
单片机输出的控制量为脉冲输出,脉冲量的输出可以通过软件定时器,规定脉冲输出的问隔时间,从而规定了脉冲输出的频率。
2.4 A/D转换及其转换结果处理和分析
虽然硬件上对模拟输入进行了低通滤波,但是仍然会有一些因素可能造成模拟输入量出现较大的误差。为了防止这种情况的发生,需要进行软件滤波,即数字滤波处理。数字滤波有许多优点:
(1)数字滤波器是由程序实现的,不需增加硬件设备,数字滤波可以有多个输入通道共用,因而成本低。
(2)数字滤波由程序实现,不需要硬件设备,因而可靠性好,稳定性高,不存在阻抗匹配问题。
(3)数字滤波使用灵活,修改方便。而本文采用了算术平均值滤波方法。
2.5 异常处理
程序运行中会发生多种异常情况,有些可以通过检查输入数据判断,而有一些情况系统可以自行校正。光电传感器误差信号超出死区也应视为异常情况。可能的原因是出现了一干扰光源或太阳能板与太阳位置发生偏离。为了避免在多云情况下的盲目跟踪,如果辐射强度没有达到特定值,则对于误差信号超出死区不作任何操作。太阳能板与太阳位置发生偏离的情况下,系统有能力自动的回复运行状态。
在每次定时器T1中断时,系统都检查控制字。当控制字表明系统在校正状态时,输出控制量的值由预期位置量和光电传感器误差信号共同计算产生。
3 结语
系统采用特制的四象限硅光电池作为太阳跟踪误差校正用传感器,并且采用AT89C51单片机作为智能单元,可以实现成本较低的全自动太阳跟踪系统。系统具备较好的稳定性,并能够达到相当好的精确度和灵活性。理论分析和设计结果表明,本方法可以满足太阳跟踪控制的要求。
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)