色彩识别装置.docx

上传人:b****5 文档编号:6642787 上传时间:2023-01-08 格式:DOCX 页数:15 大小:552KB
下载 相关 举报
色彩识别装置.docx_第1页
第1页 / 共15页
色彩识别装置.docx_第2页
第2页 / 共15页
色彩识别装置.docx_第3页
第3页 / 共15页
色彩识别装置.docx_第4页
第4页 / 共15页
色彩识别装置.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

色彩识别装置.docx

《色彩识别装置.docx》由会员分享,可在线阅读,更多相关《色彩识别装置.docx(15页珍藏版)》请在冰豆网上搜索。

色彩识别装置.docx

色彩识别装置

 

我们这次选择了两道题:

题目九:

色彩识别装置

设计要求

设计一个装置,对30cm左右的一张有色纸,装置能够在自然光或者辅助光配合下,识别出有色纸的颜色,并用汉字显示出来。

装置的识别效果的衡量,以与肉眼识别吻合为佳。

题目分析

本题要求设计一个色彩识别装置,该装置能够在自然光或者辅助光源的配合下,识别出一定距离(30cm)内的有色纸的颜色,并可以在屏幕上将识别结果用汉字显示出,颜色的承载体是纸张,颜色环境相对简单,色彩的辨别以人眼识别的为准(非CIE色度学颜色),可采用ColorChecker卡24种颜色作为参照标准。

设计方案

鉴于模块化设计在系统设计中的优越性,我们将该系统分为以下4个模块:

 

主要实现方式有以下几种

方案一:

采用非晶硅彩色传感器,经信号处理电路处理后,利用微处理器(单片机)作为控制器,外接显示器输出测量结果。

系统的实现框图如下:

 

标准光源

 

 

 

方案二:

利用CCD/CMOS传感器,将采集的数据输入到计算机,通过软件进行分析,在屏幕上输出结果,典型的方案是将数码相机(或者摄像头)采集的数据传输到计算机,通过软件Matlab编写模糊神经网络程序进行分析。

框图如下:

方案三:

选用Photosensor颜色信号进行提取和采集,采用基于人工神经网络的高速并行模数转换模式进行数据的模数转换,嵌入式系统对数据进行处理,完成筛选和分拣工作,系统结构如图所示:

方案四:

利用可编程彩色光到频率的传感器TCS230进行信号的收集与处理,单片机SPCE061A进行数据的分析处理,并将结果通过显示输出电路输出。

方案比较

方案一是目前常用的,颜色传感器通常是在独立的光电二极管上覆盖经过修正的红绿蓝滤光片,然后对输出信号进行相应的处理,输出的是模拟信号,需要A/D电路进行采样、转换,才能被微处理器识别,增加了电路的复杂性,存在较大误差,影响了识别效果。

方案二的识别精度较高,但涉及图像处理,算法复杂,软件开销大,硬件成本高。

方案三具有检测速度快,可靠性高等优点,但同样其成本高,算法复杂,一般用于专业领域。

方案四给出了一种基于数字颜色传感器TCS230和16位单片机SPEC061A及LCD显示的颜色识别系统。

TCS230是美国TAOS公司推出的一款可编程光频率转换传感器,这种传感器输出和入射光基色分量成正比的频率信号,能够和微处理器直接接口,因此可以简化系统的设计实现。

本组成员对光学系统的知识储备不是很足,对于方案一中的光学系统把握不是很大,再加上方案一中涉及较多模拟电路,稳定性不高,调试时间长,精度不如集成系统,另外方案二和方案三的成本明显偏高,技术复杂,因此我们选择了方案四,即采用TCS230颜色传感器用作系统的信号采集和处理,通过单片机对数据处理后输出到LCD显示器。

当然,对于方案四我们还有许多问题亟待解决,比如我们对单片机还不是很了解,对汇编语言,微机接口等方面的知识还需要完善,但我们拥有极强的求知欲望和学习能力,在可以预见的将来,我们会将所欠缺的知识补上。

系统的原理分析:

TCS230将光电二极管阵列、电流/频率转换器和红绿蓝三基色滤光器集成为一体。

在由64个光电二极管组成的光敏阵列中,各有16个光电二极管分别用于转换彩色光中的红、绿、蓝基色成分,剩余16个光电二极管不带颜色滤波器,可接受所有光色信息。

