颜色传感器TCS230及颜色识别电路(转)

本文介绍了TCS230传感器的工作原理、特点,以及在颜色识别中的应用,包括白平衡调整和颜色识别电路设计,适用于嵌入式和移动开发领域的颜色检测。
摘要由CSDN通过智能技术生成

摘要

  TCS230是美国TAOS公司生产的一种可编程彩色光到频率的传感器。该传感器具有分辨率高、可编程的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。文中主要介绍TCS230的原理和应用,以及色光和白平衡的知识,并用一个实例说明TCS230识别颜色的过程。
关键词 TCS23 0颜色传感器 颜色识别 白平衡调整

引言

  随着现代工业生产向高速化、自动化方向的发展,生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。例如:图书馆使用颜色区分对文献进行分类,能够极大地提高排架管理和统计等工作;在包装行业,产品包装利用不同的颜色或装潢来表示其不同的性质或用途。目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、篮滤光片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个A/D电路进行采样,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。TAOS(Texas Advanced Optoelectronic Solutions)公司最新推出的颜色传感器TCS230,不仅能够实现颜色的识别与检测,与以前的颜色传感器相比,还具有许多优良的新特性。

1  TCS230芯片的结构框图与特点

  TCS230是TAOS公司推出的可编程彩色光到频率的转换器。它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器。TCS230的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接。由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单。图1是TCS230的引脚和功能框图。

  图1中,TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管。这些二极管共分为四种类型。其中16个光电二极管带有红色

#include //包含头文件,这个嘛,就不用多说了~~ #include "L1602.h" //#define hong 10000 //out接p3.5 sbit tcs230_en=P1^0; sbit tcs230_s2=P1^1; sbit tcs230_s3=P1^2; uint ryz,gyz,byz; uint rb,gb,bb; //白平衡子程序 void celiang() { //*********求R值************************************ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;//选择红色滤tcs230_en=0; TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; rb=(unsigned long)(TH1*256+TL1)*255/ryz; if(rb>255)rb=255;//判断RGB值是否合法 //***********求B值************************************** TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=1;//选择蓝色滤器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; bb=(unsigned long)(TH1*256+TL1)*255/byz; if(bb>255)bb=255;//判断RGB值是否合法 //***********求G值************************************** TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=1; tcs230_s3=1;//选择绿色滤器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; tcs230_en=1; gb=(unsigned long)(TH1*256+TL1)*255/gyz; if(gb>255)gb=255;//判断RGB值是否合法 } //****************************************************** //白平衡子程序 void baipingheng() { //**************求取红色因子*********************** TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;//选择红色滤tcs230_en=0; TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; ryz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1) //**************求取蓝色因子*********************** TH0=(65536-10000)/256; TL0=(65536-10000)%256;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值