0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZC-CLS381RGB颜色识别+8x8点阵指示—配置颜色识别寄存器组(上)

FPGA创新中心 来源:FPGA创新中心 2023-11-03 17:40 次阅读

在现代工业生产中,颜色识别技术已经成为了一个非常重要的技术。颜色识别可以用于产品质量检测、物料分类、机器视觉等领域。本文将介绍如何使用FPGA结合ZC-CLS381RGB进行颜色识别。

教程通过对采集到的图像信息中,R、G、B三个颜色分量的占比,来判断识别到的颜色信息。本教程只实现对红色、绿色、蓝色的识别,如果各位读者要想实现对其它色彩信息的识别,可根据三个色彩分量的占比来判断。

ZC-CLS381RGB简介

ZC-CLS381RGB是一款基于RGB三基色原理的颜色识别传感器。它可以通过对物体反射光的RGB三基色分量进行测量,来判断物体的颜色。该传感器具有高精度、快速响应、稳定性好等特点,广泛应用于自动化生产线、机器人智能家居等领域。

配置寄存器

ZC-CLS381RGB是一款RGB LED驱动芯片,需要通过配置寄存器来让该模块正常工作。下面就对颜色识别需要配置的寄存器进行介绍。

主控寄存器

01

MAIN_CTRL Register是主控寄存器,下图是主控寄存器的配置介绍:

wKgZomVEwBiATzWqAAHFub6DzHU673.jpg

▶ 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是环境光传感器和颜色传感器检测速率寄存器,下图是对该寄存器的配置介绍:

wKgZomVEwBiAAFq0AAFWbVH_lmM583.jpg

▶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是环境光传感器和颜色传感器增益寄存器,下图是对该寄存器的配置介绍:

wKgaomVEwBiAIrQbAACoRhPz6ZY070.jpg

▶bit7~bit3:保留位(Reserved),使用时这两位需要置0。

▶ bit2~bit0:环境光传感器和颜色传感器增益率位(Reserved),初始化时设置{bit2,bit1,bit0}=100,将增益率调到最大,以此增强信号的强度,使得信号更容易被检测到。

线上交流会

04

因为本教程采集的是红色、绿色、蓝色数据,芯片手册提供的寄存器组如下图所示:

wKgaomVEwBiAbvmvAAJRs4L7CXg716.jpg

0x0D、0x0E、0x0F分别表示绿色信息的低8位、中8位、高8位数据;0x10、0x11、0x12分别表示红色信息的低8位、中8位、高8位数据;0x13、0x14、0x15分别表示蓝色信息的低8位、中8位、高8位数据。在使用中,直接读取这些寄存器内的数据,然后拼接起来,即可得到红、绿、蓝色数据,再根据三个数据的占比,从而对采集到的物体颜色进行判断。

状态转移图和信号波形图绘制

在正式开始使用器件时,需要等待一段时间让器件稳定下来,如图所示:

wKgaomVEwBiAGwx_AAD6OXuJfHE547.jpg

待机唤醒时间最大为10ms,表示在测量的时候,两次获取数据的时间间隔最大为10ms。由于在数据手册内,未说明上电后直到模块稳定需要等待的时间,在这里我们人为设置上电等待的时间为20ms,给模块一个缓冲的时间,然后再对它进行配置。配置寄存器组信号波形图如下图所示:

wKgaomVEwBiAcMFkAAE5afKQjTo147.jpg

其中,i2c_start作为i2c控制模块的开始信号,检测到该开始信号后,就开始配置寄存器,向各个寄存器内写入数据。综上绘制的i2c控制模块配置寄存器组的状态转移图如下图所示:

wKgZomVEwBiATRwUAABpcIwZsCQ498.jpg

为了设计方便,对于50MHZ的系统时钟,将其分频为1MHZ的i2c驱动时钟用来驱动后续模块,同时令一个SCL时钟周期为4us,高电平持续时间为2us,低电平持续时间也为2us。这样设计的好处是,满足SCL高电平持续时间大于0.6us,SCL低电平持续时间大于1.3us。如下图所示:

