如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

释放双眼,带上耳机,听听看~!

这篇文章向您展示了如何使用 TCS230/TCS3200 颜色传感器使用 Arduino 检测颜色。

TCS3200颜色传感器可以根据波长检测各种颜色。该传感器特别适用于颜色识别项目,例如颜色匹配、颜色分类、试纸读取等。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

 介绍

TCS3200颜色传感器(如下图所示)使用 TAOS TCS3200 RGB 传感器芯片来检测颜色。它还包含四个白色 LED,可照亮其前面的物体。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程
 规格

以下是传感器规格:

  •  电源:2.7V 至 5.5V
  • 尺寸:28.4 x 28.4mm (1.12 x 1.12“)
  •  接口:数字TTL
  • 光强度到频率的高分辨率转换
  • 可编程颜色和满量程输出频率
  • 直接与微控制器通信

 

TCS3200传感器是如何工作的?

TCS3200具有一系列带有 4 个不同滤光片的光电二极管。光电二极管只是一种将光转换为电流的半导体器件。该传感器具有:

  • 16 个带红色滤光片的光电二极管 – 对红色波长敏感
  • 16 个带绿色滤光片的光电二极管 – 对绿色波长敏感
  • 16 个带蓝色滤光片的光电二极管 – 对蓝色波长敏感
  • 16 个不带滤光片的光电二极管

如果你仔细观察TCS3200芯片,你可以看到不同的滤波器。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

通过有选择地选择光电二极管滤光片的读数,您可以检测不同颜色的强度。该传感器有一个电流频率转换器,可将光电二极管的读数转换为方波,其频率与所选颜色的光强度成正比。然后,Arduino读取该频率 – 如下图所示。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

 引脚排列

以下是传感器引脚排列:

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

 引脚名称 I/O  描述
 接地 (4)  电源接地
 OE系列 (3) I 使能输出频率(低电平有效)
 输出 (6) O  输出频率
 S0, S1(1,2) I 输出频率调节选择输入
 中二、中三(7,8) I 光电二极管类型选择输入
 电压直流(VDD)(5)  电压供应

 过滤器选择

要选择光电二极管读取的颜色,请使用控制引脚 S2 和 S3。由于光电二极管是并联的,因此将 S2 和 S3 LOW 和 HIGH 设置为不同的组合允许您选择不同的光电二极管。请看下表:

 光电二极管类型 S2 S3
Red LOW LOW
  LOW HIGH
 无过滤器(清除) HIGH LOW
 绿 HIGH HIGH

 频率调节

引脚 S0 和 S1 用于调节输出频率。它可以缩放到以下预设值:100%、20% 或 2%。调整输出频率有助于优化各种频率计数器或微控制器的传感器读数。请看下表:

 输出频率调节 S0 S1
  L L
2% L H
20% H L
100% H H

对于Arduino,通常使用20%的频率缩放。因此,将 S0 引脚设置为 HIGH,将 S1 引脚设置为 LOW。

使用Arduino和TCSP3200进行颜色感应

在此示例中,您将使用 Arduino 和 TCSP3200 颜色传感器检测颜色。 该传感器不是很准确,但可以很好地检测简单项目中的颜色。

 所需零件

以下是此项目所需的部件:

  • TCSP3200 或 TCS230 颜色传感器
  • Arduino UNO 
  •  跳线

连接图

将TCSP3200传感器连接到Arduino非常简单。只需按照下图操作即可。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

以下是 TCSP3200 和 Arduino 之间的联系:

  •  S0:数字引脚 4
  •  S1:数字引脚 5
  •  VCC:5V
  •  S3:数字引脚 6
  •  S4:数字引脚 7
  •  OUT:数字引脚 8

用法

此项目需要两个程序:

  1. 在串行监视器上读取和显示输出频率。在这一部分中,当您在传感器前面放置不同的颜色时,您需要记下频率值。
  2. 区分不同的颜色。在本节中,您将在代码中插入之前选取的频率值,以便传感器可以区分不同的颜色。我们将检测红色、绿色和蓝色。

1. 读取输出频率

将以下代码上传到Arduino开发板。

 // TCS230 or TCS3200 pins wiring to Arduino

#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8


// Stores frequency read by the photodiodes

int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

void setup() {
  
// Setting the outputs

  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  
  
// Setting the sensorOut as an input

  pinMode(sensorOut, INPUT);
  
  
// Setting frequency scaling to 20%

  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
   
// Begins serial communication 

  Serial.begin(9600);
}
void loop() {
  
// Setting RED (R) filtered photodiodes to be read

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  
// Reading the output frequency

  redFrequency = pulseIn(sensorOut, LOW);
  
   
// Printing the RED (R) value

  Serial.print("R = ");
  Serial.print(redFrequency);
  delay(100);
  
  
// Setting GREEN (G) filtered photodiodes to be read

  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  
// Reading the output frequency

  greenFrequency = pulseIn(sensorOut, LOW);
  
  
// Printing the GREEN (G) value  

  Serial.print(" G = ");
  Serial.print(greenFrequency);
  delay(100);
 
  
// Setting BLUE (B) filtered photodiodes to be read

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  
// Reading the output frequency

  blueFrequency = pulseIn(sensorOut, LOW);
  
  
// Printing the BLUE (B) value 

  Serial.print(" B = ");
  Serial.println(blueFrequency);
  delay(100);
}
 

以 9600 的波特率打开串行监视器。

将蓝色物体放置在传感器前面的不同距离。您应该保存两个测量值:当物体远离传感器时和当物体靠近传感器时。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

检查串行监视器上显示的值。与红色 (R) 和绿色 (G) 频率读数相比,蓝色频率 (B) 应该是最低的——见下图。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

当我们将蓝色物体放在传感器前面时,蓝色频率 (B) 值在 59 到 223 之间振荡(参见突出显示的值)。

注意:您不能在代码中使用这些频率值(59 和 223),您应该使用自己的颜色传感器测量特定对象的颜色。然后,保存蓝色的频率上限和下限,因为您稍后会用到它们。

对绿色和红色物体重复此过程,并记下每种颜色的频率上限和下限。

如何使用 TCS230/TCS3200 颜色传感器-Arduino教程

2.区分不同的颜色

下一个程序将频率值映射到 RGB 值(介于 0 和 255 之间)。

在上一步中,当我们有最大蓝色时,我们获得了 59 的频率,当我们在更高的距离上拥有蓝色时,我们获得了 223。

因此,频率 59 对应于 255(RGB),频率 223 对应于 0(RGB)。我们将使用 Arduino map() 函数来做到这一点。在 map() 函数中,您需要将 XX 参数替换为您自己的值。

为了区分不同的颜色,我们有三个条件:

  • 当 R 是最大值(在 RGB 参数中)时,我们知道我们有一个红色对象
  • 当 G 是最大值时,我们知道我们有一个绿色物体
  • 当 B 是最大值时,我们知道我们有一个蓝色物体

现在,在传感器前面放一些东西。它应该在串行监视器中打印检测到的颜色:红色、绿色或蓝色。

提示:您的传感器还可以使用更多 if 语句检测其他颜色。

 结束语

在这篇文章中,您学习了如何使用TCSP3200颜色传感器检测颜色。

您只需添加一个伺服电机即可轻松构建色选机。

您有与颜色分类相关的项目想法吗?

给TA打赏
共{{data.count}}人
人已打赏
ArduinoArduino-进阶动态

麦克风声音传感器-Arduino使用教程

2023-12-7 11:14:27

ArduinoArduino-入门动态

FC-37 雨量传感器模块-Arduino使用教程

2023-12-7 11:48:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();