杨俊茹,郭 坤,宋传娟,刘钦冉
(山东科技大学 机械电子工程学院,青岛 266590)
颜色传感器的结构主要包括光电二极管与彩色滤光器。其工作原理是,通过彩色滤光器将所测得的颜色分解成红(red)、绿(green)、蓝(blue)三种原色,然后通过光电二极管分别检测各色的强度。随着检测技术水平的不断提高,基于颜色传感器技术的颜色检测技术以其灵敏度高、响应速度快的优点,在实际生产中得到了广泛应用。李喜鹏等人基于颜色传感器设计的绿色识别系统,用于自动喷药装置,为快速、准确识别作物进行喷药提供了技术支持[1];一种用于石油产品颜色检测的测量系统,不仅可以对成品油样本的颜色进行识别,还可以根据测量结果初步分析油品的胶质含量[2];王晴等提出了一种基于颜色传感器的新生儿黄疸检测方法,根据RGB分量的值确定皮肤颜色,实现了对新生儿黄疸进行连续的检测[3]。
TCS230是美国TAOS公司推出的可编程彩色光到频率的转换器。它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在芯片上还集成了红、绿、蓝(RGB)3种原色的滤光器,是业界第一个有数字兼容接口的RGB彩色传感器。输出为数字量,可直接与微处理器连接,不需要外接A/D转换电路,使用方便,且分辨率高,响应速度块,有较强的抗干扰能力,使用范围广泛[4]。
在工业生产中,由于各种因素的作用,经常需要将待加工的工件按照一定要求排列成特定顺序,而由于自动生产的特点,这些工件的初始顺序往往是杂乱无章的。这时就涉及到工件的自动排序问题。例如:在焊接串行接口时,对接头与导线之间的焊接就有一定的顺序要求,即不同颜色的导线需焊接到不同的接头位置,因此在串口的自动焊接之前,需要将待焊接的无序导线按照一定的顺序排列起来,以便于后续焊接。以往的导线排序往往由人工进行,费时费力,不符合自动化生产的需要。针对这一问题,本文设计了一种导线颜色检测及顺序调整控制系统,并给出了颜色识别及顺序调整的控制方法与控制程序,实现了串口焊接中导线的自动化排序,控制方法简洁,实用性较高。
本系统分为两部分,分别为导线的颜色识别与导线的顺序调整,其中,颜色识别部分采用颜色传感器TCS230,将检测到的颜色RGB值传输给单片机,并记录当前颜色所对应的位置信息,经过与预存颜色信息进行一系列的比较计算后,得出每根导线调整所需的运动方向和运动距离(电机进给步数);顺序调整部分由步进电机带动机械手机构根据之前计算结果,按照一定流程进行三维运动,实现对导线的抓取及其顺序调整。系统中导线数量为13,预存颜色信息即为这些导线的颜色RGB值,如表1所示。预存颜色信息存放在数组rgb1[13][3]中。
系统工作流程如图1所示。
图1 系统工作流程图
TCS230将红、绿、蓝(RGB)3种原色的滤光器集成在单一芯片上,当控制单片机选定某一原色的滤光器时,它只允许该原色通过,而阻止其他两种原色的通过。使用时依次选通红色、绿色和蓝色滤光器,得到所测颜色的三种原色的光强。不同的光强对应不同频率的输出方波。通过测量输出方波的个数,并进行相应的比例换算,即可获得该颜色的RGB值[4]。
表1 系统预存颜色的RGB值(十六进制)
在本系统中,TCS230输出(OUT)直接接入单片机中,由单片机计数器对输出方波进行计数,进而确定所检测到的颜色的RGB值,并记录每种颜色所对应的位置,以便进行下一步处理。最终检测出的颜色RGB值赋值给数组变量rgb[3],其中rgb[0]=R,rgb[1]=G,rgb[2]=B,对应的位置信息放在数组weizhi[13]中。
采集到颜色的RGB之后,经过与预存颜色的RGB值进行比较,即可确定所检测的颜色。考虑检测误差,检测到的RGB值与预存的RGB值不可避免的会存在一定出入,故在比较过程中,采用笛卡尔距离法来比较两种不同的颜色,这种通过计算两种颜色RGB值的笛卡尔距离来确定导线颜色的方式,计算方便,控制程序简洁,有很高的实用性。其表达式为[5]:
实际应用中,考虑到式(1)中运算较为复杂,故其可简化为[5]:
其中 R、G、B是检测的颜色值,R0、G0、B0是预存的颜色值。当计算出的d值小于设定值时,即可认为所比较的两种颜色为同一颜色。
颜色检测与比较的控制流程如图2所示。
图2 颜色检测与比较流程图
在确定导线的颜色及位置信息后,系统即开始对导线的顺序进行自动调整,调整方法如下:机械手初始位置为I=0,根据表1所列导线排列顺序,需要将红色的导线调整到I=0的位置上来,根据检测结果,红色的导线所处的位置为I=I1,则将红色导线从I1调整到0位置,需要正向移动I1-0个单位的距离。红色导线调整到位后,机械手前进一个单位距离,来到I=1位置,需要将黄色的导线调整到I=1的位置上来,根据检测结果,黄色的导线所处的位置为I=I2,则将红色导线从I2调整到1位置,需要正向移动I2-1个单位的距离。若I2-1<0,则反向移动。黄色导线调整到位后,机械手前进一个单位距离,来到I=2位置……直至最后一个导线调整到位。
根据检测结果及对应的存储在数组weizhi[13]中的位置信息,将weizhi[13]与所需要的排列顺序中各颜色对应的位置信息(顺序排列0,1,2,3,…)相比较,得出调整每种颜色的导线所需运动的步数step,并判断其运动方向,进而控制步进电机正传或者反转相应的步数,同时控制机械手机构依次抓取待调整的各导线,将其运送到指定位置,实现对导线顺序的调整。具体控制流程如图3所示。
图3 顺序调整程序流程图
为了实现将随机排列的导线调整成特定顺序的排列方式这一功能,即实现图3所示流程图中的“执行抓取、运输、放置动作”这一步骤,机械手共需三个方向的运动,以实现待调整的对象沿横向(X轴)、纵向(Y轴)及竖直方向(Z轴)的进给运动。三个方向的运动均由步进电机带动,抓取导线所用的机械手为电磁铁夹紧机构,其运动流程如图4所示。
图4 机械手机构运动流程图
本系统中,颜色检测、计算比较及顺序调整均由80C52单片机控制,根据图1~图4所示的系统工作流程,采用C语言开发了系统控制程序,包括主程序与子程序两部分。在主程序中,所调用的各子程序类型需在主程序前予以定义。主程序如下:
其中,电机转动程序只给出了X正向转动子程序,其他5个方向的转动程序与之类似,只是输出接口不同,此处不再一一列举。
由于TCS230输出为数字量,可以接入单片机,故基于TCS230的颜色检测系统的连接电路都相对比较简单,且控制方便。本文利用TCS230的检测作用,设计了导线颜色检测及顺序调整控制系统,采用笛卡尔距离比较法确定待检测导线的颜色RGB值,并记录相应的位置信息;根据检测结果,对导线的顺序进行自动调整,设计了导线顺序的调整方法与系统的工作流程图;采用C语言开发了系统控制程序。这种基于颜色识别的导线顺序调整控制系统,实现了串口自动焊接时导线顺序的自动调整,经相应改动后也适用于其他工业生产中相关工件位置的自动调整,具有较高的实用价值。
[1] 李喜朋,姚传安,李明刚,等.基于颜色传感器的绿色识别系统设计[J].安徽农业科学,2009,37(27):13136-13138,13141.
[2] 段志伟,高丙坤,宋金波.基于RGB颜色传感器旳油品颜色检测系统设计[J].化工自动化及仪表,2013,40(8):982-985.
[3] 王晴,尹志勇.基于颜色传感器TCS230的新型经皮测疸仪的设计[J].传感器与微系统,2008,27(9):100-102.
[4] 胡建民.颜色传感器TCS230及颜色识别电路[J].单片机与嵌入式系统应用,2006,53(4):40-41,53.
[5] 卢川英,于浩成,孙敬辉,等.基于TCS230传感器的颜色检测系统[J].吉林大学学报:信息科学版,2008,26(6):621-625.
[6] 郑锋,王巧艺,等.51单片机应用系统典型模块开发大全(修订版)[M].北京:中国铁道出版社,2013.
[7] 刘志海.C程序设计[M].北京:电子工业出版社,2008.