这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。

图1是TCS230的外部引脚和内部功能结构示意图,当入射光投到TCS230上时,通过基色选择信号(S2,S3)组合即可在OUT引脚上获得频率和相应基色含量成正比的方波信号输出,因此可通过测量方波频率计算出三基色数据,从而得知被测颜色。

TCS230的典型输出频率范围为2Hz~500kHz,通过输出频率定标选择信号(S0,S1),可使该器件适应量程不同的频率测量装置。

表1为TCS230控制信号S0、S1、S2和S3的组合选择功能。

在多个TCS230器件应用场合,OE引脚信号可用作器件的片选。

硬件设计

在单片机的选择上,我们遇到了一点困难,小组内成员对单片机知识储备不够,无法准确选择恰当功能性能的单片机,在参考相关文献资料后,我们选择了集成度较高,功能较全面的16位单片机SPCE061A(其实在初期的查资料过程中,我们也发现了其他更多的单片机,比如:

MCS-51、SPCA563B、AT89S52等等,它们也许更适合本系统的设计,但它们的功能单一,外围借口复杂,需要其它的配套电路,考虑到设计的难度,我们并没有选择它们),在此单片机的选择上更多的是从设计的方便上考虑的,没有更全面的考虑到成本功耗等方面的因素。

因此我们小组成员今后还需要学习一些单片机的知识。

SPECE061A是Sunplus公司的16位单片机,具有丰富的可编程资源,包括32K字内嵌Flash储存器(这是我们选择它的原因之一,大容量储存器,减少了外围储存器及其电路的设计)、强大的中断系统、2个16位定时器/计数器、2个16位通用I/O端口IOA和IOB,以及同步串行设备接口和异步UART接口等。

图中TCS230的S0、S1、S2、S3分别接SPCE061A单片机I/O口的IOB5、IOB6、IOB3和IOB4,由此控制选择输出频率定标参数和输出基色信号,TCS230的输出方波信号(OUT)频率通过IOB2测量。

如图2所示,SPCE061A中的IOB2除了通常的输入/输出端口功能外,还可以用作SPCE061A内部16位定时/计数器TimerA时钟源A的外部计数脉冲输入EXT1。

因此,若在TimerB定时时间到时读取TimerA计数器的值,就可以分别计算出TCS230的3种基色信号输出频率,进而确定红、绿、蓝基色值和相应合成颜色。

题目要求将检测结果用汉字输出,普通的LED数码管显然满足不了要求,因此在这一部分我们选择了点阵LCD显示器。

然而,通过单片机显示汉字也存在很多难题。

首先,单片机资源有限,我们不能为了显示汉字占用太多的资源;其次,汉字存储读取比较繁琐,使用不方便;第三,汉字占用空间太多(如16点阵,每个汉字就需32字节),因而通常把汉字库放在EEPROM里,需要显示某个汉字时,先算出它的区位码,再求出点阵起始位置,从EEPROM中顺序调出该字的点阵数据,存在缓冲区里,最后依次送往LCD显示,描出该字。

这与LCD显示方式有一定差别。

考虑到本系统用到的汉字资源有限,我们可以预先将用到的汉字符号等进行编码,编成一个文本文件,用一段小程序做出相应小的汉字库,这个小字库的汉字点阵数据取自于一般汉字库。

再经过转换和调整,得到新的汉字库,最后把新字库固化在EEPROM中。

单片机只需按序号读出点阵字节,送往LCD即可显示所需汉字。

减轻了单片机的负担,去除了繁琐的查找内码、求起始位置、转换、调整等工作,提高系统可靠性。

然而,即使是这样,也是对我们的巨大挑战,由于没有任何经验可循,并且时间仓促,我们最终放弃了这一想法,但这一方案是可行的,且实现成本相对较低。

我们今后需要在这方面填补知识的盲区。

最终我们选择了LCM12832ZK(见右图)作为系统的输出设备。

LCM12832ZK显示内容128x32点阵,内带8000多GB1、2中文汉字字库,集成了显示控制器ST7920,(这是我们看重它的主要原因,集成了字库,简化了字库及驱动电路的设计),但缺点也是显而易见的,成本偏高,且功能发挥不完全。

