基于STM32和LABVIEW的两用太阳跟踪器设计*
2018-03-29刘卿卿
苏 杨,刘卿卿
(1. 中国民航大学 电子信息与自动化学院,天津 300300;2. 南京信息工程大学 信息与控制学院,江苏 南京 210044;3. 南京信息工程大学 大气环境与装备技术协同创新中心,江苏 南京 210044)
0 引言
目前,在仪器仪表领域,双轴跟踪器[1]和光谱仪[2]等仪器已为大家所熟知,应用也越来越广泛。一方面,在太阳跟踪器领域,为了提高测量精度,人们多数采用传感器跟踪和视日轨迹跟踪方式结合的双轴跟踪法。此种方法虽然能够实现全天候高精度太阳自动跟踪,但在实际应用中,这种持续的二维调节功耗大,造成资源浪费,使电机寿命缩短,不利于节能环保的实现。另一方面,在包括光谱仪在内的一些避免直射跟踪的测量仪器使用过程中,由于需要不断调整仪器角度以寻求最佳测量条件,需要人工进行实时调节,消耗人力。
针对直射跟踪情况下能耗浪费的问题和避免直射跟踪情况下需要时刻调整方位的操作不便问题,本系统将传感器跟踪与太阳运行轨迹跟踪方式相结合,设置了一维与二维的可切换跟踪方式,既实现了一种仪器将太阳跟踪与避免直射两种用途的结合,又达到节约人力物力的目的。本系统利用摄像头作为光电传感器来判断天气状况。此外,通过STM32结合LABVIEW的设计,利用上位机进行更便捷准确的太阳质心提取,解决了传统方式下太阳跟踪过程中跟踪精度不够高的问题。
图3 电机控制信号连接图
1 跟踪原理
本系统硬件部分由微控制器模块、矩阵键盘、TFT彩屏、RTC时钟、步进电机、摄像头模块和上位机组成,太阳跟踪系统的系统框图如图1所示。
图1 太阳跟踪系统框图
跟踪方式包括两种。其一是传感器跟踪方式[3]。这种方式主要由摄像头和机械驱动部分组成,摄像头采用OV2640模块,机械驱动由步进电机完成,可进行对一维或二维转台的操作。上位机部分采用LABVIEW和MATLAB混合编程寻找太阳图像质心,从而确定传感器与太阳直射方位的偏离程度。在这种方式里,太阳位置的变化引起摄像头所拍图像质心的改变,这一信号被上位机所识别,上位机及时响应这一变化,并根据算法计算的结果驱动电机改变其位置,从而调整仪器的方向,使摄像头所拍图像质心重新回归镜头中心点。其二是视日轨迹跟踪方式[4]。这种跟踪方式利用到了天文学上的一种太阳高度角和方位角的计算方法,即只要确定了观测地点的相关数据,就可以求解出观测时刻该点的太阳高度角和方位角,从而驱动电机运行。
这两种方式可根据摄像头模块采集到的光强进行必要的切换。阴天时,太阳光强较弱,摄像头很难准确获取太阳质心位置,系统必须自行进入到太阳运行轨迹跟踪方式。晴天时,太阳光强较强,摄像头模块能很好地响应太阳光位置的变化,系统会自行切换到传感器跟踪方式,以便提高太阳跟踪的准确度。
在跟踪过程中可进行转台维数的变换。由电机操控一维转台或二维转台,且摄像头和仪器之间的夹角可控,即可通过对夹角的控制实现仪器直射或避免直射的不同用途。在要求实时对正太阳的情况下,摄像头与仪器夹角为0°,保持水平,并以二维转台控制仪器方位移动。在要求与太阳保持水平方向某一角度的情况下,调节摄像头与仪器之间夹角,以一维转台控制仪器的方位,从而实现仪器与太阳光形成一个固定可调的投影角度,使操作简便灵活。
2 硬件设计
2.1 光电采集电路
本系统采用封装好的OV2640摄像头模块[5]进行光电采集和光强判断,电路简单,感光灵敏,其电路模块如图2所示。OV2640摄像头模块将摄像头和模数转换等必要电路结合在一起,可输出YUV、RGB和YCbCr格式图像。此外,OV2640适用于低照度环境,其低电压特性又适合嵌入式的开发。
图2 OV2640模块原理图
2.2 电机控制电路
本设计对步进电机进行操控。为使步进电机运行平稳精细,通常还结合细分器的使用。本设计采用57步进电机与细分驱动芯片TA8453相结合,实现跟踪的精确化。STM32和该芯片相连接[6],实现PWM波形输出。两个开关K1和K2分别用于控制微控制器的使能和步进电机的转动方向,同时它也是芯片的时钟输入。电机的控制信号连接图如图3所示。
3 软件设计
3.1 软件流程
软件设计由系统初始化、主程序设计和中断程序设计这几部分组成。主程序实时调整跟踪器位置,并且不断检测是否有中断产生[7]。系统开始运行时,经过初始化,首先将电机复位在一个特定位置,然后可根据人为需求,根据输入命令确定采用一维或二维跟踪方式。此外,系统可自动根据天气状况确定跟踪模式,从而选择单纯的视日轨迹跟踪模式或是传感器跟踪模式,也可以使两种模式相结合使用。其中,传感器跟踪模式下,需要结合上位机部分进行处理。采集到的图像经过串口传输至上位机,当完整的一副图片传递成功后,指示灯熄灭,从而进行图像处理。经MATLAB计算出太阳质心坐标位置。该位置坐标发送给单片机,单片机再通过对位置坐标的计算处理。主程序流程图如图4所示。
图4 主程序流程图
上位机部分,程序开始后首先获得采集到的图像,经判断,在图像传输完毕后,进行图像的读取和太阳质心位置的计算。最后程序将这个计算所得位置坐标输出并结束程序。上位机部分程序流程如图5所示。
图5 上位机部分程序流程图
3.2 阴晴判断
在亮度检测部分,本系统通过对摄像头采集到的图像进行光强提取来判断天气阴晴状况。单片机程序读取摄像头所拍图像每个像素点的值,再进行平均值和标准差的计算。将平均值与经验所确定阈值进行比较,再结合标准差来排除如夜晚晴空等特殊天气的干扰,可以增强判断的准确性。阴晴判断的结果是可以确定采取什么样的跟踪方式。首先通过视日轨迹法粗调仪器,当摄像头模块采集到的光线强度平均值高于设定阈值时判断为晴天,进入传感器跟踪方式。当光线强度低于设定值时判断为阴天,关闭传感器跟踪方式,仅通过太阳运行轨迹跟踪方式来进行跟踪。
3.3 LABVIEW数据采集
虚拟仪器技术是以计算机软件和硬件共同作为开发平台,以软件为主,硬件为辅,来实现一些仪器功能。本设计采用目前虚拟仪器领域中广泛应用的LABVIEW来进行编程设计,具有直观、方便、灵活等特点。
LABVIEW中封装好了串口通信节点,在进行串口通信时,首先要对串口进行初始化并配置好串口。本设计采用VISA配置串口节点来完成,使用该节点可以操作串口的VISA资源名称、比特率、数据和校验位、超时时间以及终止符等参数。通过VISA的使用实现了对串口的便捷操作和控制。
3.4 MATLAB图像处理
本设计利用对MATLAB的调用来实现对太阳质心的提取[8],质心处理流程包括控制摄像头的图像采集、图像灰度转化、图像处理和数据显示几个部分。图6所示为图像处理流程图。
图6 图像处理流程
程序将对图像进行二值化处理[9]。二值化要根据阈值来确定图像中哪些是目标哪些是背景。阈值的选择通常有三种方法,包括全局阈值、自适应阈值和最佳阈值三种方式。本设计中为了便于计算,方便系统运行,采用全局阈值法,通过设定阈值,将采集到的图像划分为目标和背景。此外,程序还利用质心法对太阳进行位置标定。本系统针对二值图像采用质心法,该方法操作更加便捷,且效率较高。经过处理,系统可以计算出图像中质心点的坐标信息。
3.5 MATLAB节点调用
LABVIEW在界面开发、数据保存等方面有较强的优势,但在计算、图像处理等领域不具备MATLAB的优越性。因此将二者结合起来完成对太阳的一系列图像采集、处理、保存等功能,扬长避短,能够进一步优化太阳跟踪系统。LABVIEW和MATLAB的混合编程方法很多,本设计采用了直接调用LABVIEW提供的MATLAB Script节点[10],实现二者的无缝衔接。
MATLAB Script节点可以先在MATLAB中进行调试,调试成功后再将其导入到MATLAB Script节点中。MATLAB Script节点调用过程中应注意数据类型的匹配。由于本设计涉及的算法较为简洁,使用调用MATLAB Script节点的方法,简单易行。MATLAB对串口获取的图像进行读取和处理,处理后的图像经计算得到质心坐标值,从而控制步进电机移动相应的距离和方向。
4 实验结果
STM32能够正常驱动电机运转,并通过串口将摄像头OV2640采集到的图像实时发送至上位机。LABVIEW成功接收到图像,再通过调用MATLAB节点进行图像处理,寻找到质心并经过串口将其坐标发送到单片机进行进一步的电机驱动。图7为处理前图像,图8为LABVIEW前面板显示的处理后的结果,中心一点为所标记质心。
图7 处理前图像
图8 图像处理结果
5 结论
本系统使用STM32和LABVIEW作为核心,通过串口通信方式完成单片机与上位机之间的数据传递,实现了不同天气情况下对太阳的直射跟踪或避免直射。本系统经实际操作验证,系统运行平稳,处理结果正确,可以应用于如太阳能跟踪控制系统或光谱仪等测量仪器中。
[1] 王海军. 基于阴晴判断的混合双轴太阳跟踪控制系统[D]. 武汉:武汉理工大学, 2012.
[2] 刘康. 微型光谱仪关键技术及其应用研究[D]. 杭州: 浙江大学, 2013.
[3] QIN X S, CHEN X R, NIE D L. Dual-axis solar tracking system based on STM32[J]. Information Technology, 2013,37(4):113-115.
[4] 曾利霞. 基于视日运动轨迹的双轴太阳跟踪系统的研究[D]. 武汉:湖北工业大学, 2012.
[5] WANG J, LIANG Z, ZHENG W, et al. Embedded image acquisition system design based on STM32 and OV2640[J]. Microcontrollers & Embedded Systems, 2014,14(9):46-48.
[6] 库少平, 刘晶. 基于STM32F10x和MDK的步进电机控制系统设计[J]. 武汉理工大学学报, 2009, 31(3): 107-110.
[7] 凌好, 刘荣忠, 郭锐, 等. 基于STM32的太阳自动跟踪控制系统的设计[J]. 计算机测量与控制, 2012, 20(2): 383-385.
[8] 尤金正, 邹丽新, 周同, 等. 太阳图像中光斑质心位置的检测[J]. 现代电子技术, 2010, 33(12): 191-200.
[9] 杨超华. 基于LABVIEW和MATLAB混合编程技术的视频运动目标检测与跟踪方法研究[D]. 南京:南京理工大学,2013.
[10] LI N, ZHANG Y P, ZHU L J. Using MATLAB Script in LabVIEW[J]. Instrument Standardization & Metrology, 2003(5):17-19.