TCS3200颜色传感器说明颜色检测色谱检测.docx

上传人:b****7 文档编号:24949467 上传时间:2023-06-03 格式:DOCX 页数:26 大小:276.25KB
下载 相关 举报
TCS3200颜色传感器说明颜色检测色谱检测.docx_第1页
第1页 / 共26页
TCS3200颜色传感器说明颜色检测色谱检测.docx_第2页
第2页 / 共26页
TCS3200颜色传感器说明颜色检测色谱检测.docx_第3页
第3页 / 共26页
TCS3200颜色传感器说明颜色检测色谱检测.docx_第4页
第4页 / 共26页
TCS3200颜色传感器说明颜色检测色谱检测.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

TCS3200颜色传感器说明颜色检测色谱检测.docx

《TCS3200颜色传感器说明颜色检测色谱检测.docx》由会员分享,可在线阅读,更多相关《TCS3200颜色传感器说明颜色检测色谱检测.docx(26页珍藏版)》请在冰豆网上搜索。

TCS3200颜色传感器说明颜色检测色谱检测.docx

TCS3200颜色传感器说明颜色检测色谱检测

 

TCS3200颜色传感器测试实验

 

TCS3200颜色传感器是一款全彩的颜色检测器,包含了一块TAOSTCS3200RGB感觉芯片和4个白光LED灯,TCS3200能在必定的范围内检测和丈量几乎全部的可见光。

它合适于色度计丈量应用领域。

比方彩色打印、医疗诊疗、计算机彩色监督器校准以及油漆、纺织品、化妆品和印刷资料的过程控制。

往常所看到的物体颜色,其实是物体表面汲取了照耀到它上边的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反响。

白色是由各

种频次的可见光混淆在一同构成的,也就是说白光中包含着各样颜色的色光(如

红R、黄Y、绿G、青V、蓝B、紫P)。

依据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各样颜色是由不一样比率的三原色(红、绿、蓝)混淆而成的。

由上边的三原色感觉原理可知,假如知道构成各样颜色的三原色的值,便可以知道所测试物体的颜色。

关于TCS3200D来说,入选定一个颜色滤波器时,它只同意某种特定的原色经过,阻挡其余原色的经过。

比如:

入选择红色滤波器时,入射光中只有红色能够经过,蓝色和绿色都被阻挡,这样便可以获取红色光的光强;同理,选择其余的滤波器,便可以获取蓝色光和绿色光的光强。

经过这三个光强值,便可以剖析出反射到TCS3200D传感器上的光的颜色。

TCS3200D传感器有红绿蓝和消除4种滤光器,能够经过其引脚S2和S3的高低电平来选择滤波器模式,以下列图。

 

TCS3200D有可编程的彩色光到电信号频次的变换器,当被测物体反射光的红、绿、蓝三色光芒分别透过相应滤波器抵达TAOSTCS3200RGB感觉芯片刻,其内置的振荡器会输出方波,方波频次与所感觉的光强成比率关系,光芒越强,

内置的振荡器方波频次越高。

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控制器数字端口连线的对应关系,我设置为:

 

#defineS0

6

#defineS1

5

#defineS2

4

#defineS3

3

#defineOUT

2

#defineLED

7

当被测物体为不发光物体时,应当把

TCS3200的LED引脚设置为高电平,

以点亮TCS3200传感器电路板上的四个白光LED灯。

下文展现了一个带有白均衡的测试程序,把这个程序下载到

Arduino控制器

中,同时把一个白色物体搁置在

TCS3200颜色传感器之下,点亮传感器上的4

个白光LED灯,再翻开ArduinoIDE的串口监督器,会出现下列图监督画面,能够在该画面中找到白色物体RGB值255以及RGB比率因子。

(可经过QQ截图来锁定画面,以便察看。

)(双击图片,能够放大看!

 

把白均衡时搁置在TCS3200颜色传感器之下白色物体拿走,放上另一个黄

色物体,在ArduinoIDE串口监督器看到的这个黄色物体RGB值为233、157、56,以下列图所示。

 

翻开电脑Windows操作系统自带的绘图板,点击菜单栏“颜色”--->“编写颜色”--->“规定自定义颜色”-->右下角输入RGB值,查察对应的颜色与实质测试的颜色能否符合。

实质测试结果是测得的物体颜色与实质颜色有些偏色,但其实不影响划分出被测物体是哪一种颜色的物体。

 

介绍完TCS3200传感器颜色辨别原理和其与

Arduino控制器的硬件连线,以

及怎样利用串口监督器找到白均衡后的比率因子和被测物体的

RGB值。

下边展

示的是Arduino测试程序。

注意:

下边的#include

《TimerOne.h>

要改为单括号

形式。

Arduino

程序:

#include

《TimerOne.h>//

声明库文件

//

把TCS3200

颜色传感器各控制引脚连到

Arduino数字端口

#defineS0

6

//

物体表面的反射光越强,TCS3002D

内置振荡器产生的方波频次越

高,

#defineS1

5

//S0和S1的组合决定输出信号频次比率因子,比率因子为

2%

//比率因子为TCS3200传感器OUT引脚输出信号频次与其内置振荡器频次之

#defineS2

4

//S2和S3

的组合决定让红、绿、蓝,哪一种光芒经过滤波器

#defineS3

3

#defineOUT

2

//TCS3200

颜色传感器输出信号连结到

Arduino

中止0引脚,并引

发脉冲信号中止

//

在中止函数中记录

TCS3200

输出信号的脉冲个数

#defineLED

7

//

控制TCS3200颜色传感器能否点亮

LED灯

floatg_SF[3];

//

从TCS3200输出信号的脉冲数变换为

RGB标准值的RGB比率因

int

g_count=0;

//计算与反射光强相对应TCS3200

颜色传感器输出信号的脉冲数

//

数组用于储存在

1s内TCS3200输出信号的脉冲数,它乘以

RGB比率因子就是RGB

标准值

int

g_array[3];

int

g_flag=0;

//

滤波器模式选择次序标记

 

//初始化TSC3200各控制引脚的输入输出模式

//设置TCS3002D的内置振荡器方波频次与其输出信号频次的比率因子为2%

voidTSC_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);

}

 