以下是LCM12832ZK的管脚说明:

系统接线图可以参见图2。

颜色识别的原理

三原色的感应原理:

通常所看到的物体的颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。

白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。

根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。

TCS230识别颜色的原理:

由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。

对于TCS230来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。

例如:

当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。

通过这三个值,就可以分析投射到TCS230传感器上的光的颜色。

白平衡和颜色识别原理:

白平衡就是告诉系统什么是白色。

从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS230的光传感器来说,它对这三种基本色的敏感性是不相同的,导致TCS230的RGB输出并不相等,因此在测试前必须进行白平衡调整,使得TCS230对所检测的“白色”中的三原色是相等的。

进行白平衡调整是为后续的颜色识别作准备。

在本装置中,白平衡调整的具体步骤和方法如下:

将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS230上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的三个调整参数。

当用TCS230识别颜色时,就用这三个参数对所测颜色的R、G和B进行调整。

这里有两种方法来计算调整参数:

①依次选通三种颜色的滤波器,然后对TCS230的输出脉冲依次进行计数。

当计数到255时停止计数,分别计算每个通道所用的时间。

这些时间对应于实际测试时TCS230每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的R、G和B的值。

②设置定时器为一固定时间(例如10ms),然后选通三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。

在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。

根据颜色识别原理,我们涉及了该颜色辨别仪系统软件的程序结构如图4所示。

理论上白色由等量的红、绿、蓝色混合而成,实际上白色中的这三基色成分并不相等,且颜色传感器TCS230对红、绿、蓝三基色的灵敏度也是不同的,这使得TCS230对白色的三基色输出不相同。

因此,在实际颜色检测之前应进行白平衡调整,即先通过对标准白色的测量来确定对红、绿、蓝基色的3个调整参数,以使得TCS230对白色中三基色的测量相等,如此确定的调整参数即可用来对实际测量值进行标定。

白平衡后由KEY键启动颜色识别过程,其流程如图5所示,在分别测得相应入射光R、G、B分量的3个频率计数值后进行标定数据处理,继而通过预设的颜色数据表进行颜色匹配识别。

 

软件设计流程图

图4颜色辨别仪系统软件的主程序结构

但由于没有单片机的开发板以及水平和时间的限制,我们并没有能将详细的系统程序写出来,仅仅画出了系统框图,今后我们需要在这一方面多下工夫。

结果处理与校正

颜色的测量准确度受很多因素的影响,如照明光谱特征及光源方位、物体的发射特性、观测位置、及传感器光谱响应性能等,测量过程中的环境因素变化也会造成测量误差。

在本设计中要求被测纸张是不透明的(若透光性比较好,可以在纸张后面加一张不透明标准白板),且辅助光源与有色纸成45度角,探测器与纸张相距30CM左右,且垂直于有色纸,这样才能保证测量的精度。

在系统实际使用前还需要对系统进行校正,由于没有把实物制作出来,我们没法对系统进行检测校正,我们仅仅写出了校正及检测的方法。

可以将误差作为一个整体考虑,对整个系统先用颜色校正中常用的标准24色卡(ColorChecker色卡),对其中每一种颜色的RGB进行测量得到一个3*24的矩阵M,而24色的标准数据RGB也是已知的,也可构成一个3*24的矩阵S,由此可以求出校正矩阵C,由下式可以到

S=CM,即C=SM-1

然后使用C矩阵在系统中对TCS230的实测颜色值进行校正处理,从而提高了系统对颜色的识别精度。

系统存在的问题及改进

这样的设计还是有很多地方是可以改进的,比如我们在设计中没有考虑系统的供电和功耗问题,另外SPECE061A还支持语音输出,可以在系统中再加装语音输出模块,但这就需要额外的储存空间,需要外接大容量的Flash或者EPROM,但作为系统的扩展是可行的,并且充分利用了SPECE061A的功能。

当然,从成本的考虑上,我们也可选择更常见的更便宜的单片机MSC-51,在显示模块,我们也可以选择成本更低的64*16点阵不带字库的显示器,只是这样增加了设计的难度,时间上也不允许。

 

题目三:

能快速测温的体温计

 

设计要求

能够方便婴幼儿使用,价格合适的快速体温计。

测温时间小于30s,误差小于±0.2℃。

