历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2021年03月11日 | 基于机器视觉的太阳能电池片外观缺陷检测

2021-03-11 来源:21ic

引言


随着国内外对清洁能源需求的增加以及各国政府对清洁能源补助的提高,光伏组件的需求也在快速增长。为保证产能及组件品质的可靠性,高精度、高速太阳能电池片的全自动焊机成为光伏企业的首选。目前这些设备大多依赖进口,然而进口设备高昂的价格很大程度上增加了太阳能发电的成本,急需研制出高水平的太阳能电池片焊接设备来满足市场的需求。电池片焊接设备的精度、速度与电池片的完整性相关。传统的检测方法精度低、速度慢,而且部分还需依赖人工操作,不能满足市场要求,而基于机器视觉的检测方法能有效地解决这些问题。


机器视觉技术与人类通过眼睛获取信息的方式是一致的,光学图像的采集就好比是机器在用“眼睛”获取信息,检测算法就是机器在用“大脑”思考的过程。而光学图像定位方法又分为灰度定位和几何定位,基于灰度定位的算法是通过分析模板图像的灰度值与待测物体图像的灰度值的相关性大小来判断物体的位置。由于该算法与图像的每一个像素点的灰度值关系密切,所以它对光照的亮度变化非常敏感。而在实际生产当中工件对光的吸收、反射不可能完全一致,从而会影响定位的准确率和通过率,因此采用几何定位方式。


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模块作为太阳能单焊机上的检测设备具有较高的应用价值。


推荐阅读

史海拾趣

ASM公司的发展小趣事

在集成电路商业化发展的黄金时期,ASM公司凭借其在硅材料领域的深厚积累,不断推出创新产品,满足市场日益增长的需求。公司通过杂志、展会等营销工具,积极推广其产品和服务,逐渐在行业内树立了良好的口碑。同时,ASM公司还不断拓展其业务领域,从最初的半导体材料供应逐渐扩展到更广泛的电子材料和设备领域。

AEMC Instruments公司的发展小趣事

AEMC Instruments公司始终注重产品品质和质量管理。公司建立了完善的质量管理体系,并通过了多项国际认证,如ISO 9001质量管理体系认证等。这些认证不仅证明了公司在品质管理方面的实力,也提高了客户对产品的信任度。同时,公司还加强了对供应商和生产过程的管理,确保从原材料采购到产品生产的每一个环节都符合国际标准和客户要求。

GWM Associates公司的发展小趣事
在医疗电子设备中,如心电图机、脑电图机等,用于放大微弱的生物电信号。
磁联达(CND-tek)公司的发展小趣事

为了进一步扩大市场份额,磁联达(CND-tek)公司决定拓展海外市场。公司组建了一支专业的国际销售团队,积极参加国际电子展会和交流活动,与全球各地的客户建立了紧密的合作关系。同时,公司还加大了对海外市场的投入,设立了多个海外办事处和仓库,为客户提供更加便捷的服务。这些举措使得磁联达(CND-tek)的产品迅速走向全球,赢得了广泛的赞誉。

Electronic Transistors Corp公司的发展小趣事

在技术创新的基础上,ETC公司开始积极拓展市场。公司通过优化产品线,满足不同客户的需求,逐渐打开了国际市场的大门。同时,ETC还加大了品牌宣传力度,通过参加国际电子展会、发布技术白皮书等方式,提升品牌知名度和影响力。这些举措使ETC在全球范围内的市场份额不断扩大,品牌影响力也日益增强。

Good Will Instrument Co., Ltd.公司的发展小趣事

作为一家领先的电子企业,ETC公司深知自身肩负的社会责任。公司积极履行社会责任,关注环境保护和资源节约。ETC通过引进先进的生产工艺和设备,减少生产过程中的能源消耗和废弃物排放。同时,公司还积极参与公益事业和社会活动,为社会做出了积极贡献。这些举措不仅提升了ETC的企业形象,也为公司的可持续发展奠定了坚实的基础。

问答坊 | AI 解惑

关于XIP的疑问

大家好,请问WINCE5.0的XIP想加快启动速度,MULTIBIN是XIPKERNEL.BIN和DRIVERS.BIN等等.吧! 如果下载XIP.NB0启动的时候会不会也只先加载一小部分到内存,以加快启动速度呀?还是一定要下载XIPKERNEL.BIN和DRIVERS.BIN,CHAIN.BIN等文件呀?…

查看全部问答>

vxworks 加载共享库, 求帮助!

struct FindWellKnownSymbolCallbackInfo {     char *name;     UINT16 group; }; static BOOL findWellKnownSymbolCB(char *name,                     &nb ...…

查看全部问答>

2个单片机全双工通信一定需要握手协议吗?

1,2个单片机全双工通信一定要握手协议吗?我可不可以这样:用主机的定时器定一个较长的时间,时间到了后先往SBUF里赋值发送数据,然后等待接收从机给主机发送的数据;而从机也按照这样的方法,从而使这2个单片机完成不需要握手协议也可以进行全双 ...…

查看全部问答>

Ubuntu下AVR单片机的编程avr dragon与下载

第一次在LINUX平台下编译成功的AVR程序,并通过AVR Dragon下载到芯片中,有点兴奋所以与大家分享一下,希望能对和我一样在linux平台的初学者能提供点帮助。 经常从eeworld获取知识和资料,也有点不好意思,呵呵。…

查看全部问答>

一起探讨LED驱动面临的四大问题与解决方案。

业内人士都知道,LED日光灯将成为新一代节能环保照明灯,但是现在全国每年顶多生产几十万支LED日光灯,而且大部分是出口,国内使用寥寥无几,其实最主要的问题是价格问题,一个普通的节能荧光灯光十几元钱就搞定了,而一根LED日光灯管得上百块。所 ...…

查看全部问答>

CCS里菜单对话框英文显示不全怎么操作才能让它们全部显示??

CCS里菜单对话框英文显示不全怎么操作才能让它们全部显示?? …

查看全部问答>

南华大学黄智伟系列--高频应该准备哪些中周型号

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 高频应该准备哪些中周型号 1. 中周是中频变压器,俗称中周,是超外差式无线电接收机中特有的一种具有固定谐振回路的变压器,但谐振回路可在一定范围内微调,以使接入电路后能达到稳定的谐振频率( ...…

查看全部问答>

想要个LM3S811的那个开发板

哪位有闲置的TI的LM3S811开发板,能卖给我不? 邮箱是 15931138511@139.com…

查看全部问答>

哪有最新的altium designer下载

各位老大,现在我正在用DXP 2004,可单位的计算机都上win7了,DXP 只能在XP下运行,现在可真麻烦,到哪里去找最新的Altium Designer 下载,能够在win7下运行? …

查看全部问答>

我这NRF24l01发送和接收端程序有问题吗

发送端: void main(void) { unsigned char TxBuf[20]={0};     init_NRF24L01() ; TxBuf[1] = 0xff ; while(1) { nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data   Delay(6000);   } &nbs ...…

查看全部问答>