TCS3200颜色传感器__SKU_SEN0101_ - jimaobian/DFRobotWikiCn GitHub Wiki

TCS3200颜色传感器 (SKU:SEN0101)

简 介

Color Sensor是一块静态识别物体颜色,不同颜色输出不同频率,采用TCS3200D,所有IO口均引出。 TCS3200D是TAOS(Texas Advanced Optoelectronic Solutions)公司推出的可编程彩色光到频率的转换器。它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上还集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器。TCS3200D的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其它逻辑电路相连接。由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单。

产品参数

1.输出频率的占空比选择S0~S1。

2.颜色滤镜选择:S2~S3。

3.频率输出端口OUT。

4.频率输出使能引脚OE(低电平有效),模块已经置低,使用时可以悬空。

5.支持LED灯补光控制。

6.工作电压2.7-5.5V。

应 用

  • 溶液颜色检测
  • 色彩识别仪

引脚说明

TCS3200D的引脚:

Color_Sensor_1.jpg

引脚名称 输入/输出 描述
GND(4) 电源接地。所有电压参考GND
OE(3) 输入 启用f0(低电平有效)
OUT 输出 输出频率f0
S0,S1(1,2) 输入 输出频率缩放选择输入
S2,S3(7,8) 输入 光电二极管类型选择输入
VDD(5) 提供电压

TCS3200D的功能框图:

Color_Sensor_2.jpg

资料说明

1)TCS3200D识别颜色的原理

TCS3200D光到频率转换器适合于色度计测量应用领域,在开始介绍TCS3200D 的颜色识别前,先来了解一些光与颜色的知识。

a.三原色的感应原理

通常所看到的物体的颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。

b.TCS3200D识别颜色的原理

三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS3200D 来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到TCS3200D 传感器上的光的颜色。

c.白平衡和颜色识别原理

白平衡就是告诉系统什么是白色。从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS3200D 的光传感器来说,它对这三种基本色的敏感性是不相同的,导致TCS3200D 的RGB 输出并不相等,因此在测试前必须进行白平衡调整,使得TCS3200D 对所检测的“白色”中的三原色是相等的。进行白平衡调整是为后续的颜色识别作准备。在本装置中,白平衡调整的具体步骤和方法如下:将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS3200D 上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的三个调整参数。 当用TCS3200D 识别颜色时,就用这三个参数对所测颜色的R 、G 和B 进行调整。这里有两种方法来计算调整参数:①依次选通三种颜色的滤波器,然后对 TCS3200D的输出脉冲依次进行计数。当计数到255 时停止计数,分别计算每个通道所用的时间。这些时间对应于实际测试时TCS3200D 每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的R 、G 和B 的值。②设置定时器为一固定时间(例如10ms ),然后选通三种颜色的滤波器,计算这段时间内 TCS3200D 的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的 R 、G 和B 的值。

使用教程

连线图

TCS3200_1.png

接线说明
VCC——5V GND——GND
S0——D3 S1——D4
S2——D5 S3——D6
OUT——D2

S0,S1,S2,S3使用说明

TCS3200D有四种滤波类型:红,蓝,绿和清除全部光信息,以最大限度地降低入射光幅射的不均匀性,从而增加精确度和简化光学。当入射光投射到TCS3200D上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器,如下图所示:

S2 S3 滤波器类型
L L 红色
L H 蓝色
H L
H H 绿色

TCS3200D输出不同频率的方波(占空比50%),不同的颜色和光强对应不同的频率的方波,输出频率与光强度成线性关系。该转换器典型输出频率范围为2Hz~500kHz,用户可通过两个可编程引脚来选择100%、20%或2%的输出比例因子。如下图所示:

S0 S1 输出频率定标
L L 关断电源
L H 2%
H L 20%
H H 100%

样例代码

样例一

Arduino IDE软件

int s0=3,s1=4,s2=5,s3=6;
int out=2;
int flag=0;
byte counter=0;
byte countR=0,countG=0,countB=0;
void setup()
 {
 Serial.begin(115200);
 pinMode(s0,OUTPUT);
 pinMode(s1,OUTPUT);
 pinMode(s2,OUTPUT);
 pinMode(s3,OUTPUT);

 }
void TCS()
 {
 flag=0;
 digitalWrite(s1,HIGH);
 digitalWrite(s0,HIGH);
 digitalWrite(s2,LOW);
 digitalWrite(s3,LOW);
 attachInterrupt(0, ISR_INTO, LOW);
 timer0_init();

 }
