欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    TCS颜色传感器使用说明.doc

    • 资源ID:57986749       资源大小:26.50KB        全文页数:9页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TCS颜色传感器使用说明.doc

      TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片与4个白光LED灯,TCS3200能在一定的范围内检测与测量几乎所有的可见光。它适合于色度计测量应用领域。比方彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化装品与印刷材料的过程控制。    通常所看到的物体颜色,实际上是物体外表吸收了照射到它上面的白光(日光)中的一局部有色成分,而反射出的另一局部有色光在人眼中的反响。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。    由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS3200D 来说,中选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。例如:中选择红色滤波器时,入射光中只有红色可以通过,蓝色与绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光与绿色光的光强。通过这三个光强值,就可以分析出反射到TCS3200D传感器上的光的颜色。   TCS3200D传感器有红绿蓝与去除4种滤光器,可以通过其引脚S2与S3的上下电平来选择滤波器模式,如下列图。     TCS3200D有可编程的彩色光到电信号频率的转换器,当被测物体反射光的红、绿、蓝三色光线分别透过相应滤波器到达TAOS TCS3200RGB感应芯片时,其内置的振荡器会输出方波,方波频率与所感应的光强成比例关系,光线越强,内置的振荡器方波频率越高。TCS3200传感器有一个OUT引脚,它输出信号的频率与内置振荡器的频率也成比例关系,它们的比率因子可以靠其引脚S0与S1的上下电平来选择,如下列图。     这个测试实验,我把TCS3200传感器OUT引脚输出信号频率与其内置振荡器频率比率因子设为2%,有了输出频率比例因子,但是如何通过OUT引脚输出信号频率来换算出被测物体由三原色光强组成的RGB颜色值呢?这还需进展白平衡校正来得到RGB比例因子才行!     白平衡校正方法是:把一个白色物体放置在TCS3200颜色传感器之下,两者相距10mm左右,点亮传感器上的4个白光LED灯,用Arduino控制器的定时器设置一固定时间1s,然后选通三原色的滤波器,让被测物体反射光中红、绿、蓝三色光分别通过滤波器,计算1s时间内三色光对应的TCS3200传感器OUT输出信号脉冲数单位时间的脉冲数包含了输出信号的频率信息,再通过正比算式得到白色物体RGB值255与三色光脉冲数的比例因子。有了白平衡校正得到的RGB比例因子,那么其它颜色物体反射光中红、绿、蓝三色光对应的TCS3200输出信号1s内脉冲数乘以R、G、B比例因子,就可换算出了被测物体的RGB标准值了。     现在谈谈,如何进展TCS3200各控制引脚与Arduino控制器的硬件连线问题,下列图分别是TCS3200传感器与其连线图。上图中TCS3200传感器各控制引脚与Arduino控制器数字端口连线的对应关系,我设置为:#define S0     6 #define S1     5  #define S2     4  #define S3     3#define OUT   2                      #define LED   7    当被测物体为不发光物体时,应该把TCS3200的LED引脚设置为高电平,以点亮TCS3200传感器电路板上的四个白光LED灯。    下文展示了一个带有白平衡的测试程序,把这个程序下载到Arduino控制器中,同时把一个白色物体放置在TCS3200颜色传感器之下,点亮传感器上的4个白光LED灯,再翻开Arduino IDE的串口监视器,会出现下列图监视画面,可以在该画面中找到白色物体RGB值255以及RGB比例因子。可通过QQ截图来锁定画面,以便观察。双击图片,可以放大看!     把白平衡时放置在TCS3200颜色传感器之下白色物体拿走,放上另一个黄色物体,在Arduino IDE串口监视器看到的这个黄色物体RGB值为233、157、56,如下列图所示。    翻开电脑Windows操作系统自带的画图板,点击菜单栏“颜色->“编辑颜色->“规定自定义颜色->右下角输入RGB值,查看对应的颜色与实际测试的颜色是否相符。实际测试结果是测得的物体颜色与实际颜色有些偏色,但并不影响区分出被测物体是哪种颜色的物体。    介绍完TCS3200传感器颜色识别原理与其与Arduino控制器的硬件连线,以及如何利用串口监视器找到白平衡后的比例因子与被测物体的RGB值。下面展示的是Arduino测试程序。注意:下面的#include ?TimerOne.h> 要改为单括号形式。 Arduino程序:#include ?TimerOne.h> /申明库文件/把TCS3200颜色传感器各控制引脚连到Arduino数字端口#define S0    6   /物体外表的反射光越强,TCS3002D内置振荡器产生的方波频率越高,#define S1    5  /S0与S1的组合决定输出信号频率比例因子,比例因子为2%                 /比率因子为TCS3200传感器OUT引脚输出信号频率与其内置振荡器频率之比#define S2     4   /S2与S3的组合决定让红、绿、蓝,哪种光线通过滤波器#define S3     3#define OUT    2  /TCS3200颜色传感器输出信号连接到Arduino中断0引脚,并引发脉冲信号中断                  /在中断函数中记录TCS3200输出信号的脉冲个数#define LED    7  /控制TCS3200颜色传感器是否点亮LED灯float g_SF3;     /从TCS3200输出信号的脉冲数转换为RGB标准值的RGB比例因子int   g_count = 0;  / 计算与反射光强相对应TCS3200颜色传感器输出信号的脉冲数/ 数组用于存储在1s内TCS3200输出信号的脉冲数,它乘以RGB比例因子就是RGB标准值int   g_array3;  int   g_flag = 0;   / 滤波器模式选择顺序标志/ 初始化TSC3200各控制引脚的输入输出模式/设置TCS3002D的内置振荡器方波频率与其输出信号频率的比例因子为2%void TSC_Init()  pinMode(S0, OUTPUT);  pinMode(S1, OUTPUT);  pinMode(S2, OUTPUT);  pinMode(S3, OUTPUT);  pinMode(OUT, INPUT);  pinMode(LED, OUTPUT);  digitalWrite(S0, LOW);   digitalWrite(S1, HIGH);/选择滤波器模式,决定让红、绿、蓝,哪种光线通过滤波器void TSC_FilterColor(int Level01, int Level02)  if(Level01 != 0)    Level01 = HIGH;  if(Level02 != 0)    Level02 = HIGH;  digitalWrite(S2, Level01);  digitalWrite(S3, Level02);/中断函数,计算TCS3200输出信号的脉冲数void TSC_Count()  g_count + ;/定时器中断函数,每1s中断后,把该时间内的红、绿、蓝三种光线通过滤波器时,/TCS3200输出信号脉冲个数分别存储到数组g_array3的相应元素变量中void TSC_Callback()  switch(g_flag)    case 0:         Serial.println("->WB Start");         TSC_WB(LOW, LOW);   /选择让红色光线通过滤波器的模式         break;    case 1:         Serial.print("->Frequency R=");         Serial.println(g_count);   /打印1s内的红光通过滤波器时,TCS3200输出的脉冲个数         g_array0 = g_count;    /存储1s内的红光通过滤波器时,TCS3200输出的脉冲个数         TSC_WB(HIGH, HIGH);  /选择让绿色光线通过滤波器的模式         break;    case 2:         Serial.print("->Frequency G=");         Serial.println(g_count);   /打印1s内的绿光通过滤波器时,TCS3200输出的脉冲个数         g_array1 = g_count;    /存储1s内的绿光通过滤波器时,TCS3200输出的脉冲个数         TSC_WB(LOW, HIGH);  /选择让蓝色光线通过滤波器的模式         break;    case 3:         Serial.print("->Frequency B=");         Serial.println(g_count);   /打印1s内的蓝光通过滤波器时,TCS3200输出的脉冲个数         Serial.println("->WB End");         g_array2 = g_count;     /存储1s内的蓝光通过滤波器时,TCS3200输出的脉冲个数         TSC_WB(HIGH, LOW);   /选择无滤波器的模式           break;   default:         g_count = 0;     /计数值清零         break;/设置反射光中红、绿、蓝三色光分别通过滤波器时如何处理数据的标志/该函数被TSC_Callback( )调用void TSC_WB(int Level0, int Level1)      g_count = 0;   /计数值清零  g_flag +;     /输出信号计数标志  TSC_FilterColor(Level0, Level1); /滤波器模式  Timer1.setPeriod(1000000);     /设置输出信号脉冲计数时长1s/初始化void setup()  TSC_Init();  Serial.begin(9600); /启动串行通信  Timer1.initialize();   / defaulte is 1s  Timer1.attachInterrupt(TSC_Callback); /设置定时器1的中断,中断调用函数为TSC_Callback()  /设置TCS3200输出信号的上跳沿触发中断,中断调用函数为TSC_Count()  attachInterrupt(0, TSC_Count, RISING);  digitalWrite(LED, HIGH);/点亮LED灯  delay(4000); /延时4s,以等待被测物体红、绿、蓝三色在1s内的TCS3200输出信号脉冲计数  /通过白平衡测试,计算得到白色物体RGB值255与1s内三色光脉冲数的RGB比例因子  g_SF0 = 255.0/ g_array0;     /红色光比例因子  g_SF1 = 255.0/ g_array1 ;    /绿色光比例因子  g_SF2 = 255.0/ g_array2 ;    /蓝色光比例因子  /打印白平衡后的红、绿、蓝三色的RGB比例因子  Serial.println(g_SF0,5);  Serial.println(g_SF1,5);  Serial.println(g_SF2,5);  /红、绿、蓝三色光分别对应的1s内TCS3200输出脉冲数乘以相应的比例因子就是RGB标准值  /打印被测物体的RGB值  for(int i=0; i<3; i+)    Serial.println(int(g_arrayi * g_SFi);   /主程序void loop()   g_flag = 0;   /每获得一次被测物体RGB颜色值需时4s   delay(4000);   /打印出被测物体RGB颜色值   for(int i=0; i<3; i+)      Serial.println(int(g_arrayi * g_SFi);     程序中的头文件TimerOne.h文件请下载:    上面是带有白平衡的测试程序,对于具体工程的应用程序,要在此根底上加以变动。如果TCS3200传感器与被测物体的检测距离以及周围环境光线没有发生大的变化,进展一次白平衡校正后,RGB比例因子就可以确定下来了。于是您一定要把得到的RGB比例因子直接替代掉红色字体标识程序段中的数组g_array3各元素变量。另外绿色字体标识的程序段也可以注释掉。    在具体工程中,您所检测的是某种特定颜色的物体,可能就像文章的第一张图片展示的5个色块类似,绝不会有连续变化颜色的物体。于是,应该以上述程序获得的被测物体颜色R、G、B值为中心,设置一个距离中心值±20的范围值,在任何环境光条件下,再次检测被测物体的RGB值,只要RGB值落在范围内,就可以认为被测物体是那种特定颜色的物体。这样设定颜色值范围的方法,可以有效提高物体颜色的识别率。第 9 页

    注意事项

    本文(TCS颜色传感器使用说明.doc)为本站会员(美****子)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开