//选择滤波器模式,决定让红、绿、蓝,哪一种光芒经过滤波器

voidTSC_FilterColor(intLevel01,intLevel02)

{

if(Level01!

=0)

Level01=HIGH;

if(Level02!

=0)

Level02=HIGH;

digitalWrite(S2,Level01);

digitalWrite(S3,Level02);

}

 

//中止函数,计算TCS3200输出信号的脉冲数

voidTSC_Count()

{

g_count++;

}

 

//准时器中止函数,每1s中止后,把该时间内的红、绿、蓝三种光芒经过滤波器时,

//TCS3200输出信号脉冲个数分别储存到数组g_array[3]的相应元素变量中

voidTSC_Callback()

{

 

switch(g_flag)

{

case0:

Serial.println("->WBStart");

TSC_WB(LOW,LOW);

//

选择让红色光芒经过滤波器的模式

break;

case1:

Serial.print("->FrequencyR=");

Serial.println(g_count);

//

打印1s

内的红光经过滤波器时,

TCS3200

输出的

脉冲个数

g_array[0]=g_count;

//

储存1s

内的红光经过滤波器时,

TCS3200

输出的

脉冲个数

TSC_WB(HIGH,HIGH);

//

选择让绿色光芒经过滤波器的模式

break;

case2:

Serial.print("->FrequencyG=");

Serial.println(g_count);

//

打印1s

内的绿光经过滤波器时,

TCS3200

输出的

脉冲个数

g_array[1]=g_count;

//

储存1s

内的绿光经过滤波器时,

TCS3200

输出的

脉冲个数

TSC_WB(LOW,HIGH);

//

选择让蓝色光芒经过滤波器的模式

break;

 

case3:

Serial.print("->FrequencyB=");

Serial.println(g_count);

//

打印1s

内的蓝光经过滤波器时,

TCS3200

输出的

脉冲个数

Serial.println("->WBEnd");

g_array[2]=g_count;

//

储存1s

内的蓝光经过滤波器时,

TCS3200

输出的

脉冲个数

TSC_WB(HIGH,LOW);

//

选择无滤波器的模式

break;

default:

g_count=0;//计数值清零

break;

}

}

 

//设置反射光中红、绿、蓝三色光分别经过滤波器时怎样办理数据的标记

//该函数被TSC_Callback()调用

voidTSC_WB(intLevel0,intLevel1)

{

g_count=0;//计数值清零

g_flag++;//输出信号计数标记

TSC_FilterColor(Level0,Level1);//

 

滤波器模式

Timer1.setPeriod(1000000);

//设置输出信号脉冲计数时长

1s

}

//初始化

voidsetup()

{

TSC_Init();

Serial.begin(9600);//启动串行通讯

Timer1.initialize();//defaulteis1s

Timer1.attachInterrupt(TSC_Callback);//设置准时器

TSC_Callback()

//设置TCS3200输出信号的上跳沿触发中止,中止调用函数为

attachInterrupt(0,TSC_Count,RISING);

digitalWrite(LED,HIGH);//点亮LED灯

delay(4000);//延时4s,以等候被测物体红、绿、蓝三色在

 

1的中止,中止调用函数为

 

TSC_Count()

 

1s内的TCS3200输出信

号脉冲计数

//经过白均衡测试,计算获取白色物体RGB值255与1s内三色光脉冲数的RGB比率

因子

g_SF[0]=255.0/g_array[0];g_SF[1]=255.0/g_array[1];g_SF[2]=255.0/g_array[2];

//红色光比率因子

//绿色光比率因子

//蓝色光比率因子

//打印白均衡后的红、绿、蓝三色的RGB比率因子

Serial.println(g_SF[0],5);

Serial.println(g_SF[1],5);

Serial.println(g_SF[2],5);

//红、绿、蓝三色光分别对应的1s内TCS3200输出脉冲数乘以相应的比率因子就是

RGB标准值

//打印被测物体的RGB值

for(inti=0;i<3;i++)

Serial.println(int(g_array[i]*g_SF[i]));

}

 

//主程序

voidloop()

{

g_flag=0;

//每获取一次被测物体RGB颜色值需时4s

delay(4000);

//打印出被测物体RGB颜色值

for(inti=0;i<3;i++)

Serial.println(int(g_array[i]*g_SF[i]));

}

程序中的头文件TimerOne.h文件请下载:

上边是带有白均衡的测试程序,关于详细项目的应用程序,要在此基础上加以改动。

假如TCS3200传感器与被测物体的检测距离以及四周环境光芒没有发生大的变化,进行一次白均衡校订后,RGB比率因子便可以确立下来了。

于是您必定要把获取的RGB比率因子直接代替掉红色字体表记程序段中的数组g_array[3]各元素变量。

此外绿色字体表记的程序段也能够说明掉。

在详细项目中,您所检测的是某种特定颜色的物体,可能就像文章的第一张

图片展现的5个色块近似,绝不会有连续变化颜色的物体。

于是,应当以上述程序获取的被测物体颜色R、G、B值为中心,设置一个距离中心值±20的范围值,在任何环境光条件下,再次检测被测物体的RGB值,只需RGB值落在范围内,便可以以为被测物体是那种特定颜色的物体。

这样设定颜色值范围的方法,能够有效提升物体颜色的辨别率。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1