void ISR_INTO()
 {
 counter++;
 }
 void timer0_init(void)
 {
  TCCR2A=0x00;
  TCCR2B=0x07;   //the clock frequency source 1024 points
  TCNT2= 100;    //10 ms overflow again
  TIMSK2 = 0x01; //allow interrupt
 }
 int i=0;
 ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function
{
    TCNT2=100;
    flag++;
 if(flag==1)
  {
    countR=counter;
    Serial.print("red=");
    Serial.println(countR,DEC);
    digitalWrite(s2,HIGH);
    digitalWrite(s3,HIGH);
  }
  else if(flag==2)
   {
    countG=counter;
    Serial.print("green=");
    Serial.println(countG,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,HIGH);
   }
   else if(flag==3)
    {
    countB=counter;
    Serial.print("blue=");
    Serial.println(countB,DEC);
    Serial.println("\n");
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);

    }
    else if(flag==4)
     {
     flag=0;
     }
       counter=0;
}
void loop()
 {
  TCS();
while(1);
 }

样例二

int s0=3,s1=4,s2=5,s3=6;
int flag=0;
int counter=0;
int countR=0,countG=0,countB=0;
void setup()
 {
 Serial.begin(115200);
 pinMode(s0,OUTPUT);
 pinMode(s1,OUTPUT);
 pinMode(s2,OUTPUT);
 pinMode(s3,OUTPUT);
 }
void TCS()
 {
   digitalWrite(s1,HIGH);
   digitalWrite(s0,LOW);
   flag=0;
   attachInterrupt(0, ISR_INTO, CHANGE);
   timer2_init();
 }
void ISR_INTO()
 {
   counter++;
 }
 void timer2_init(void)
 {
   TCCR2A=0x00;
   TCCR2B=0x07; //the clock frequency source 1024 points
   TCNT2= 100;    //10 ms overflow again
   TIMSK2 = 0x01; //allow interrupt
 }
 int i=0;
 ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function
{
 TCNT2=100;
 flag++;
 if(flag==1)
  {
    counter=0;
  }
 else if(flag==2)
   {
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);
    countR=counter/1.051;
    Serial.print("red=");
    Serial.println(countR,DEC);
    digitalWrite(s2,HIGH);
    digitalWrite(s3,HIGH);
   }
 else if(flag==3)
    {
     countG=counter/1.0157;
    Serial.print("green=");
    Serial.println(countG,DEC);
     digitalWrite(s2,LOW);
     digitalWrite(s3,HIGH);

    }
 else if(flag==4)
    {
     countB=counter/1.114;
    Serial.print("blue=");
    Serial.println(countB,DEC);
     digitalWrite(s2,LOW);
     digitalWrite(s3,LOW);
     }
 else
     {
     flag=0;
      TIMSK2 = 0x00;
     }
     counter=0;
     delay(2);
}
void loop()
 {
  delay(10);
  TCS();
  if((countR>10)||(countG>10)||(countB>10))
   {
      if((countR>countG)&&(countR>countB))
       {
            Serial.print("red");
            Serial.print("\n");
            delay(1000);
       }
      else if((countG>=countR)&&(countG>countB))
       {
            Serial.print("green");
            Serial.print("\n");
            delay(1000);
       }
     else if((countB>countG)&&(countB>countR))
      {
            Serial.print("blue");
            Serial.print("\n");
           delay(1000);
      }
    }
  else
  {
     delay(1000);
  }
 }

使用说明

FAQ

应用中需要注意的问题

a. 颜色识别时要避免外界光线的干扰,否则会影响颜色识别的结果,最好把Color Sensor、光源等放置在一个密闭、无反射的箱子中进行测试。

b.当第一次使用Color Sensor时,或Color Sensor模块重启、更换光源等情况时,都需要进行白平衡调整。

更多

附加资料

各种颜色 RGB值

■RGB(255,192,203) ■★●◆pink(粉红)

■RGB(220,20,60) ■★●◆crimson(腥红)

■RGB(255,240,245) ■★●◆lavenderblush(苍白的紫罗兰红)

■RGB(219,112,147) ■★●◆palevioletred(脸红的淡紫红)

■RGB(255,105,180) ■★●◆hotpink(热情的粉红)

■RGB(199,21,133) ■★●◆mediumvioletred(适中的紫罗兰红)

■RGB(218,112,214) ■★●◆orchid(兰花紫)

■RGB(216,191,216) ■★●◆thistle(苍紫)

■RGB(221,160,221) ■★●◆plum(轻紫)

■RGB(238,130,238) ■★●◆violet(紫罗兰)

