引言
随着国内外对清洁能源需求的增加以及各国政府对清洁能源补助的提高,光伏组件的需求也在快速增长。为保证产能及组件品质的可靠性,高精度、高速太阳能电池片的全自动焊机成为光伏企业的首选。目前这些设备大多依赖进口,然而进口设备高昂的价格很大程度上增加了太阳能发电的成本,急需研制出高水平的太阳能电池片焊接设备来满足市场的需求。电池片焊接设备的精度、速度与电池片的完整性相关。传统的检测方法精度低、速度慢,而且部分还需依赖人工操作,不能满足市场要求,而基于机器视觉的检测方法能有效地解决这些问题。
机器视觉技术与人类通过眼睛获取信息的方式是一致的,光学图像的采集就好比是机器在用“眼睛”获取信息,检测算法就是机器在用“大脑”思考的过程。而光学图像定位方法又分为灰度定位和几何定位,基于灰度定位的算法是通过分析模板图像的灰度值与待测物体图像的灰度值的相关性大小来判断物体的位置。由于该算法与图像的每一个像素点的灰度值关系密切,所以它对光照的亮度变化非常敏感。而在实际生产当中工件对光的吸收、反射不可能完全一致,从而会影响定位的准确率和通过率,因此采用几何定位方式。
1 太阳能电池片表面缺陷检测系统设计
系统硬件方面由3部分构成:处理芯片STM32F103RBT6、图像传感器模块OV7670、串口通信SP232。其设计框图如图1所示。软件方面,主要由3个功能模块构成:OV7670模块程序、图像处理算法程序、SP232通信程序。
系统工作过程:首先由OV7670模块获取图像,在STM32F103RBT6中读取,通过图像处理算法进行计算,得到的结果由SP232上传给上位机。
1.1 系统硬件设计
1.1.1 STM32F103RBT6处理器
STM32F103RBT6是基于CortexM3的32位处理器,最高工作频率为72 MHz,具有128 KB的Flash程序存储器和20 KB的RAM。其有4个计时器、16个定时器、16个模/数转换器。串行通信有2个SPI、2个I2C总线、3个USART、1个USB和CAN总线,接口类型也有多种,在与其他器件链接时可以更加方便。内核具有突出的中断处理能力,其实时性强,系统存储要求低,并且功耗和成本很低,具有广泛的应用领域。
1.1.2 OV7670模块
OV7670图像传感器体积小、工作电压低,适合嵌入式应用。OV7670具有高灵敏度,适合低照度应用,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB总线控制,兼容I2C总线接口,可以输出整帧、子采样、取窗口等方式的各种分辨率为8位的影像数据。VGA图像最高达到30 fps,可以完全控制图像质量、数据格式和传输方式。图像处理功能过程包括伽马曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OV7670图像传感器的功能模块包括:感光阵列、模拟信号处理、A/D转换、测试图案发生器、数字信号处理器、图像缩放、时序发生器、数字视频端口、SCCB接口、LED和闪光灯输出控制。其功能框图如图2所示。
OV7670数据位D0~D7与MCU的PA口A0~A7连接,读数据时钟位 RCLK与PC1连接,读指针复位位RRST与PC2连接,片选信号位OE与PC3连接,写指针复位位WRST与PC4连接,写入FIFO使能位WEN与PC5连接,同步信号检测位VSY与PD2连接,SCL是SCCB时钟口与PC11连接,SDA是SCCB的数据口与PC12连接,初始化OV7670可通过SCL和SDA。OV7670与STM32F103RBT6的连接电路如图3所示。
1.2 软件设计
1.2.1 常见缺陷类型
根据制作材料的不同,可以把太阳能电池分为单晶硅太阳能电池、多晶硅太阳能电池和非晶硅太阳能电池3种。对于特定材料的太阳能电池片,可以设计出适合该类型太阳能电池片表面缺陷检测的系统。本文是针对单晶硅太阳能电池片进行表面缺陷检测的。在太阳能电池片的生产加工过程中(表面腐蚀、制绒、扩散、表面成膜、网印、钝化、烧结等),可能由于某些工艺缺陷或者生产环境的影响造成太阳能电池片表面的断栅、缺角、色差、脏污、裂纹等缺陷。基于机器视觉的太阳能电池片表面缺陷检测系统主要用于检测太阳能电池板片表面的断栅、缺角和裂纹3种主要工艺缺陷。缺陷的具体形态如图4所示。
缺角和裂纹主要是在制绒的过程中导致的,传统制绒的方法是机械刻槽法,通过利用V型刀在硅表面摩擦形成规则的V型槽,从而形成规则的、反射率低的表面结构。正是这种方法经常会破坏硅片,形成裂纹或者缺角。尽管工艺不断改进,开始使用化学制绒法,但是由于成本高,该方法还未得到普及。断栅主要出现在丝网印刷过程中。丝网印刷是指利用丝网图形部分网孔透浆料,非图文部分不透浆料。印刷时在丝网一端倒入浆料,用刮刀在丝网的浆料部位施加压力,同时朝丝网另一端移动。刮板压力不适会导致浆料的漏印,或者由于图形部分的杂质造成漏印而导致断栅。
1.2.2 表面缺陷检测系统的结构示意图
太阳能电池片表面缺陷检测系统的结构示意图如图5所示。在光照下,OV7670摄像机对待测电池片进行图像采集传送到计算机中,通过图像处理得出缺陷图像,最后对缺陷进行标识和数据统计。
光照单元是系统的一个重要组成部分。由于太阳能电池板表面的强反射性,不合理的光源类型和照明方式都会导致图像灰度的不均匀,从而影响后期的图像处理。光照单元的任务就是产生均匀的光照以便得到准确的物像位置关系,从而保证所获取图像的高对比度和清晰度。
图像采集单元是OV7670模块。该单元主要完成待测太阳能电池片的图像采集,并将采集到的数据传输给MCU,便于后期的数字图像处理。
计算机处理单元包括图像处理和缺陷识别。该单元主要是对采集图像进行基本图像处理,得到缺陷图像,然后标记缺陷和识别缺陷,最后通过计算机屏幕直观地显示出太阳能电池板的检测结果。
1.2.3 表面缺陷检测系统的软件流程
利用STM32F103RBT6来处理太阳能电池片的图像,程序代码在ST公司自带的库文件上编写。初始化阶段,先配置好STM32F103RBT6内部时钟、中断处理和USART、按键、OV7670、SP232等外设接口,再初始化按键、LED、OV7670模块、SP232。初始化成功之后,读取OV7670采集到的信息数据,读完段标记使能摄像头片选,每次读取一个MCU块,对它进行二值处理、像素点扫描、判断、旋转、上传数据至上位机,直到结束。
OV7670摄像机将摄取到的数据传送给MCU,MCU得到数据后首先读取相机的数据,并做二值处理,更新LCD显示。以图像中心为原点,寻找电池片左上角、右上角、左下角和右下角的坐标,用于计算旋转后的图像的宽和高。
判断完整性算法如下所示:
① 从第10行起(每行320点),取白点(0xff)的数据,连续取50行,计算白点的平均值WhiteTrueData。
② 从第10行起(每行320点),每行的行头取黑点(0x00)的数据,直到白点为止,连续取50行,计算黑点的平均值BlackTure Data。
③ 156×156的片子,有效行总共是224~232行,每一行的白点数约228~232点WhiteData(根据焦距不同,有效的行数、列数有所不同)。
④ 每一行,从白点处开始,将第232点后的数据统一清除为黑色。
⑤ 每一行,从第一点开始将第一点至白点为止的数据(BlackData),统一清除为黑色。
⑥ 在每一行的白点中寻找黑色点,如果连续3点或者连续两行在同样的偏移处找到2个以上的点,表明该处为缺少、裂缝、缺角或其他的不完整。
先判断所有的有效数是否在预置数之间,如果是,初步判断为完整的电池片;否则,为缺角。如果取得的有效数据在预置数之间,将取得的平均值与预置数比较,如果小于预置数10点以上,判断为有裂缝;片子基本完整,再判断是否有裂缝、空洞。从第0行起(每行320点),扫描240行,寻找连续的白点,如果连续的白点数据中有有效的黑点(0x00)数据,判断为裂缝或空洞;有裂缝的点数大于5处,判断为不完整。如果为不合格的电池片,可判断是否倾斜,将倾斜的片子旋转,或发送数据到上位机。从第0行起(每行320点),扫描240行,判断是否倾斜;查找黑色点,如果每一行均出现白色点,白色点的坐标不大于1/2(320),为有效白色点。
源程序代码如下:
OV7670_RRST=0;//开始复位读指针
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1;//复位读指针结束
OV7670_RCK=1;
for(i=0; i<240; i++){
change_num = 0;
change_bak_num = 0;
Temp_i = 0;
for(j=0; j<320; j++){
OV7670_RCK = 0;
color = (GPIOA->IDR)&0xFF;
OV7670_RCK = 1;
if(color < CompData){
change_num = 0;
Black_Data++;
}
else{
change_num = 0xfe;
White_Data++;
}
if(change_num != change_bak_num){
Temp_i++;
change_bak_num = change_num;
}
OV7670_RCK = 0;
color |= (GPIOA->IDR)&0xFF;
OV7670_RCK = 1;
}
if(Temp_i>2)break_dot++;
if(break_dot>5)cell_judge = 0;
//有裂缝的点数大于5处,判断为不完整
break_dot = 0;
}
太阳能电池片表面缺陷检测系统的软件流程图如图6所示。
2 处理结果分析
重点是对太阳能电池片表面的缺角、裂纹、空洞缺陷进行检测。实验对象是156 mm×156 mm的单晶硅太阳能电池片。实验中给出了太阳能电池片表面缺陷的系统检测图片的效果图以及从该系统得到的实验数据,并对该缺陷检测系统的识别率进行统计和分析。
实验统计表明,缺角的识别率高于95%,空洞的识别率基本达到90%,裂缝的识别率最低,只有86%。本程序经过不断优化以后,运行时间在1 s左右(不包含图片的显示时间)。
如果图片中包含缺陷的个数较少或者不包含缺陷时,运行时间在0.7 s左右(不包含图片的显示时间),基本达到实时性要求。另外,STM32F103RBT6一个很大的优点就是其官方提供了库函数,使其软件开发周期比较短。
效果图如图7所示。
结语
本文完成了太阳能电池片缺陷检测的设计方案,实现了太阳能电池片在线实时检测,这种方法提高了太阳能焊接机的生产效率。软件设计时,OV7670是模块化的,有接口函数,因此具有很强的可移植性。
虽然51单片机成本比STM32F103RBT6低一些,但是计算速度慢;DSP、ARM9、FPGA等虽然计算速度快,但用于太阳能单焊机上的嵌入式产品使用就显得成本较高。
综合考虑,以STM32F103RBT6结合OV7670模块作为太阳能单焊机上的检测设备具有较高的应用价值。