题目分析

温度计的使用对象是婴儿,这要求我们在选择设计方案时要考虑婴儿的特点:

好动,没有意识,对材料敏感度高等等。

即测量方式上要注意婴儿的特点,其次是温度计的测量时间(<30s)和测量精度(0.2℃),同时我们还得考虑温度计的一般特点:

便携、使用方便、操作简单、成本低廉等。

设计方案

和前面一道题一样,我们首先给出系统的基本实现框图如下:

由于每一模块都有很多可实现的方案,我们对每一模块进行分析。

对于温度检测部分我们通过查阅资料总结出以下几个方案:

方案一:

采用热电偶,热电偶由两个焊接在一起的异金属导线所组成。

热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。

通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。

热电偶的优点是工作温度范围非常宽,且体积小。

但是,它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点。

方案二:

采用NTC,热敏电阻是利用半导体材料的电阻率随温度变化而变化的性质制成的,是低成本温度传感器,是线性最差的温度传感器,通常将两个热敏电阻组合起来使用,以使输出具有较好的线性。

热敏电阻可靠性差、测量精度准确度低,且必须经过专门的接口电路转换成数字信号后才能由微处理器进行处理。

普通的热敏电阻可在有限的工作温度范围内呈现出上佳的稳定性、而在较宽的温度范围内工作时则表现出中等水平的稳定性。

方案三:

采用单线数字温度传感器。

例如DS18B20,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号进行处理,而且每片DS18B20都有唯一的产品号并可存入其ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个这样的芯片。

从DS18B20芯片读出或写入信息仅需一根端口线,其读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS18B20供电,而无需额外电源。

此外DS18B20还能够提供9位温度读数。

方案四采用红外温度传感器。

红外传感器是红外体温计的关键部件,它是由温差热电堆和热敏电阻两部分构成的。

热电堆是用半导体集成电路工艺和微机械子工艺制造的,它可以等效为多个热电偶串联组成的。

而热电偶是由两种电子密度不同的导体相连接组成的。

热电偶有冷热两个端点。

在测量物体温度时,热端与被测物体接触,冷端与测量仪表接触。

热电偶的同种导体上会因为存在温度剃度而产生一种电动势,两种金属的连接处会因为电子密度差而产生另一种电动势,所以在热电偶的两端会产生温差电动势在红外传感器热电堆的热端贴有热量吸收器,它用来吸收被测物体辐射的红外线并转化为热能。

通过热电堆把辐射红外线的功率转化为电信号进行测量。

红外传感器的内部示意图如下所示:

 

从检测部分得到的信号很微弱,因此需要进行信号放大。

对于信号处理部分同样也有很多方案,常用的高精度放大电路有许多,在此我们仅列出一种用OPA2111和INA106组合做成放大电路,如下图所示:

INA106

OPA2111

假定运算放大器均为理想的,电路分析下:

设流过

的电流为

,则

于是:

对于INA106:

将3端接地,则输出

将2端接地,则输出:

根据叠加定理,有:

调节R7,R5,R1,R2,R3的值就可以调节放大倍数。

其中OPA2111(左)和INA106(右)管脚图如下:

对于数据处理部分我们有这样两种方案:

如果温度检测部分能够直接输出数字量,我们就将其直接接到单片机上进行数据处理;如果温度检测部分的输出量是模拟量,我们就必须进行信号的放大,滤波,然后进行模数转换后送到单片机里进行处理。

对于最后的LCD显示模块,由于系统最终的显示结果仅仅是数字,那么我们着重考虑的就是成本问题了,几个简单的数码管加上译码器就可以解决系统的输出

方案比较以及最后方案的确定

从温度检测的四个方案来看,我们可以将体温计分成接触式和非接触式,显然使用前三种方法来检测的体温计是接触式的,它们必须与人体的某些部位接触较长时间才能比较准确的测量出人体的体温,但是题目要求方便婴幼儿使用,考虑到婴儿的好动性以及对材料的敏感性,我们在温度检测方面使用第四种方案,也就是红外温度传感器检测温度,这是一种非接触式的温度检测方法,测量时间短,一般在数秒内就能显示结果,这种方案非常符合题目方便婴幼儿使用的要求,而且成本较前三种方案也没有明显的偏高。