■RGB(255,0,255) ■★●◆magenta(洋紫)

■RGB(255,0,255) ■★●◆fuchsia(紫红)

■RGB(139,0,139) ■★●◆darkmagenta(深洋紫)

■RGB(128,0,128) ■★●◆purple(紫)

■RGB(186,85,211) ■★●◆mediumorchid(适中的兰花紫)

■RGB(148,0,211) ■★●◆darkviolet(深紫罗兰)

■RGB(75,0,130) ■★●◆indigo(靓青)

■RGB(138,43,226) ■★●◆blueviolet(蓝紫罗兰)

■RGB(147,112,219) ■★●◆mediumpurple(适中的紫)

■RGB(123,104,238) ■★●◆mediumslateblue(适中的的板岩蓝)

■RGB(106,90,205) ■★●◆slateblue(板岩蓝)

■RGB(72,61,139) ■★●◆darkslateblue(深板岩蓝)

■RGB(230,230,250) ■★●◆lavender(熏衣草花的淡紫)

■RGB(248,248,255) ■★●◆ghostwhite(幽灵白)

■RGB(0,0,255) ■★●◆blue(蓝)

■RGB(0,0,205) ■★●◆mediumblue(适中的蓝)

■RGB(25,25,112) ■★●◆midnightblue(午夜蓝)

■RGB(0,0,139) ■★●◆darkblue(深蓝)

■RGB(0,0,128) ■★●◆navy(海军蓝)

■RGB(65,105,225) ■★●◆royalblue(皇家蓝)

■RGB(100,149,237) ■★●◆cornflowerblue(矢车菊蓝)

■RGB(176,196,222) ■★●◆lightsteelblue(淡钢蓝)

■RGB(119,136,153) ■★●◆lightslategray(浅石板灰)

■RGB(112,128,144) ■★●◆slategray(石板灰)

■RGB(30,144,255) ■★●◆dodgerblue(道奇蓝)

■RGB(240,248,255) ■★●◆aliceblue(爱丽丝蓝)

■RGB(70,130,180) ■★●◆steelblue(钢蓝)

■RGB(135,206,250) ■★●◆lightskyblue(淡天蓝)

■RGB(135,206,235) ■★●◆skyblue(天蓝)

■RGB(0,191,255) ■★●◆deepskyblue(深天蓝)

■RGB(173,216,230) ■★●◆lightblue(淡蓝)

■RGB(176,224,230) ■★●◆powderblue(火药蓝)

■RGB(95,158,160) ■★●◆cadetblue(军校蓝)

■RGB(240,255,255) ■★●◆azure(蔚蓝)

■RGB(224,255,255) ■★●◆lightcyan(淡青)

■RGB(175,238,238) ■★●◆paleturquoise(苍白的宝石绿)

■RGB(0,255,255) ■★●◆cyan(青)

■RGB(0,255,255) ■★●◆aqua(水绿)

■RGB(0,206,209) ■★●◆darkturquoise(深宝石绿)

■RGB(47,79,79) ■★●◆darkslategray(深石板灰)

■RGB(0,139,139) ■★●◆darkcyan(深青色)

■RGB(0,128,128) ■★●◆teal(水鸭色)

■RGB(72,209,204) ■★●◆mediumturquoise(适中的宝石绿)

■RGB(32,178,170) ■★●◆lightseagreen(浅海洋绿)

■RGB(64,224,208) ■★●◆turquoise(宝石绿)

■RGB(127,255,212) ■★●◆aquamarine(碧绿)

■RGB(102,205,170) ■★●◆mediumaquamarine(适中的碧绿)

■RGB(0,250,154) ■★●◆mediumspringgreen(适中的春天绿)

■RGB(245,255,250) ■★●◆mintcream(薄荷奶油)

■RGB(0,255,127) ■★●◆springgreen(春天绿)

■RGB(60,179,113) ■★●◆mediumseagreen(适中的海洋绿)

■RGB(46,139,87) ■★●◆seagreen(海洋绿)

■RGB(240,255,240) ■★●◆honeydew(浅粉红)

■RGB(144,238,144) ■★●◆lightgreen(浅绿)

■RGB(152,251,152) ■★●◆palegreen(苍白绿)

■RGB(143,188,143) ■★●◆darkseagreen(深海洋绿)

■RGB(50,205,50) ■★●◆limegreen(柠檬绿)

■RGB(0,255,0) ■★●◆lime(柠檬)

■RGB(34,139,34) ■★●◆forestgreen(森林绿)

