颜色传感器 - 从零开始认识各种传感器【第二十三期】
今天我们来学习颜色传感器,将为大家介绍传感器的工作原理;常见种类;以及通过MCU实际演示对于传感器数据的读取过程。
标签
嵌入式系统
Lucia
更新2024-08-05
88

1、什么是颜色传感器 

颜色传感器(Color Sensor)是一种能够检测和识别颜色的传感器,它广泛应用于工业自动化、机器人技术、智能家居、消费电子等领域。颜色传感器通过测量物体表面反射的光来确定其颜色,通常包含一个或多个光源(如LED)和一个光电探测器。

2、颜色传感器是如何工作的

颜色传感器的工作原理是基于色彩的光学特性,它一般是通过自带光源照射物体, 通常是使用红色、绿色和蓝色的LED来照射目标物体。由于不同颜色的物体表面可以反射不同波长的光,而传感器中的光电探测器,如光电二极管或光电晶体管,可以接收这些反射光。并且不同颜色的光在物体表面反射的比例不同,导致探测器接收到的光强度不同,再经过光电转换后,传感器内部的处理电路对电信号进行分析即可确定物体的颜色。

3、常见的颜色传感器的种类

依据工作原理的不同,颜色传感器可以分为RGB颜色传感器,单色颜色传感器和光谱颜色传感器。

3.1 RGB颜色传感器

RGB颜色传感器是最常见的颜色传感器,一般它包含透镜,滤色片和三个独立的光电二极管,分别对应红色、绿色和蓝色光。

当光照射到物体上时,物体会反射出不同颜色的光。例如,红色物体的反射光成分主要为红色;黄色物体反射光的成分为红光和绿光;白色物体的反射光包含红、绿、蓝全部成分;紫色物体反射红光和蓝光。由此可知,物体的颜色由物体反射的光色(R、G、B)成分的比例决定,人眼就是通过获取反射光成分来识别物体的颜色。与人眼一样,颜色传感器是使用光电二极管接收光线,通过计算接收到的R、G、B量的比例来识别颜色。

在下面例子的左半部分,由于灰色物体反射的红绿蓝光比是1:1:1, 所以传感器检测为灰色;而右边黄色物体反射红绿蓝光比是4:4:1, 故检测为黄色。

这是一个(color sensor)颜色传感器IC的典型结构,内部搭载了彩色滤光片(Color filter)和红外截止滤光片(Ir cut filter)。

滤光片的作用是使得不同波长或者说不同颜色的光的分光特性更明显。而红外截止滤光片可以过滤掉不必要的红外光干扰,使得结果更加准确。

3.2 单色颜色传感器

单色颜色传感器通常专门用于检测特定波长的光,它只对单一颜色或特定波长的光敏感,广泛使用在需要对特定颜色进行精确检测的场合。

比如在工业自动化领域:单色颜色传感器可用于检测生产线上的产品颜色,确保产品颜色的一致性。一般来说,它被设计用于仅仅检测单蓝色(λp=460 nm)、单绿色(λp=540 nm)或单红色(λp=660 nm),相比RGB三色传感器,它具有高精度,响应速度快,简单可靠的优点。下图这款单色传感器就是在绿色540nm的波长情况下具有最高的频率响应。

3.3 光谱颜色传感器

光谱颜色传感器是能够检测和分析不同波长范围内的光谱成分。它通常具有多个可见光通道,通过测量光在多个波长上的强度来获取详细的光谱信息,从而精确识别和区分颜色。

与传统的RGB颜色传感器不同,光谱颜色传感器可以提供更精细的颜色信息,适用于需要高精度颜色检测的应用,如医疗诊断,物质分析等。

例如,在农业种植中,光谱颜色传感器能够对照射到作物上的光进行快速准确的光谱测量,根据测量结果,可调整照明设备,将其与每种植物的光照需求相匹配。

4、颜色传感器实验演示 

我们来演示使用 MCU 读取显示颜色传感器的数据。扩展板上面装载了一款常见的RGB颜色传感器,屏幕实时显示了当前它传回来的RGB三色的强度值。程序绘制输出了白色的方块,对应的是实验室的白色光照环境;将手机中的绿色图片放在传感器的上方,可以看到,显示绿色的数值达到了约1500左右,程序相应输出绘制了绿色方块。

主控板卡:基于RP2040的带屏调试助手

以下是主程序中对于颜色传感器数据的获取代码示例:

