做分拣小车、识别色块的机器人,TCS3200颜色传感器是个经典又便宜的选择。它不像那些带封装的黑盒子那么神秘,原理是把入射光分成RGB三个通道,用频率输出告诉你有多少光。这篇把接线、读频率、怎么换算成颜色的流程捋清楚。
TCS3200怎么工作的
传感器表面是一块8乘8的光电二极管阵列,里面16个是红滤光、16个绿、16个蓝,还有16个没有滤光片专门测总光强。通过S2、S3两个引脚选择读哪个通道,S0、S1选择输出频率的缩放比例。最终把某个通道的光强转成一路频率脉冲,用pulseIn统计频率就行。
TCS3200引脚接线
模块引脚不少,但接起来有规律:VCC接5V、GND接线,S0和S1接两个数字脚用来选频率比例(一般直接接高电平选20%,频率在可控范围),S2、S3接两个数字脚选通道,OUT接一个能测频率的数字脚(比如D3)。具体哪根对哪根,网上原理图很多,照着对应标记接就行。

接好后在代码里分别选S2、S3组合,读红、绿、蓝三路频率,就能得到三个数。注意传感器和被测物体之间距离最好固定、光照稳定,不然读数会漂。
读频率和校准换算
用pulseIn测几次取平均,红绿蓝三路频率就是基础的原始数据。接着做校准:分别拿纯红、纯绿、纯蓝的色卡对着测,记下三路频率的最大最小值,用map把频率映射到0到255,这样输出就是标准RGB值。不校准直接用原始频率也能粗分色,但误差会大。

校准的思路和很多模拟传感器类似——先取得边界(min和max),再做线性映射。处理好这个,红色偏橙、蓝色偏紫这种相近色也能分个大概。做分拣或循色小车足够用了,再往上追求精度就得考虑固定现场光照和加遮光罩了。


距离和光照要固定,不然读数会漂来漂去
做分拣小车用这个正合适,红绿蓝三通道够用了
先拿纯色卡校准一下min/max,不然颜色偏得没法看
S0S1选20%频率缩放很关键,太高pulseIn都不好数