TCS3200颜色传感器使用说明[借鉴]

上传人:x****育 文档编号:146264867 上传时间:2020-09-28 格式:PDF 页数:10 大小:396.83KB
返回 下载 相关 举报
TCS3200颜色传感器使用说明[借鉴]_第1页
第1页 / 共10页
TCS3200颜色传感器使用说明[借鉴]_第2页
第2页 / 共10页
TCS3200颜色传感器使用说明[借鉴]_第3页
第3页 / 共10页
TCS3200颜色传感器使用说明[借鉴]_第4页
第4页 / 共10页
TCS3200颜色传感器使用说明[借鉴]_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《TCS3200颜色传感器使用说明[借鉴]》由会员分享,可在线阅读,更多相关《TCS3200颜色传感器使用说明[借鉴](10页珍藏版)》请在金锄头文库上搜索。

1、精品文档可编辑版 TCS3200 颜色传感器是一款全彩的颜色检测器,包括了一块 TAOS TCS3200RGB 感应芯片和 4 个白光 LED 灯,TCS3200 能在一定的范围内检测和测量几乎所有的 可见光。它适合于色度计测量应用领域。比如彩色打印、医疗诊断、计算机彩色监 视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制。 通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光) 中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种 频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红 R、黄 Y、绿 G、青 V、蓝 B、紫 P)。根据

2、德国物理学家赫姆霍兹(Helinholtz)的三 原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。 由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够 知道所测试物体的颜色。对于 TCS3200D 来说,当选定一个颜色滤波器时,它只 允许某种特定的原色通过,阻止其它原色的通过。例如:当选择红色滤波器时,入 射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强; 同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个光强值, 就可以分析出反射到 TCS3200D 传感器上的光的颜色。 TCS3200D 传感器有红绿蓝和清除 4

3、种滤光器,可以通过其引脚 S2 和 S3 的高 低电平来选择滤波器模式,如下图。 TCS3200D 有可编程的彩色光到电信号频率的转换器,当被测物体反射光的红、 绿、蓝三色光线分别透过相应滤波器到达 TAOS TCS3200RGB 感应芯片时,其内 置的振荡器会输出方波,方波频率与所感应的光强成比例关系,光线越强,内置的 振荡器方波频率越高。TCS3200 传感器有一个 OUT 引脚,它输出信号的频率与内 置振荡器的频率也成比例关系,它们的比率因子可以靠其引脚 S0 和 S1 的高低电 平来选择,如下图。 1 / 10 精品文档可编辑版 这个测试实验,我把 TCS3200 传感器 OUT 引脚

4、输出信号频率与其内置振荡器 频率比率因子设为 2%,有了输出频率比例因子,但是如何通过 OUT 引脚输出信 号频率来换算出被测物体由三原色光强组成的 RGB 颜色值呢?这还需进行白平衡 校正来得到 RGB 比例因子才行! 白平衡校正方法是:把一个白色物体放置在 TCS3200 颜色传感器之下,两者相 距 10mm 左右,点亮传感器上的 4 个白光 LED 灯,用 Arduino 控制器的定时器设 置一固定时间 1s,然后选通三原色的滤波器,让被测物体反射光中红、绿、蓝三 色光分别通过滤波器,计算 1s 时间内三色光对应的 TCS3200 传感器 OUT 输出信 号脉冲数(单位时间的脉冲数包含了

5、输出信号的频率信息),再通过正比算式得到 白色物体 RGB 值 255 与三色光脉冲数的比例因子。有了白平衡校正得到的 RGB 比 例因子,则其它颜色物体反射光中红、绿、蓝三色光对应的 TCS3200 输出信号 1s 内脉冲数乘以 R、G、B 比例因子,就可换算出了被测物体的 RGB 标准值了。 现在谈谈,如何进行 TCS3200 各控制引脚与 Arduino 控制器的硬件连线问题, 下图分别是 TCS3200 传感器和其连线图。 2 / 10 精品文档可编辑版 上图中 TCS3200 传感器各控制引脚与 Arduino 控制器数字端口连线的对应关系, 我设置为: #define S0 6 #

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 比例因子。(

7、可通过 QQ 截图来锁定画面, 以便观察。)(双击图片,可以放大看!双击图片,可以放大看!) 3 / 10 精品文档可编辑版 把白平衡时放置在 TCS3200 颜色传感器之下白色物体拿走,放上另一个黄色物 体,在 Arduino IDE 串口监视器看到的这个黄色物体 RGB 值为 233、157、56,如 下图所示。 4 / 10 精品文档可编辑版 打开电脑 Windows 操作系统自带的画图板,点击菜单栏“颜色”-“编辑颜色”- -“规定自定义颜色”-右下角输入 RGB 值,查看对应的颜色与实际测试的颜色是 否相符。实际测试结果是测得的物体颜色与实际颜色有些偏色,但并不影响区分出 被测物体是

