基于单片机的颜色识别及分拣系统设计*

2021-11-15 03:58徐小艳崔雪英
科技与创新 2021年21期
关键词:子程序原理图滤波器

徐小艳,崔雪英

(铜陵学院电气工程学院,安徽 铜陵 244000)

在科技不断提高,企业规模化生产的背景下,自动化迅速成为工农业的主流。在工农业生产的自动化过程中,颜色的识别及分拣在食品、医药、化工等行业都有着重要意义。如制药行业中将不同颜色的药丸分离开、农产品颜色识别确定果实的成熟度等。本文设计了一种以颜色识别传感TS3200 为基础,以51 单片机为核心的颜色识别及分拣系统。

1 系统总体设计

系统是以51 单片机为核心,扩展合适的外围电路,完成了对产品的颜色识别及分拣。其结构框图如图1 所示。

图1 分拣系统结构框图

整个系统以微处理器为中心,包括颜色信息的采集及分拣两大部分。颜色传感器将采集到的颜色信息送入微处理器,微处理器对信息进行运算、处理识别,处理后的颜色识别信息作为输出信号,驱动单片机的执行机构进行相应的分拣操作。整个系统由颜色识别电路模块、直流电机驱动模块、语音播报模块等部分组成。

2 系统硬件设计

系统硬件的微处理器采用89C51,主要由颜色识别电路、分拣电路及语音播报电路三个部分组成。

2.1 颜色识别电路设计

首先系统利用红外线传感器检测需要识别的物品是否准备好,然后通过颜色传感器检测出被分拣物品颜色信息信号,并将信号发送给单片机,单片机通过接收到的信号信息进行相应的分拣操作。

颜色识别选用颜色识别传感器TCS3200,它是一款可编程光到频率的转换器芯片。内部有红、绿、蓝和清除四种滤波器,一块颜色到频率转换芯片TCS3200 RGB 及4 个白色LED 灯。其转换原理是当被测物反射光中红、绿、蓝三色光线分别透过相应滤波器到达TCS3200 RGB 感应芯片时,其内置的振荡器会输出相应方波,方波频率与所感应的光强成正比关系,其OUT 输出信号的频率也与内置振荡器的频率成正比[11]。当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其他的滤波器,就可以得到蓝色光和绿色光的光强,通过这三个值,就可以分析投射到TCS3200 传感器上的光的颜色[12]。此处P1.1、P1.0可用来选择不同的比例因子。P1.4、P1.3 用来选择滤波模式,颜色传感器的频率脉冲输出连接到单片机外中断0 进行脉冲计数。

将OUT 输出信号频率和内置频率的比例因子设好后,将OUT 输出信号频率转换成被测物体的三原色RGB 值,还需要进行白平衡校正来得到RGB 比例因子。使芯片对所检测的“白色”中的三原色时输出的RGB 值相等。经过白平衡后,TSC3200 在控制器中能准确反馈出被测物体的实际颜色。颜色识别电路原理图如图2 所示。

图2 颜色识别电路原理图

2.2 分拣电路设计

物品的分拣系统依据颜色识别的结果来驱动相应的步进电机的转动,这样电机的转动就可以将不同颜色的样本送入相应的区域。这里选用四相八拍电动机28BYJ48。

28BYJ48 原理是将电脉冲变为角位移,当收到一个脉冲,电机就按预定的程序转一个特定角度。单片机引脚输出电流不足以驱动负载,故此处电机驱动采用ULN2003 芯片,它是一个单片高电压、高电流的达林顿晶体管阵列集成电路。单片机的P2.4~P2.7 连接ULN2003 的输入引脚,其输出连接电机的四相线圈,达到驱动电路的目的。其电路如图3 所示。

图3 步进电机驱动电路原理图

2.3 语音播报电路设计

语音播报电路采用语音芯片ISD4004,其工作于SPI 串行接口。当系统得到颜色识别结果时,调用事先存储好的语音模块来播报信息。此时,语音播报信号有效,开始取信号单元地址,后取信号单元内容,再判断是否满足播报条件,如满足则播报,反之则继续取信号单元地址,最后判断是否播报结束。通过对SPI 控制寄存器的设置可以实现录放、录音、信息检索等功能。语音播报电路原理图如图4 所示。

图4 语音播报电路原理图

3 系统软件设计

为了完成颜色识别与分拣的功能,程序设计采用了自上而下的模块化设计,主要由主程序和子程序构成,主程序完成系统的初始化及物品的检测及播报。子程序有颜色识别子程序、分拣子程序和播报子程序等。颜色识别子程序首先完成白平衡调节,确定颜色初值,得出比例因子,然后再对物体颜色进行校准识别,得到RGB 的亮度值。分拣子程序主要完成不同电机驱动程序设计,其相关流程如图5 所示。

图5 主程序流程图

系统初始化不仅包括单片机的初始化,还包括TCS3200、电机驱动及播报芯片等的初始化。系统需对TCS3200 的白平衡、输出比例因子及通信参数等进行初始化。当用TCS3200 颜色识别时,用白平衡后的参数与所测颜色的RGB 的值进行对照调整。参数调整有两种:①选通三种颜色的滤波器对TCS3200 的输出脉冲依次进行计数,当计数到255 时停止计数,分别计算每个通道所用的时间。这些时间作为实际测试时TCS3200 每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的RGB的值。②设置定时器为一固定时间(如10 ms),选通三种滤波器,计算此时间段内TCS3200 的输出脉冲数,从而计算出比例因子,通过这个比例因子可将这些脉冲数变为255[7]。在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的RGB 的值。

此处采用第二种方法进行参数调整,然后对白平衡处理后进行颜色识别,其流程如图6 所示。

图6 颜色识别子程序

4 系统仿真及结果

本设计采用C51 语言进行设计,在keil51 编译器分模块编译仿真,并将系统软件调入protues 软件进行系统仿真,然后利用单片机开发板对颜色识别和分拣电路分别进行硬件仿真调试。实验结果显示,此系统能准确地对红、绿、蓝等颜色进行识别并分拣,并且可以根据市场需求更换电机驱动模块。

猜你喜欢
子程序原理图滤波器
浅谈有源滤波器分析及仿真
基于多模谐振器的超宽带滤波器设计
数控加工中数控程序的简化
子程序在数控车编程中的创新应用
一款用于无线通信系统的小型滤波器天线
基于Protel DXP 2004层次原理图的设计
浅谈电工专业课的现场教学
电子电路识图方法的探究
在数控车床上加工软轴零件
维修电工线路板的接线技巧分析