9★♥★基于STM32单片机的颜色检测仪设计♥☆

Posted 行走的皮卡丘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9★♥★基于STM32单片机的颜色检测仪设计♥☆相关的知识,希望对你有一定的参考价值。

9、★♥★基于STM32单片机的颜色检测仪设计♥☆

引言

随着现代工业生产向着自动化、智能化方向的发展,生产过程中长期由人眼占据主导地位的颜色识别工作即将被效率和精确度更高的颜色传感器所替代,颜色传感器在未来生活与生产中扮演的作用将会越来越大。颜色识别器的应用十分广泛,现阶段其主要应作为彩色打印机和绘图仪的主要构成部分。并在化妆品、纺织品和涂料制造过程中颜色的调配以及医疗等方面都起着重要的作用。因此对颜色识别器的研究对未来检测行业的发展有着重要的意义。本文将研究TCS3200颜色传感器识别颜色的原理,并结合单片机和液晶显示模块来实现颜色识别功能。

首先,需要了解一定程度的光与颜色的知识以及深入研究TCS3200颜色传感器对颜色的识别原理并实现其识别颜色的功能。其次,利用STM32单片机对颜色传感器输出数据进行处理,转换成相应的RGB三原色颜色值。最后,通过LCD1602将RGB三原色颜色值显示出来并通过RGB颜色对应表对比和分析所测数据。本设计具有设备成本低、体积小、易于操作、灵敏度和精确度高等特点。

1、系统概述

1.1、设计任务

用STM32及TCS3200颜色传感器设计一个颜色检测仪。

1.2、设计要求

(1)STM32单片机进行数据处理;

(2)TCS3200颜色识别进行采集;

(3)LCD1602液晶显示当前的信息;

(4)检测到颜色后进行判断如果符合红、绿、蓝的RGB值范围就显示其值。

2、方案设计与论证

2.1、芯片选择方案

stm32是一个低功耗,高性能32位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、 三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。

TCS3200是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器,TCS3200的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接。由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单,当入射光投射到TCS3200上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。下面简要介绍TCS3200芯片各个引脚的功能。

在单一的TCS3200芯片上集成四种类型的光电二极管,这些光电二极管表面分别镶嵌着红、绿、蓝三种颜色的滤光器,加上未镶嵌的中共64个,每种16个。这四种带滤波器的光电二极管在传感器芯片内交叉排列,四种光电二极管能够均匀的就接收光源辐射,极大的地减小因入射光幅射不均而造成的误差,提高颜色识别的精确度。工作时,通过引脚S2、S3选择所需滤波器的颜色类型。TCS3200传感器的可通过引脚S0、S1来选择输出频率定标,其输出频率范围为2Hz~500kHz。

下面简要介绍TCS3200芯片各个引脚的功能。

S0、S1引脚用于选择电源关断模式和输出比例因子(2%,20%,100%);引脚S2、S3用于选择滤波器的类型;OE可以控制输出的状态为频率输出使能引脚,当微处理器同接收控制多个芯片时,OE可作为芯片的片选信号;OUT为频率输出引脚,GND接电源地,VCC接+5V电源。

图1 TCS3200引脚图

TCS3200的S0、S1用于选择输出比例因子或电源关断模式;S2、S3用于选择滤波器的类型;OE反是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用微处理器的输出引脚时,也可以作为片选信号,OUT是频率输出引脚,GND是芯片的接地引脚,VCC为芯片提供工作电压。下表给出了TCS3200颜色传感器使用时相关控制引脚的一些组合选项。

表1:输出频率分频选择

S0S1输出频率分频比例
LL掉电
LH2%
HL20%
HH100%

表2:滤光颜色选择

S2S3光电二极管类型
LL红色
LH蓝色
HL消除(无滤光)
HH绿色

2.2 、系统概述

本设计是一个具有颜色识别并能显示RGB值的颜色检测仪。由三基色原理可知自然界中所有色光都可由R、G、B三种基本颜色按照不同的比例叠加合成,当三基色分量都为0时,叠加出的光为黑色,对应于立方体坐标中的(0,0,0)点;当三基色分量都为255时,叠加出的光为白色光,对应于立体坐标中得(255,255,255)。以由黑到白为对角线的正方体的其他六个顶点分别为红(255,0,0),黄(255,255,0),绿(0,255,0),青(0,255,255),蓝(0,0,255)和品红(255,0,255)。每个颜色都有其独自RGB值。它利用STM32单片机对颜色传感器输出数据进行处理,转换成相应的RGB三原色颜色值。最后,通过LCD1602将RGB三原色颜色值显示出来并通过RGB颜色对应表对比和分析所测数据。本设计具有设备成本低、体积小、易于操作、灵敏度和精确度高等特点。

2.3、设计要求

① STM32单片机进行数据处理;

② TCS3200颜色识别进行采集;

③ LCD1602液晶显示当前的信息;

④ 检测到颜色后进行判断如果符合红、绿、蓝的RGB值范围就显示其值。

2.4、系统总体设计思路

