TCS3200颜色传感器
The TCS3200 Color Sensor
目录
1 简介
2 产品参数
3 应用
4 引脚说明
5 使用教程
5.1 连线图
5.2 示例代码
5.3 结果
6 疑难解答
7 更多
简介
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%
连线图
接线说明
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, CHANGE);
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);
}
使用此模块前需要先校准。方法为在高亮白色光源下将255除以得到的RGB数据,得到比例系数后,再在代码输出数据时分别乘以比例系数以修正RGB输出值使它们的值相等。
上图中的结果原始数据,虽不是准确值,但可以发现都会有对某种或某两种颜色的趋向。
疑难解答
更多问题及有趣的应用,请访问论坛
更多
应用连接:自带保护色的变色龙灯
老版本Wiki:TCS3200颜色传感器
TCS3200 Schematic
TCS3200 Data Sheet