wKgZomVEwBiAcolqAAFEDM7ORQc829.jpg

综上,绘制的分频信号波形图如下图所示:

wKgZomVEwBiAFeCvAACFLwthymU309.jpg

结合状态转移图,绘制的配置寄存器信号波形图如下图所示:

wKgaomVEwBiAQvNKAAKaX5w8NgQ907.jpg

wKgZomVEwBiAPqzGAAJzdeOXZco103.jpg

wKgaomVEwBiAFpz3AAKMFPC1sdk154.jpg

需要注意的是,配置寄存器组跳转条件为skip_en_0,这里配置的寄存器是向寄存器里面写入数据,总共需要配置三个,三个寄存器配置完成后,才能读出颜色数据。因此,step从0自增到1,必须要在cfg_num为3并且检测到结束信号的情况下进行。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48093

    浏览量

    740061
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593194
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • RGB
    RGB
    +关注

    关注

    4

    文章

    763

    浏览量

    57407

原文标题:【知识分享】ZC-CLS381RGB颜色识别+8x8点阵指示——配置颜色识别寄存器组(上)

文章出处:【微信号:FPGA创新中心,微信公众号:FPGA创新中心】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    8X8点阵利用595怎么来实现数字移动

    8X8点阵利用595怎么来实现数字移动
    发表于 02-02 16:39

    求助。8x8点阵的接法

    这个是我们社区里的那个8x8点阵贪吃蛇的游戏,无聊想自己做一个,可是不确定器件清单,有做过的吗,教教吧。
    发表于 05-11 13:36

    8x8点阵led显示

    本帖最后由 eehome 于 2013-1-5 09:45 编辑 有8x8点阵作品
    发表于 05-19 11:19

    Protues16x16点阵库文件(非4个8x8拼接而成)

    8x8点阵拼成一个16x16的点阵,但这样组合过程中连线十分麻烦,而且屏幕整体感不强。此16x16点阵
    发表于 07-18 02:42

    8x8点阵做的贪吃蛇游戏

    8x8点阵做的贪吃蛇游戏.
    发表于 08-20 19:07

    8x8点阵相关问题提问

    本人单片机入门不久,但是没有什么实战经验,现在想做一个8x8点阵的小电路,但是没有这方面的编程经验。所以小弟在此特意求助于各位大神,请多多指教。
    发表于 10-11 23:13

    如何用veriloging写成关于8x8点阵的程序

    如何用veriloging写成关于8x8点阵的程序
    发表于 12-03 17:07

    拼接8x8点阵屏变成16x16 或者更多

    求求各位版主能不能教教我在protues中拼接8x8点阵屏变成16x16或者更多的我不会啊
    发表于 02-26 15:53

    8x8点阵仿真

    本帖最后由 gk320830 于 2015-3-4 12:53 编辑 基于2片595级联驱动的8X8点阵仿真及0到9数字显示程序
    发表于 08-19 20:07

    8x8点阵。。。。

    8x8点阵。。。。
    发表于 05-05 16:25

    8X8点阵LED显示屏字模提取软件(测试版)

    8X8点阵LED显示屏字模提取软件(测试版)
    发表于 03-19 14:16

    51单片机学习记录(8) “8X8点阵 精选资料推荐

    51单片机学习记录(8) “8x8点阵8x8点阵就是由64个小led灯组成的矩阵,现在先让我们看一下
    发表于 07-15 06:45

    如何用MAX7219芯片来设计的8X8点阵模块?

    如何用MAX7219芯片来设计的8X8点阵模块?
    发表于 09-26 07:42

    请问51单片机如何实现8X8点阵的显示?

    请问51单片机如何实现8X8点阵的显示?
    发表于 10-15 08:19

    如何去实现一种8x8点阵的设计

    一.8x8点阵(1)74h595认识(2)8x8点阵排列(3)实践:#includetypedef unsigned char u8;typ
    发表于 12-10 07:17