TCS230颜色传感器原理和应用编程.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCS230颜色传感器原理和应用编程

TCS230颜色传感器 1 . 颜色传感器原理 TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管。这些二极管共分为四种类型。其中16个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16个光电二极管带有蓝色滤波器;其余16个不带有任何滤波器,可以透过全部的光信息。这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。工作时,通过两个可编程的引脚来动态选择所需要的滤波器。该传感器的典型输出频率范围从2 Hz~500 kHz,用户还可以通过两个可编程引脚来选择100%、20%或2%的输出比例因子,或电源关断模式。输出比例因子使传感器的输出能够适应不同的测量范围,提高了它的适应能力。例如,当使用低速的频率计数器时,就可以选择小的定标值,使TCS230的输出频率和计数器相匹配。 2. 引脚图及其控制与功能 a. 实物图 (芯片的4引脚延伸进去这是区分引脚的标志。) b. 引脚编程设置及其功能 1. 输出频率分频选择 S0 S1 输出频率分频比例 L L 掉电 L H 2% H L 20% H H 100%  2. 滤光颜色选择 S2 S3  HYPERLINK /elec_article/6 \t _blank 光电二极管类型 L L 红色 L H 蓝色 H L 清除(无滤波器) H H 绿色  3. 测量频率的方法 (1) 依次选通三种颜色的滤波器,然后对TCS230的输出脉冲依次进行计数。当计数到250时停止计数,分别计算每个通道所用的时间。这些时间对应于实际测试时TCS230每种滤波器所采用的时间基准,通过串口观察。在这段时间内所测得的脉冲数就是所对应的R、G和B的值。(实际测得的是一个范围的值) (2) 设置定时器为一固定时间(例如10 ms),然后选通三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。 4. 注意的问题 (1)电源线必须采用0.01μF~0.1μF的电容退耦,且电容应尽可能靠近芯片。 (2) 芯片的OE引脚和GND引脚之间需采用低阻抗连接,以提高抗噪声能力。 (3)芯片的输出设计为短距离驱动标准TTL 或CMOS逻辑输入电平。若输出线超过12英寸,则建议使用缓冲器或线驱动器。 (4)TCS230识别模块重启、更换光源等情况时,都需要进行白平衡调整。 简单的测试程序如下: #includereg52.h #define uchar unsigned char #define uint unsigned int sbit S0=P1^0; //S0,S1为设置输出的占空比 sbit S1=P1^1; sbit S2=P1^3; //S2,S3为设置虑光的模式 sbit S3=P1^4; sbit OE=P1^2; //使能 void RS232_init() { TMOD=0X20; //定时器1工作在方式1 SCON=0x50; PCON=0X80; // TH1=TL1=0XFF;//22.1184M晶振,波特率设置为115200 TR1=1; TI=0; RI=0; } void send_char(uchar a) //发送数据 { SBUF=a; while(TI==0); TI=0; } uchar get_char() //接收数据 { while(RI==0); RI=0; return SBUF; } uint color_display(uchar m) { uint time,a; a=m; TMOD=0x61; //计数器1,定时器0工作在16位方式 TH0=TL0=0; //从零开始计数,定时 TH1=TL1=0; S0=1; S1=1; S2=m0x01; S3=m0x02; OE=0; TR0=TR1=1; while(TL1250); TR1=TR0=0; OE=1; time=TH0*256+TL0; return(time); } void main() { uint temp; RS232_init()

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档