(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘

(2) 了解一定深度的颜色相关的知识和颜色传感器识别颜色的原理。
(3) 进行软件设计,系统软件主要包括:组程序、白平衡矫正子程序和颜色比较子程序。;

(4) 做出实物进行测试,并分析实验数据。

2.5、各功能模块程序实现原理分析

该模块由TCS3200的颜色传感器,LED模块和电源电路模块组成。且都通过STM32来实现。

2.5.1、 TCS3200的颜色传感器

颜色传感器TCS3200主要与单片机的P1口和P3口连接。P1口是准双向口I/O口。P1口的输入输出特性与P0口作为通用I/O口似的特性一样;但是当P1口输出时可提供电流负载,不需要外接上拉电阻。P1口能驱动4个TTL。

TCS3200 识别颜色的原理

由三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于 TCS3200 来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到 TCS3200 传感器上的光的颜色。

2.5.2、 电源电路模块

单片机的电源采用直流5V供电,电源模块包括一个3脚的电源座子和6脚的电源开关。电源座子用于连接外部的电源插头,电源开关用于控制整个单片机的电路开和关。电源座子的2口引脚接地,3口引脚仅仅起到固定的作用,没有特殊的用处,1口引脚连接到电源开关的3口引脚,电源开关的1、3口引脚和4、6口引脚的作用相同,用于电源的正极输出。电源开关的2、5口引脚作为单片机的接地引脚,在使用时采取相对的选择,即选择1、3口引脚作为输出,那么就要选择5口引脚作为接地引脚,选择4、6引脚作为输出端口,2口引脚则作为接地引脚。本次单片机的传感器和无线传输芯片的电压都在5V内,所以5V的电压足够满足。若有12V或者其他电压的传感器,则可以采取升压模块将5V提升到更高的电压,进行供电。

2.53 、LED模块

题目的要求只需用一个LED灯便可以显示传输是否在运行,故只接两个LED灯,LED0为显示传输是否运行的指示灯,SYS为系统是否有电源进行供电的指示灯。

3、 STM32性能介绍及硬件设计

3.1、 STM32单片机性能介绍

STM32它拥有的资源包括:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2个高级定时器、2个DMA 控制器(共 12 个通道)、3 个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口及51 个通用IO口,该芯片性价比极高。

各个引脚说明如下

  • PA0 作用1,按键 KEY_UP 2,可以做待机唤醒脚(WKUP) 3,可以接 DS18B20 传感器接口(P2 设置)
  • PA1作用1,NRF24L01 接口 IRQ 信号 2,接 HS0038 红外接收头(P2 设置)
  • PA2 作用 作为W25Q64 的片选信号
  • PA3 作用 作为SD 卡接口的片选脚
  • PA4 作用 作为NRF24L01 接口的 CE 信号
  • PA5 作用 作为W25Q64、SD 卡和 NRF24L01 接口的 SCK 信号
  • PA6 作用 作为 W25Q64、SD 卡和 NRF24L01 接口的 MISO 信号
  • PA7 作用 作为 W25Q64、SD 卡和 NRF24L01 接口的 MOSI 信号
  • PA8 作用 作为 接 DS0 LED 灯(红色)
  • PA9 作用 作为串口 1 TX 脚,默认连接 CH340 的 RX(P4 设置)
  • PA10 作用 作为串口 1 RX 脚,默认连接 CH340 的 TX(P4 设置)
  • PA11 作用 作为接 USB D-引脚
  • PA12 作用 作为接 USB D+引脚
  • PA13作用 作为JTAG/SWD 仿真接口,没接任何外设
  • PA14 作用 作为JTAG/SWD 仿真接口,没接任何外设
  • PA15 作用 作为1,JTAG 仿真口(JTDI) 2,PS/2 接口的 CLK 信号 3,接按键 KEY1

3.2、颜色识别传感器系统硬件设计

该程序所需要的主电路图,由TCS3200的颜色传感器的电路图,电源电路图以及LED电路图以及LCD外部接线图依次如下图所示

图1.3电源电路图如下图

图1.4 LED电路图如下图

图1.5 LCD外部接线图如下图

4、 系统程序

4.1、主程序设计如下

主程序流程设计图如下图:

系统软件主要包括:组程序、白平衡矫正子程序和颜色比较子程序。其中白平衡矫正子程序用于颜色标定;比较子程序用于颜色检测。程序流程图如下:

子程序设计程序需进行白平衡调节,得出比例因子,再实现对物体颜色检验和校准,并在数码管上显示R.G.B值,下面给出了颜色识别子程序流程:

利用C语言编译程序,待软件编译通过后下载入单片机,依据设计方案进行调节测试并记录下实验数据。具体操作如下:首先将颜色采集模块用个光效果的纸盒遮盖起来,铺上待测彩色纸板是传感器一段面对彩色纸板。接通开发板电源,将待测彩色纸板平铺于桌面上,再把颜色采集模块平放在待测的纸板上方月一厘米出,然后记录下LCD显示出的数数值,对不同颜色的待测纸板重复上述步骤即可。

进行测试时要注意以下两个问题:

  • 1、颜色识别时要确保纸盒的密闭隔光性,避免外界光线对颜色传感器的干扰,使外界光对实验结果的影响经可能减到最小。

  • 2、白平衡调整:首次使用TCS3200时,需要进行白平衡调整。因为标准的白光其R、G、B三原色分量均为255,而我们的四个白色LED补光电路所发出的白光并不是标准的白光。所以,我们要进行白平衡调整,以减小识别系统的误差。 白平衡之后,把颜色传感器对着不同的彩色纸板进行颜色检测查看其RGB的值。由得出的数值,可根据RGB颜色表来检验测试结果与实际结果的差别。

4.2 、主程序内容

#include "sys.h"
#include "LCD1602.h"
#include "delay.h"
#include "sys.h"
#include "tcs3200.h"

int main(void)
{	
    u8 R=0x00,G=0x00,B=0x00;

    delay_init();	    //延时函数初始化	  
    delay_ms(500);       //上电瞬间加入一定延时在初始化
    tcs3200_init();//tcs3200初始化
    whitebalance();	//白平衡
    LCD_Init();         //屏幕初始化
    LCD_Write_String(0,0,"     R:000      ");
    LCD_Write_String(0,1,"  G:000  B:000  ");

    while(1)
    {  
        R = tcs3200_RED();
        G = tcs3200_GREEN();	//读取RGB值
        B = tcs3200_BLUE();	
        LCD_Write_Char(7,0,R/100+0x30);
        LCD_Write_Char(8,0,R%100/10+0x30);
        LCD_Write_Char(9,0,R%10+0x30);
        LCD_Write_Char(4,1,G/100+0x30);
        LCD_Write_Char(5,1,G%100/10+0x30);
        LCD_Write_Char(6,1,G%10+0x30);
        LCD_Write_Char(11,1,B/100+0x30);
        LCD_Write_Char(12,1,B%100/10+0x30);
        LCD_Write_Char(13,1,B%10+0x30);
        delay_ms(500);
    }

}

5、系统调试及分析

5.1、系统调试现象及分析

本设计从TCS3200的结构特点和应用领域出发,结合STM32单片机,实现了能够同时测量和辨别光线中三基色成分。简述了利用软件对TCS3200的实际颜色测量值进行校准的处理办法,大大提高了系统对颜色的辨识精度。给出了相应的硬件设计电路、软件流程图和测试程序、电路具有成本低、测量速度快、精确高等特点,可以广泛应用于各种对需要对光色成分进行测量、分析和识别的行业。进入调试状态后应该在关键的地方设置断点然后按步运行,同时观察参数的变化,通过变化来判断程序运行的过程即可找出程序中混乱的部分,进行改正,这需要对软件熟练的掌握和对语言程序的很好的理解,实验板搭建成功后,我们就进入了程序的设计和调试阶段,开始编写程序时很顺利,但是后来在调试过程中出现了很多的错误,

本文主要研究了颜色识别系统的原理及其功能的实现。本设计的主要工作可归结如下:

  • (1)了解一定深度的颜色相关的知识和颜色传感器识别颜色的原理。

  • (2)介绍颜色传感器、单片机、补光灯电路和液晶显示模块。

  • (3)对颜色识别系统进行总体性设计。

  • (4)做出实物进行测试,并分析实验数据。

总颜色识别的核心难点在于如何设计出先进RGB三种颜色测量的算法,只有优秀的算才能基于这种算法设计出先进的颜色识别系统。由于作者水平有限,难以建立精确的测量算法,因此设计出的系统存在着较大的误差。

色彩识别技术作为一种新兴的检测技术是未来实现工业自动化、智能化的重要手段。基于本文所完成的工作,对下一步研究做如下展望:

  • (1)完善色彩识别的算法。本文测得的RGB在精确度上不够精确,后续研究应因建立更加合理更加精确的颜色识别算法。

  • (2)对所测颜色进行更多的色彩区分。在后续研究中要对颜色空间进行更为细微的颜色空间划分,使色彩识别更加精确。

从色彩识别系统设计到实际的颜色识别器,这其中需要考虑识别系统的稳定性和抗干扰能力,也应注意系统的供电等问题。因而还有大量的研究内容,需要我们去了解去研究。我相信在不久的将来,色彩识别系统将被广泛应用到各个行业之中,成为工业自动化的一门重要技术。

5.2、测试结果

此系统的效果明显,基本可以显示rgb的值,能实现设计要求和目的所规定的内容。下面是结果图:

以上是关于9★♥★基于STM32单片机的颜色检测仪设计♥☆的主要内容,如果未能解决你的问题,请参考以下文章

基于STM32单片机项目设计目录-加油吧√

基于STM32单片机项目设计目录-加油吧√

基于STM32单片机大棚环境参数无线蓝牙检测设计(论文)

基于STM32单片机大棚环境参数无线蓝牙检测设计(开题报告)

基于STM32单片机大棚环境参数无线蓝牙检测设计(开题报告)

毕业设计 :基于单片机的酒精浓度检测仪 - stm32 酒驾检测 酒精检测