1 概 述
在当今的社会生活中,颜色识别得到越来越广泛的应用。各个领域的广泛应用需求使颜色识别技术有了长足的发展,结合其他技术,可为工业控制、产品制造等多个行业更好地服务。目前,颜色识别技术主要是通过结构简单、使用方便的单片机来实现,而本设计选用FPGA来实现,该系统可应用于印染、油漆、汽车等行业,也可以装在自动生产线上对产品的颜色进行监测。这样选择的好处有以下几点:
①FPGA芯片是并行运算的,每个振荡周期都可以执行任务,而单片机(如8051系列)的每条指令都需要12个振荡周期。例如,单片机I/O端口的变化最快也需要24个振荡周期,而FPGA只需要2个振荡周期,所以同样的振荡周期下,FPGA速度更快。
②FPGA有丰富的I/O资源(一般有数百个I/O口),容易实现大规模系统,可以方便地连接外设(比如多路A/D、D/A等)。而单片机的I/O口有限,要进行仔细的资源分配、总线隔离。
③FPGA可以进行硬件重构,在功能扩展或性能改善方面也非常容易。
本设计选用了Altera公司的:NioslI软核,使用SOPC的软硬件综合解决方案。与传统的设计方法完全不同,从硬件和软件整体设计上进行了极大的改进,使硬件电路更加简单、有效、易于理解,软件设计更轻松、可移植性更强。
2 设计原理
如图1所示,颜色识别系统主要由模拟和数字两部分组成。模拟部分主要用来转换光电信号、放大信号和滤除噪声。数字部分主要用来对A/D采样进来的数字信号实现中值滤波、查对数表、求对数比,以及显示等操作。
3 模拟部分
3.1 颜色采集模块
本设计中采用的色敏传感器是CLS9032。该传感器有2个垂直连接的PN结,其厚度可以给色敏传感器起到一个光学滤波器的作用。波长较短的光在硅的表面就被吸收了,而波长较长的光到达深一些的位置才会被吸收。基于这种光谱的敏感性,根据光的波长来选择信号(颜色)。使用2个光电二极管之间的对数电流比作为信号处理的方法。不同颜色的光照射时,该色敏传感器红、绿、蓝区3个引脚都会输出电流信号,但是相应颜色的引脚输出的电流信号会比其他引脚输出的电流信号强。利用这种原理能够有效地避免外界环境造成的输出电流的起伏,因此这种器件具有较高的可靠性。
在距离色敏传感器1.5 cm处,分别用红、绿、蓝3种颜色的光源直接照射,检测经过模拟部分处理后的输出电压信号。实际测试数据如表1所列。
3.2 放大模块
图2是模拟部分制成PCB后的实物图。选取了有代表性的红、绿、蓝3种颜色,分别用相应颜色的发光二极管来代表。使颜色识别系统有充足的光线照射,便于探测。
色敏传感器负责把不同颜色的光信号转换成电流信号,但是电流信号只是几十到几百nA的数量级,需要放大电路来放大到所需要的程度。不同颜色产生的微弱电流信号传送到对应的线路通道上,通过以下3级放大,把nA级的电流信号转换成V级的电压信号。具体电路如图3所示。
①第1级是在电流放大的模式下工作,运放选用高精度、低噪声的高精密运放OP177。经过放大的信号大致能达到几十mV。这个幅度的电压还太小,不能输入到数字系统,因此还要对电压信号进行进一步的放大。
②第2级放大为同相的电压放大,选用高精度的集成运放OP07。放大后的电压幅度大致为几百mV,且放大的输出为负。
③第3级放大要采用反相的电压放大,运放同样选用OP07。输出的信号幅度为几伏,能够满足输入数字系统的要求。
3.3 滤波模块
经过放大后的直流信号,因为有噪声的干扰,还有一些毛刺。经过查阅参考文献和实际的实验测试,最终采用20 Hz二阶有源低通滤波器,可以为后面的级联使用提供干净的信号。