在现代工业生产中,颜色识别技术已经成为了一个非常重要的技术。颜色识别可以用于产品质量检测、物料分类、机器视觉等领域。本文将介绍如何使用fpga结合zc-cls381rgb进行颜色识别。
本教程通过对采集到的图像信息中,r、g、b三个颜色分量的占比,来判断识别到的颜色信息。本教程只实现对红色、绿色、蓝色的识别,如果各位读者要想实现对其它色彩信息的识别,可根据三个色彩分量的占比来判断。
zc-cls381rgb简介
zc-cls381rgb是一款基于rgb三基色原理的颜色识别传感器。它可以通过对物体反射光的rgb三基色分量进行测量,来判断物体的颜色。该传感器具有高精度、快速响应、稳定性好等特点,广泛应用于自动化生产线、机器人、智能家居等领域。
配置寄存器组
zc-cls381rgb是一款rgb led驱动器芯片,需要通过配置寄存器来让该模块正常工作。下面就对颜色识别需要配置的寄存器进行介绍。
主控寄存器
01
main_ctrl register是主控寄存器,下图是主控寄存器的配置介绍:
▶ bit7~bit5,bit3,bit0:保留位(reserved),使用时将这几位置0即可。
▶ bit4:软件复位位(sw reset),当该位被置1时,芯片会进行软件复位,即将所有寄存器的值恢复为默认值。在使用zc-cls381rgb时,如果出现异常情况,例如芯片无法正常工作或者输出异常,可以通过将sw reset位置1来进行软件复位,以恢复芯片的正常工作状态。同时,在初始化芯片时,也可以通过将sw reset位置1来确保芯片的寄存器值处于默认状态,以避免出现不可预期的问题。但是如果软件复位位一直为高电平,模块就无法正常采集颜色,一直处于复位状态,如果要关闭该位则还需要发送一次指令。因此在本设计初始化时,将该位置为0,不启用软件复位。
▶ bit2:颜色传感器模式位(cs mode),该位置为1时,表示所有的光传感器通道都被激活,包括rgb(三原色)、ir(红外光)和comp(环境光)。这意味着该传感器可以同时测量红、绿、蓝三种颜色的光线强度、红外线的强度以及环境光的强度,并将这些数据传输到寄存器中进行处理。初始化配置时,需将该位置为1。
▶ bit1:环境光传感器/颜色传感器使能位(als/cs enable),当该位置1时,表示使能环境光传感器和颜色传感器。在本设计中,需要使用到这两个传感器,因此在初始化时需要将该位置为1。
检测速率寄存器
02
als_cs_meas_rate register是环境光传感器和颜色传感器检测速率寄存器,下图是对该寄存器的配置介绍:
▶bit7、bit3:保留位(reserved),使用时这两位需要置0。
▶ bit6,bit5,bit4:环境光传感器和颜色传感器速率位(als/cs resolution),初始化时设置{bit6,bit5,bit4}=100,利用最快的时间对采集到的数据进行转换。
▶bit2,bit1,bit0:环境光传感器和颜色传感器测量速率位(als/cs measurement rate),初始化设置{bit2,bit1,bit0}=000,利用最快的采集速率采集数据。
增益寄存器
03
als_cs_meas_rate register是环境光传感器和颜色传感器增益寄存器,下图是对该寄存器的配置介绍:
▶bit7~bit3:保留位(reserved),使用时这两位需要置0。
▶ bit2~bit0:环境光传感器和颜色传感器增益率位(reserved),初始化时设置{bit2,bit1,bit0}=100,将增益率调到最大,以此增强信号的强度,使得信号更容易被检测到。
线上交流会
04
因为本教程采集的是红色、绿色、蓝色数据,芯片手册提供的寄存器组如下图所示:
0x0d、0x0e、0x0f分别表示绿色信息的低8位、中8位、高8位数据;0x10、0x11、0x12分别表示红色信息的低8位、中8位、高8位数据;0x13、0x14、0x15分别表示蓝色信息的低8位、中8位、高8位数据。在使用中,直接读取这些寄存器内的数据,然后拼接起来,即可得到红、绿、蓝色数据,再根据三个数据的占比,从而对采集到的物体颜色进行判断。
状态转移图和信号波形图绘制
在正式开始使用器件时,需要等待一段时间让器件稳定下来,如图所示:
待机唤醒时间最大为10ms,表示在测量的时候,两次获取数据的时间间隔最大为10ms。由于在数据手册内,未说明上电后直到模块稳定需要等待的时间,在这里我们人为设置上电等待的时间为20ms,给模块一个缓冲的时间,然后再对它进行配置。配置寄存器组信号波形图如下图所示:
其中,i2c_start作为i2c控制模块的开始信号,检测到该开始信号后,就开始配置寄存器,向各个寄存器内写入数据。综上绘制的i2c控制模块配置寄存器组的状态转移图如下图所示:
为了设计方便,对于50mhz的系统时钟,将其分频为1mhz的i2c驱动时钟用来驱动后续模块,同时令一个scl时钟周期为4us,高电平持续时间为2us,低电平持续时间也为2us。这样设计的好处是,满足scl高电平持续时间大于0.6us,scl低电平持续时间大于1.3us。如下图所示:
综上,绘制的分频信号波形图如下图所示:
结合状态转移图,绘制的配置寄存器信号波形图如下图所示:
需要注意的是,配置寄存器组跳转条件为skip_en_0,这里配置的寄存器是向寄存器里面写入数据,总共需要配置三个,三个寄存器配置完成后,才能读出颜色数据。因此,step从0自增到1,必须要在cfg_num为3并且检测到结束信号的情况下进行。
新一代iPad Pro曝光 外观惊艳无边框+无Home键
首场爆满!芯华章验证技术研讨会都讲了什么?
石墨烯电子纹身传感器可在患者进行日常活动时监测血压
太阳能电池的工作原理
突破边界:“超融合+”带来的商业化精益之路
ZC-CLS381RGB颜色识别+8x8点阵指示—配置颜色识别寄存器组(上)
1兆欧的电阻在半导体装配中的主要作用是什么?
由宽带跨导型运算放大和缓冲器OPA660构成的纳秒级脉冲积分电路
机加工自动化生产线是如何运行的?
45亿美元和解后 高通瞄准与华为纠纷
5G手机都双层主板?拆解发现荣耀V30主板是三层
中国智能音箱销售激增 2019年Q1销量同比增长500%
AI芯片的应用场景和发展趋势
空调管温传感器坏了的表现有哪些
德索科普HSD线束检测工序
机器视觉中精度和分辨率详解!
华为mate10什么时候上市?作为iPhone 8的最大对手,这样的华为Mate10你期待吗?
R类立体声音频功率放大器CS83785E/CS83711E
Evolve无人机遥控器配置双屏幕:取景和多点触控操作
最实用的栅极驱动芯片选型指南