而在数据处理方面,由于温度传感器输出的都是模拟量,我们需要进行一定的信号放大,滤波以及模数转换,再考虑到体温计需要的测量范围并不是很宽,温度传感器的测量精度完全能符合要求,我们采用PerklinElmerOptoelectronics的TPS334红外传感器,此红外传感器有两路输出,分别是热电堆输出端和热敏电阻输出端,两个端口输出的都是电压信号,其中热电堆输出端的电压信号反应热电偶冷热两端的温度差,也就是被测物体与热电堆冷端温度差,热敏电阻输出端的电信号反应的是环境温度,也就是热电堆冷端温度差,我们将这两路电信号送到ADC中,然后送到单片机中,经单片机查表分别得出热电堆的两端温差和环境温度,将两值相加就得到了物体真实的温度,然后我们把结果通过LED输出。

ADC我们选用CIRRUSLOGIC公司生产的CS5521/23(如右图),它是一款16位高精度串行A/D芯片。

该芯片内集成了一个仪表放大器、一个可编程增益放大器、多路开关、数字滤波器、自校正和系统校正电路。

通过简单的串行连接,CS5521/23便可放方便地由MCU控制,以实现多通道高精度的A/D转换,简化了放大电路,而且价格低廉,节省了设计成本。

单片机我们选用的是TI公司生产的MSP430(右下图)系列单片机。

MSP430系列是一个16位的、具有精简指令集的、超低功耗的混合型单片机,具有Flash存储器,在系统设计、开发调试及实际应用上都表现出较明显的优点。

具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125ns。

这些特点保证了可编制出高效率的源程序。

MSP430系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。

当系统处于省电的备用状态时,用中断请求将它唤醒只用6us。

经数字化的温度信号,送到单片机进行查表处理。

对于红外体温计,其对温度的刻度要求就会降低,因为它的测量范围只是很小的一段,从35~42摄氏度。

在这么小的范围内,就不需要复杂公式进行计算或刻度。

只需要把传感器的输出电压看为是人体与环境的温差函数而不考虑被测物体和环境的具体温度值。

通过单片机查表就可以得知被测物体与环境的温度差,再与热敏电阻测得的环境温度相加就可以得出被测物体的温度。

这就是单片机处理数据的基本算法。

我们写出了系统的软件实现框图,但限于时间和能力,我们并没有给出具体的程序。

流程图如下:

在显示方面,我们给出MSP430驱动LCD显示的一个例子:

在驱动电路中,液晶可以等效为电容。

两个电极分别为公共极与段极。

公共极由CMOn信号驱动,段极由SEGn信号驱动。

由此可以得到4种驱动方法。

(1)静态驱动:

使用一个引脚作为液晶公共端COM0,而每一段段极需要另一个引脚驱动。

(2)2MUX驱动:

使用两个引脚作为液晶公共端COM0、COM1每两段段极需要另一引脚驱动。

(3)3MUX驱动:

使用三个引脚作为液晶公共端COM0、COM1、COM2,每3段段极需要另一引脚驱动。

(4)4MUX驱动:

使用4个引脚作为液晶公共端COM0、COM1、COM2,每4段段极需要另一引脚驱动。

MSP430对液晶的驱动主要是通过液晶模块的寄存器LCDCTL和LCDMx来实现。

而驱动能力的不同也就是LCDMx寄存器的数量不同。

显示缓存器LCDMx

越多,缓存越大,显示的内容就越多。

MSP430F413集成了96段液晶驱动器,具有较强的显示功能。

但由于目前我们对接口电路的知识非常有限,没有把最终的LCD的接口电路给出。

 

最后是对系统的调试校正,由于我们没有将实物做出,我们没有在这一方面进行考虑。

从这两个小小的系统设计中可以看出我们团队身上所欠缺的还很多,单片机方面的知识近乎于空白,对电子设计中常用到的一些元件、方法思路还不是很了解,系统编程方面的能力也有待提高,但不可否认我们团队存在着巨大的优势和潜力,我们团队学习能力都很强,大家对电子设计都很感兴趣,都有很强的动手能力,相信通过以后的培训再加上我们自己的努力,我们各方面的知识都能够补充完整,各方面的能力都会有所提高,一定能够在比赛中取得令人满意的成绩。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1