基于TCS230的导线颜色检测及顺序调整控制系统设计 A control system design of wire color detection and order adjustment based on Tcs230 杨俊茹,郭坤,宋传娟,刘钦冉 YANG Jun.ru,GUO Kun,SONG Chuan ̄uan,LIU Qin-ran (山东科技大学机械电子工程学院,青岛266590) 摘要:文章设计了一种导线颜色检测及顺序调整控制系统,用于串行接口的自动焊接。利用TCS230 颜色传感器的检测作用,采用笛卡尔距离比较法确定待检测导线的颜色信息及其位置信息; 设计了导线顺序的调整方法与系统控制流程;采用C语言开发了系统控制程序,实现了导线的 颜色检测 愤序调整,解决了串口焊接中导线自动排序的问题。 关键词:TOS230;颜色检测;顺序调整;控制程序 中圈分类号:TH39 文献标识码:B 文章编号:1 009—01 34(2015)04(下)一0009—04 Doi:10.3969/i.issn.1 009-01 34.201 5.04(下).03 0引言 此在串口的自动焊接之前,需要将待焊接的无序导线按 颜色传感器的结构主要包括光电二极管与彩色滤 照一定的顺序排列起来,以便于后续焊接。以往的导线 光器。其工作原理是,通过彩色滤光器将所测得的颜 排序往往由人工进行,费时费力,不符合自动化生产的 色分解成红(red)、绿(green)、蓝(blue)三种原 需要。针对这一问题,本文设计了一种导线颜色检测及 色,然后通过光电二极管分别检测各色的强度。随着检 顺序调整控制系统,并给出了颜色识别及顺序调整的控 测技术水平的不断提高,基于颜色传感器技术的颜色检 制方法与控制程序,实现了串口焊接中导线的自动化排 测技术以其灵敏度高、响应速度快的优点,在实际生产 序,控制方法简洁,实用性较高。 中得到了广泛应用。李喜鹏等人基于颜色传感器设计的 1整体系统设计 绿色识别系统,用于自动喷药装置,为快速、准确识别 作物进行喷药提供了技术支持…;一种用于石油产品颜 本系统分为两部分,分别为导线的颜色识别与导 色检测的测量系统,不仅可以对成品油样本的颜色进行 线的顺序调整,其中,颜色识别部分采用颜色传感器 识别,还可以根据测量结果初步分析油品的胶质含量 ; TCS230,将检测到的颜色RGB值传输给单片机,并记录 王晴等提出了一种基于颜色传感器的新生儿黄疸检测方 当前颜色所对应的位置信息,经过与预存颜色信息进行一 法,根据RGB分量的值确定皮肤颜色,实现了对新生儿 系列的比较计算后,得出每根导线调整所需的运动方向和 黄疸进行连续的检测 】。 运动距离(电机进给步数);顺序调整部分由步进电机带 TCS230是美国TAOS公司推出的可编程彩色光到频 动机械手机构根据之前计算结果,按照一定流程进行三维 率的转换器。它把可配置的硅光电二极管与电流频率转 运动,实现对导线的抓取及其顺序调整。系统中导线数量 换器集成在一个单一的CMOS电路上,同时在芯片上还 为13,预存颜色信息即为这些导线的颜色RGB值,如表1 集成了红、绿、蓝(RGB)3种原色的滤光器,是业界 所示。预存颜色信息存放在数组 1【13】【3]中。 第一个有数字兼容接口的RGB彩色传感器。输出为数 系统工作流程如图1所示。 字量,可直接与微处理器连接,不需要外接A/D转换电 路,使用方便,且分辨率高,响应速度块,有较强的抗 干扰能力,使用范围广泛”】。 在工业生产中,由于各种因素的作用,经常需要 将待加工的工件按照一定要求排列成特定顺序,而由于 自动生产的特点,这些工件的初始顺序往往是杂乱无章 的。这时就涉及到工件的自动排序问题。例如:在焊接 串行接口时,对接头与导线之间的焊接就有一定的顺序 要求,即不同颜色的导线需焊接到不同的接头位置,因 图1系统工作流程图 收稿日期:2014-11-05 作者简介:杨俊茹(1969一),女,河北乐亭人,教授,博士,研究方向为机械制造及其自动化。 第37卷第4期2015—04(下) [gl 2颜色检测与比较 TCS230将红、绿、蓝(RGB)3种原色的滤光器集 成在单一芯片上,当控制单片机选定某一原色的滤光 器时,它只允许该原色通过,而阻止其他两种原色的通 过。使用时依次选通红色、绿色和蓝色滤光器,得到所 测颜色的三种原色的光强。不同的光强对应不同频率的 输出方波。通过测量输出方波的个数,并进行相应的比 例换算,即可获得该颜色的RGB值 。 表1 系统预存颜色的RGB值(十六进制) 序号 颜色 R G B 1 红色 FF 00 00 2 黄色 FF FF 130 3 灰色 80 80 80 4 黑色 00 00 00 5 白色 FF FF FF 6 褐色 A5 2A 2A 7 橙色 FF A5 00 8 绿黄色 AD FF 2F 9 浅蓝色 E0 FF FF 10 灰蓝色 7A B8 CC 1l 藏青色 00 00 80 12 品红色 F4 00 A1 13 紫色 80 00 80 在本系统中,TCS230输出(0UT)直接接入单片 机中,由单片机计数器对输出方波进行计数,进而确定 所检测到的颜色的RGB值,并记录每种颜色所对应的 位置,以便进行下一步处理。最终检测出的颜色RGB 值赋值给数组变量rgb[3】,其q ̄rgb[0]=R,rgb[1]=G, rgbt2]=B,对应的位置信息放在数组weizhi[13]中。 采集到颜色的RGB之后,经过与预存颜色的RGB值 进行比较,即可确定所检测的颜色。考虑检测误差,检 测到的RGB值与预存的RGB值不可避免的会存在一定出 入,故在比较过程中,采用笛卡尔距离法来比较两种不 同的颜色,这种通过计算两种颜色RGB值的笛卡尔距离 来确定导线颜色的方式,计算方便,控制程序简洁,有 很高的实用性。其表达式为 】: d=√(R—R。) +(G—G。) +(B—B。) (1) 实际应用中,考虑到式(1)中运算较为复杂,故其 可简化为 】: d:IR—R0l+IG—G0f+lB—B0l (2) 其中R、G、B是检测的颜色值,Rn、G。、B。是预 存的颜色值。当计算出的d值小于设定值时,即可认为 所比较的两种颜色为同一颜色。 颜色检测与比较的控制流程如图2所示。 [101 第37卷第4期2015-04(下) 图2颜色检测与比较流程图 3顺序调整方法 在确定导线的颜色及位置信息后,系统即开始对导 线的顺序进行自动调整,调整方法如下:机械手初始位 置为I=0,根据表1所列导线排列顺序,需要将红色的导 线调整 ̄lJI=0的位置上来,根据检测结果,红色的导线 所处的位置为I=I ,则将红色导线从I。调整No位置,需 要正向移动I 0个单位的距离。红色导线调整到位后, 机械手前进一个单位距离,来 ̄lJI=l位置,需要将黄色 的导线调整到I=1的位置上来,根据检测结果,黄色的 导线所处的位置为I=I ,则将红色导线从I 调整到1位 置,需要正向移动I,.1个单位的距离。若I,一1<0,则反向 移动。黄色导线调整到位后,机械手前进一个单位距 离,来 ̄lJI=2位置……直至最后一个导线调整到位。 根据检测结果及对应的存储在数组weizhi[131中的 位置信息,将weizhi[13】与所需要的排列顺序中各颜色 对应的位置信息(顺序排列0,1,2,3,…)相比较,得出调 整每种颜色的导线所需运动的步数step,并判断其运动 方向,进而控制步进电机正传或者反转相应的步数,同 时控制机械手机构依次抓取待调整的各导线,将其运送 到指定位置,实现对导线顺序的调整。具体控制流程如 图3所示。 l I=0,J=0 I 进,步数step=I J 暗退,步数step=J I I I T 行抓取、运输、放置动作l 县— … 、 图3顺序调整程序流程图 为了实现将随机排列的导线调整成特定顺序的排 列方式这一功能,即实现图3所示流程图中的“执行抓 取、运输、放置动作”这一步骤,机械手共需三个方 向的运动,以实现待调整的对象沿横向(X轴)、纵向 (Y轴)及竖直方向(Z轴)的进给运动。三个方向的 运动均由步进电机带动,抓取导线所用的机械手为电磁 铁夹紧机构,其运动流程如图4所示。 竺H H鲎 到 匿 嚯圈 图4机械手机构运动流程图 4系统控制程序开发 本系统中,颜色检测、计算比较及顺序调整均由 80C52单片机控制,根据图1~图4所示的系统工作流 程,采用c语言开发了系统控制程序,包括主程序与子 程序两部分。在主程序中,所调用的各子程序类型需在 主程序前予以定义。主程序如下: #include”stdio.h” #include”reg52.h” i#nclude”mathh” int delay(int time); 延时子程序类型 / i‘nt yundongX(int step);,半X向电机正转子程序类型 , m’tyundongXl(int step);/*X向电机反转子程序类型 ‘mt jiajin0; 机械手夹紧子程序类型 / int fangsong0;,木机械手放松子程序类型:l:/ ‘int yundongY(int step);,宰Y向电机正转子程序类型 , l‘nt yundongYl(int step);/*y向电机反转子程序类型 , l‘nt yundongZ(int step);/*Z向电机正转子程序类型%/ m‘t yundongZ1(int step);/*Z向电机反转子程序类型 sbit p20=P2^0;/ 单片机位定义 , sbitp21=P2^l: sbitp22=P2^2; sbitp24=P2^4; sbitp25=P2^5; sbitp26=P2^6; sbitp27=P2^7; void main() { xdata long int rgbl[13][3]={{0xff,0x00,0x00},{0xff,0x ff,0x00},{Ox80,0x80,0x80},{OxO0,0x00,OxO0},{0xff,0xff, 0xff},{Oxa5,0x2a,0x2a},{0xff,0xa5,OxO0},{0xad,0xff, 0 X 2 f J,{0 x e 0,0 x f f,0 x f f},{0 X 7 a, 0xb8,0xcc},{0x00,0x00, Ox80},{0xf4,0x00,0xal},{Ox80,0x00,0x80}】; 预存 颜色信息 / long int rgb[3]; ,木定义检测到的颜色RGB值存放 数组 , int weizhi[13]; 定义各颜色导线对应的初始位 置信息 / int I,j,m;,芈定义整型变量I,j,m¥, long int d=0,dO,c;,木定义笛卡尔距离d,变量 d0及颜色检测的精确度c*/ int I,J,step; 定义整型变量I,J,step / ,冰…”导线颜色及位置信息确定… / for(i=0;i<13;i++),半颜色检测循环 , f for(j=O;j<13;j++) 颜色比较循环 / { for(m=0;rn<3;m++),木计算笛卡尔距离 / { d0=rgb[m]-rgbl[j][m]: d=d+fabs(d0); } if(d<c) break;,术判断计算值在精度范围之内,则确定 所比较的两种颜色为同一种颜色 / ) weizhi[i]=j ; 确定该颜色的位置信息 / yundongX(1); 电机前进一步,对下一导线进 行检测}/ delay(4); 延时,用于颜色检测及比较 / ) yundongXl(13); 检测完毕,电机反转,控制检 测装置返回初始位置 / } …开始进行顺序调整… , f0r(I:0;I<l3;I++) { for(J=0;J<13;J++) 位置信息循环检测 / { if(weizhi[J]==I),半调整前后的位置信息比较 / break; } if(I<J) 电机转向确定 / {step=J—I;,冰计算电机转动步数 / yundongX(step);, x向正向运动 / yundongZ(30); z向正向运动%/ 第37卷第4期2015-04(下) 1111 jiajin();,术夹紧 / yundongZ1(30); z向反向运动 , yundongX1(step);/ x向反向运动 / yundongY(30); Y向正向运动 / fangsong0; 放松 / yundongYl(30);,芈Y向反向运动 / ) else f step=I-J; yundongX1(step); yundongZ(30); jiajin0; yundongZl(30); yundongX(step); yundongY(30); fangsong0; yundongYl(30); } } yundongX1(12); 调整完毕,系统复位 / } end; 子程序共有9个,分别为x、Y、ZZ个方向的电机 正、反转,机械手夹紧、放松以及延时子程序。子程序 如下: int yundongX(int step) x向电机正转子程序 / { int a; p20=0: for(a=step;a>0;a一) { p20=1: delay(2); p20=0: delay(2); ) return; } int jiajin(),木机械手机构夹紧导线子程序 , { p22=1; return; } int fangsong0/*机械手机构放松导线子程序 / 1121 第37卷第4期2015—04(下) { p22=0; return; } int delay(int time) 延时子程序 / { inti,J; for(i=l;i<=time;i++) { fbr(j=l Ij<=240Ij++) { ) J return; } 其中,电机转动程序只给出了x正向转动子程序, 其他5个方向的转动程序与之类似,只是输出接口不 同,此处不再一一列举。 5结论 由于TCS230输出为数字量,可以接入单片机,故 基于TCS230的颜色检测系统的连接电路都相对比较简 单,且控制方便。本文利用TCS230的检测作用,设计 了导线颜色检测及顺序调整控制系统,采用笛卡尔距离 比较法确定待检测导线的颜色RGB值,并记录相应的位 置信息;根据检测结果,对导线的顺序进行自动调整, 设计了导线顺序的调整方法与系统的工作流程图;采用 C语言开发了系统控制程序。这种基于颜色识别的导线 顺序调整控制系统,实现了串口自动焊接时导线顺序的 自动调整,经相应改动后也适用于其他工业生产中相关 工件位置的自动调整,具有较高的实用价值。 参考文献: [1】李喜朋,姚传安,李明刚,等.基于颜色传感器的绿色识别系统设 计【J1.安徽农业科学,2009,37(27):13136—13138,13141. [2】段志伟,高丙坤,宋金波.基于RGB颜色传感器晌油品颜色检测 系统设计….化工自动化及仪表,2013,40(8):982.985. [3】王晴,尹志勇.基于颜色传感器TCS230的新型经皮测疸仪的设 计[J】.传感器与微系统,2008,27(9):100—102. 【4】胡建民.颜色传感器TCS230及颜色识别电路【J1.单片机与嵌入 式系统应用,2006,53(4):40.41,53. 【5】卢川英,于浩成 敬辉,等.基于TCS230传感器的颜色检测系统 [JJ.吉林大学学报:信息科学版,2008,26(6):621—625. 【6】郑锋,王巧艺,等.51单片机应用系统典型模块开发大全(修订版) 【M】.北京:中国铁道出版社,2013. [7】刘志海.C程序设计【M】.北京:电子工业出版社,2008.