import test.st7789 as st7789
from test.fonts import vga2_8x8 as font1
from test.fonts import vga1_16x32 as font2
from machine import Pin, SPI, ADC,PWM ,I2C
import time, math,array
from utime import sleep_ms
from test.ltr381 import LTR381

def CalcValue(value,minval,maxval):
if (value < minval):
value = minval
if (value >maxval):
value = maxval
calvalue = int( (value - minval) * 255 / (maxval - minval) )
return calvalue

def DetecColor(Rval,Gval,Bval):
if ((Rval>130)and(Gval<50)and(Bval<10) ):
return "Red "
if ((Rval<60)and(Gval>150)and(Bval<60) ):
return "Green "
if ((Rval<60)and(Gval<40)and(Bval>150) ):
return "Blue "
if ((Rval>170)and(Gval>170)and(Bval<60) ):
return "Yellow "
if ((Rval<60)and(Gval>170)and(Bval>170) ):
return "Cyan "
if ((Rval>150)and(Gval<100)and(Bval>180) ):
return "Magenta"
if ((Rval>200)and(Gval>200)and(Bval>200) ):
return "White "
if ((Rval<30)and(Gval<30)and(Bval<30) ):
return "Black "
else:
return " "

sensor = LTR381()
st7789_res = 0
st7789_dc = 1
disp_width = 240
disp_height = 240
CENTER_Y = int(disp_width/2)
CENTER_X = int(disp_height/2)
spi_sck=Pin(2)
spi_tx=Pin(3)
spi0=SPI(0,baudrate=4000000, phase=1, polarity=1, sck=spi_sck, mosi=spi_tx)
display = st7789.ST7789(spi0, disp_width, disp_width,
reset=machine.Pin(st7789_res, machine.Pin.OUT),
dc=machine.Pin(st7789_dc, machine.Pin.OUT),
xstart=0, ystart=0, rotation=0)
display.fill(st7789.BLACK)
display.text(font2, "Color Meter 1.0", 0, 0)
display.text(font2, "by:tinySDR ", 0, 30)
display.text(font2, "EETREE Feb.2024", 0, 200)
display.text(font2, "R: ", 0, 70)
display.text(font2, "G: ", 0, 100)
display.text(font2, "B: ", 0, 130)

while True:

REDS = sensor.REDS()
GREENS = sensor.GREENS()
BLUES = sensor.BLUES()
REDH= CalcValue(REDS,60,300)
GREENH = CalcValue(GREENS,160,550)
BLUEH = CalcValue(BLUES,90,350)

display.text(font2, str(REDS)+" ", 48, 70)
display.text(font2, str(GREENS)+" ", 48, 100)
display.text(font2, str(BLUES)+" ", 48, 130)
display.fill_rect(160, 70, 80,120, st7789.color565(REDH,GREENH,BLUEH))
display.text(font2, "C: "+ DetecColor(REDH,GREENH,BLUEH), 0, 160)
团队介绍
你了解生活中常见的各种传感器是如何工作的吗?本系列将选择30种不同类型的传感器,通过5分钟左右的视频和文章带你一步步了解每个传感器的内部结构和工作原理,并推荐选型和购买合适的传感器。
团队成员
硬禾学堂
硬禾核心团队举办实战培训营已有超过6年的经验。自成立起矢志建立专业化、系统化、工程化技能培训体系,以在工业界中的最佳实践为行业培养技术中坚和领军人才。 硬禾采用Project-Based Learning(PBL)项目制教学方法,在基于实际产品和项目的教学过程中借助短期的高强度、快节奏的系统性实战训练,让学员迅速积累优秀工程师应具备的专业技能、职业素养和全区思维,加速其职业成长。
得捷电子
DigiKey 总部位于美国明尼苏达州锡夫里弗福尔斯市,是全球电子元器件和自动化产品前沿商业分销领域公认的领航者和持续创新者。我们通过分销来自 2,900 多家优质品牌制造商的 1,530 多万种元器件获得了强大的技术优势,并凭借行业领先的产品存货广度和深度以及立即发货的能力,确立了我们在分销领域的领导地位。DigiKey 还为工程师、设计师、创建者和采购专业人员提供丰富的数字解决方案、无障碍互动和工具支持,以帮助他们提升工作效率。如需了解更多信息,请访问 www.digikey.cn 并关注我们的微信、微博、腾讯视频和 BiliBili 账号。
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号