■RGB(127,255,0) ■★●◆chartreuse(查特酒绿)

■RGB(124,252,0) ■★●◆lawngreen(草坪绿)

■RGB(173,255,47) ■★●◆greenyellow(绿黄)

■RGB(85,107,47) ■★●◆darkolivegreen(深橄榄绿)

■RGB(154,205,50) ■★●◆yellowgreen(黄绿)

■RGB(107,142,35) ■★●◆olivedrab(橄榄褐)

■RGB(245,245,220) ■★●◆beige(米色)

■RGB(250,250,210) ■★●◆lightgoldenrodyellow(浅秋黄)

■RGB(255,255,240) ■★●◆ivory(象牙白)

■RGB(255,255,224) ■★●◆lightyellow(浅黄)

■RGB(255,255,0) ■★●◆yellow(黄)

■RGB(128,128,0) ■★●◆olive(橄榄)

■RGB(189,183,107) ■★●◆darkkhaki(深卡其布)

■RGB(255,250,205) ■★●◆lemonchiffon(柠檬沙)

■RGB(238,232,170) ■★●◆palegoldenrod(灰秋)

■RGB(240,230,140) ■★●◆khaki(卡其布)

■RGB(255,215,0) ■★●◆gold(金)

■RGB(255,248,220) ■★●◆cornsilk(玉米)

■RGB(218,165,32) ■★●◆goldenrod(秋)

■RGB(184,134,11) ■★●◆darkgoldenrod(深秋)

■RGB(255,250,240) ■★●◆floralwhite(白花)

■RGB(253,245,230) ■★●◆oldlace(浅米色)

■RGB(245,222,179) ■★●◆wheat(小麦)

■RGB(255,228,181) ■★●◆moccasin(鹿皮)

■RGB(255,165,0) ■★●◆orange(橙)

■RGB(255,239,213) ■★●◆papayawhip(木瓜)

■RGB(255,235,205) ■★●◆blanchedalmond(漂白后的杏仁)

■RGB(255,222,173) ■★●◆navajowhite(耐而节白)

■RGB(250,235,215) ■★●◆antiquewhite(古白)

■RGB(210,180,140) ■★●◆tan(晒)

■RGB(222,184,135) ■★●◆burlywood(树干)

■RGB(255,228,196) ■★●◆bisque(乳脂)

■RGB(255,140,0) ■★●◆darkorange(深橙色)

■RGB(250,240,230) ■★●◆linen(亚麻)

■RGB(205,133,63) ■★●◆peru(秘鲁)

■RGB(244,164,96) ■★●◆sandybrown(沙棕)

■RGB(210,105,30) ■★●◆chocolate(巧克力)

■RGB(192,14,235) ■★●◆chocolatesaddlebrown(马鞍棕)

■RGB(255,245,238) ■★●◆seashell(海贝)

■RGB(160,82,45) ■★●◆sienna(土黄赭)

■RGB(255,160,122) ■★●◆lightsalmon(浅肉)

■RGB(255,127,80) ■★●◆coral(珊瑚)

■RGB(255,69,0) ■★●◆orangered(橙红)

■RGB(255,99,71) ■★●◆tomato(番茄色)

■RGB(255,228,225) ■★●◆mistyrose(雾中玫瑰)

■RGB(250,128,114) ■★●◆salmon(肉)

■RGB(255,250,250) ■★●◆snow(雪)

■RGB(240,128,128) ■★●◆lightcoral(浅珊瑚)

■RGB(188,143,143) ■★●◆rosybrown(玫瑰棕)

■RGB(205,92,92) ■★●◆indianred(浅粉红)

■RGB(255,0,0) ■★●◆red(红)

■RGB(165,42,42) ■★●◆brown(棕)

■RGB(178,34,34) ■★●◆firebrick(火砖)

■RGB(139,0,0) ■★●◆darkred(深红)

■RGB(128,0,0) ■★●◆maroon(粟色)

■RGB(255,255,255) ■★●◆white(白)

■RGB(245,245,245) ■★●◆whitesmoke(烟白)

■RGB(220,220,220) ■★●◆gainsboro(赶死部落)

■RGB(211,211,211) ■★●◆lightgrey(浅灰)

■RGB(192,192,192) ■★●◆silver(银白)

■RGB(169,169,169) ■★●◆darkgray(深灰)

■RGB(105,105,105) ■★●◆dimgray(暗灰)

■RGB(0,0,0) ■★●◆black(黑)

File:nextredirectltr.png购买 TCS3200 Color sensor颜色传感器 RGB模块 (SKU:SEN0101)