8、哪种颜色的物体。 5 / 10 精品文档可编辑版 介绍完 TCS3200 传感器颜色识别原理和其与 Arduino 控制器的硬件连线,以及 如何利用串口监视器找到白平衡后的比例因子和被测物体的 RGB 值。下面展示的 是 Arduino 测试程序。注意:下面的#include TimerOne.h 要改为单括号形式。要改为单括号形式。 Arduino 程序:程序: #include TimerOne.h /申明库文件申明库文件 /把把 TCS3200 颜色传感器各控制引脚连到颜色传感器各控制引脚连到 Arduino 数字端口数字端口 #define S0 6 /物体表面的反射光越强,物体表面的

9、反射光越强,TCS3002D 内置振荡器产生的方波频率越高,内置振荡器产生的方波频率越高, #define S1 5 /S0 和和 S1 的组合决定输出信号频率比例因子,比例因子为的组合决定输出信号频率比例因子,比例因子为 2% /比率因子为比率因子为 TCS3200 传感器传感器 OUT 引脚输出信号频率与其内置振荡器频率之比引脚输出信号频率与其内置振荡器频率之比 #define S2 4 /S2 和和 S3 的组合决定让红、绿、蓝,哪种光线通过滤波器的组合决定让红、绿、蓝,哪种光线通过滤波器 #define S3 3 #define OUT 2 /TCS3200 颜色传感器输出信号连接到颜

10、色传感器输出信号连接到 Arduino 中断中断 0 引脚,并引发引脚,并引发 脉冲信号中断脉冲信号中断 /在中断函数中记录在中断函数中记录 TCS3200 输出信号的脉冲个数输出信号的脉冲个数 #define LED 7 /控制控制 TCS3200 颜色传感器是否点亮颜色传感器是否点亮 LED 灯灯 float g_SF3; /从从 TCS3200 输出信号的脉冲数转换为输出信号的脉冲数转换为 RGB 标准值的标准值的 RGB 比例因子比例因子 int g_count = 0; / 计算与反射光强相对应计算与反射光强相对应 TCS3200 颜色传感器输出信号的脉冲数颜色传感器输出信号的脉冲数

11、 / 数组用于存储在数组用于存储在 1s 内内 TCS3200 输出信号的脉冲数,它乘以输出信号的脉冲数,它乘以 RGB 比例因子就是比例因子就是 RGB 标标 准值准值 int g_array3; int g_flag = 0; / 滤波器模式选择顺序标志滤波器模式选择顺序标志 / 初始化初始化 TSC3200 各控制引脚的输入输出模式各控制引脚的输入输出模式 /设置设置 TCS3002D 的内置振荡器方波频率与其输出信号频率的比例因子为的内置振荡器方波频率与其输出信号频率的比例因子为 2% void TSC_Init() pinMode(S0, OUTPUT); pinMode(S1, O

12、UTPUT); 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) 6 / 10 精品文档可编辑版 if(Level01 != 0) Level01 = HIGH; if(Level02

13、 != 0) Level02 = HIGH; digitalWrite(S2, Level01); digitalWrite(S3, Level02); /中断函数,计算中断函数,计算 TCS3200 输出信号的脉冲数输出信号的脉冲数 void TSC_Count() g_count + ; /定时器中断函数,每定时器中断函数,每 1s 中断后,把该时间内的红、绿、蓝三种光线通过滤波器时,中断后,把该时间内的红、绿、蓝三种光线通过滤波器时, /TCS3200 输出信号脉冲个数分别存储到数组输出信号脉冲个数分别存储到数组 g_array3的相应元素变量中的相应元素变量中 void TSC_Cal

14、lback() 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 输出的脉冲输出的脉

15、冲 个数个数 TSC_WB(HIGH, HIGH); /选择让绿色光线通过滤波器的模式选择让绿色光线通过滤波器的模式 break; case 2: Serial.print(-Frequency G=); Serial.println(g_count); /打印打印 1s 内的绿光通过滤波器时,内的绿光通过滤波器时,TCS3200 输出的脉冲输出的脉冲 个数个数 7 / 10 精品文档可编辑版 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 内的蓝光通过滤波器时,内的蓝光通过滤波器时,TCS3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 经验/事迹

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号