(SKU:SEN0101)TCS3200颜色传感器
目录 |
简介
TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清除4种滤光器。每6种颜色滤光器均匀地按数组分布来清除颜色中偏移位置的颜色分量。内置的振荡器能输出方波,其频率与所选择的光的强度成比例关系。
产品参数
- 工作电压:2.7V-5.5V
- 接口:TTL数字接口
- 光强度的高精度分辨率转换成频率
- 可编程颜色和全面的输出频率
- 电源中断特征
- 直接和微控制器交互
- 尺寸:28.4x28.4mm
应用
- 溶液颜色检测
- 色彩识别仪
引脚说明
引脚名称 | 输入/输出 | 说明 |
GND(4) | 电源接地。所有电压参考GND | |
OE(3) | 输入 | 启用fo (低电平有效). |
OUT | 输出 | 输出频率(fo). |
S0,S1(1,2) | 输入 | 输出频率缩放选择输入 |
S2,S3(7,8) | 输入 | 光电二极管类型选择输入 |
VDD(5) | 提供电压 |
使用教程
链接到TCS3002D时,选择一种颜色过滤器,它可以允许只有一个特定的颜色,以获得通过,并防止其他颜色。
例如,当选择红色滤波器,只有红色的入射光可以得到通过,蓝色和绿色将被阻止。因此,我们可以得到红光强度。
同样,当选择其他过滤器,我们可以得到蓝色或绿色光。
TCS3002有四种滤波类型:红,蓝,绿和清除全部光信息,以最大限度地降低入射光幅射的不均匀性,从而增加精确度和简化光学。
当入射光投射到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% |
传感器位置摆放
经过我们多次测试发现,传感器在被测物体的正前方或是正上方1cm处所测得的数据最佳。
尽可能让传感器与被测物体平行,且不要晃动物体或是传感器。如下图所示。
连线图
接线说明 | |
VCC——5V | GND——GND |
S0——D3 | S1——D4 |
S2——D5 | S3——D6 |
OUT——D2 |
示例代码
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); }
结果
编译上传代码后,打开串口监视器,在右下角将波特率设定为115200,否则串口监视器无法接收到数据,设定完成后,在串口监视器中可以看到传感器的RGB参数返回值。
注意事项
使用此模块前需要先校准。方法为在高亮白色光源下将255除以得到的RGB数据,得到比例系数后,再在代码输出数据时分别乘以比例系数以修正RGB输出值使它们的值相等。
上图中的结果原始数据,虽不是准确值,但可以发现都会有对某种或某两种颜色的趋向。
1.颜色识别时要避免外界光线的干扰,否则会影响颜色识别的结果,最好把传感器、光源等放置在一个密闭、无反射的箱子中进行测试。
2.对光源没有特殊的要求,但是光源发出的光要尽量集中,否则会造成传感器之间的相互干扰。不发光物体请打开LED补光灯检测。
3.当第1次使用TCS230时,或TCS230识别模块重启、更换光源等情况时,都需要进行白平衡调整。
疑难解答
更多问题及有趣的应用,请访问论坛