检测作业TCS3200在智能搬运机器人中的运用Word格式文档下载.docx
《检测作业TCS3200在智能搬运机器人中的运用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《检测作业TCS3200在智能搬运机器人中的运用Word格式文档下载.docx(9页珍藏版)》请在冰点文库上搜索。
![检测作业TCS3200在智能搬运机器人中的运用Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/821c92de-2a0d-4805-81d3-36e63378c7ee/821c92de-2a0d-4805-81d3-36e63378c7ee1.gif)
取而代之的是TCS230。
TCS230它对光的动态响应范围大于250,000~1,标准输出频率范围为2Hz~500kHz。
使用者可以对100%、20%、2%或者是动力关闭模块的输出量程进行选择使用。
TCS230在不需要DCs的情况下,给每个彩色通道至少能提供10字节的分辨率。
TCS230可以用于彩色打印机、医疗诊断、LED检测、液体颜色识别、电脑彩色监控标准、颜色产品加工控制、和油漆、纺织品、化装品及打印材料的彩色搭配等颜色检测产品等等,具有着广阔的应用市场。
本文就TCS230在分拣搬运机器人中的应用作一些讲解。
2.解决方案
考虑到机器人的制作成本,算法程序的简易化和稳定化,本次分拣搬运机器人采用TCS230颜色传感器作为检测物块颜色的传感器,用ATmega32单片机对TCS230采集到的信号进行处理,确认物块的颜色,达到分拣搬运机器人的分拣部分操作的目的。
并将TCS230与ATmega32封装在同一块32*29mm的PCB板上,提高线路的稳定性和可靠性。
3.测量原理
TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管。
这些二极管共分为四种类型。
其中16个光电二极管带有红色滤波器;
16个光电二极管带有绿色滤波器;
16个光电二极管带有蓝色滤波器;
其余16个不带有任何滤波器,可以透过全部的光信息。
这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;
另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。
工作时,通过两个可编程的引脚来动态选择所需要的滤波器。
TCS3200的管脚图如图1所示,VCC,GND是信号的电源引脚,为芯片提供工作电源;
OE是频率输出使能引脚,亦可作为片选信号使用;
OUT是芯片的输出引脚,输出频率信号。
S0,S1,S2,S3用于控制传感器工作状态。
其中,S0,S1控制芯片频率输出的比例因子,高低电平的组合风别对应着100%、20%、2%和关闭输出状态,更具表1可知。
S2、S3用于选择滤波器的类型,不同的滤波器对应着不同的光敏感,当入射光作用到芯片上时,TCS3200根据不同的光强和颜色输出不同频率的信号,根据表1可知,当S2,S3为低电平时,芯片输出信号对应红色光强;
当S2,S3为高电平时,芯片输出信号为绿色光强;
当S2为低电平S3为高电平时,芯片输出信号对应蓝色光强;
当S2为高电平S3为低电平时,芯片输出信号对应所有颜色的光强,即芯片将颜色转换为灰度值,根据测量数据,可分析投到
芯片上光的颜色。
图1TCS3200管脚图
表1TCS3200功能配置表
4.颜色检测模块硬件电路
为了让分拣搬运机器人的线路连接更稳定,组装调试更方便和精简机器人自身体积,让机器人更加美观,所以将TCS3200颜色传感器和MCU(ATmega8)封装在同一块PCB板上,集成为一个专门检测颜色的模块,颜色检测部分就由ATmega8单独控制,最终将检测到的三种颜色分别以高电平的形式通过mega8的三个I/O口输出,再将这三个电平信号传送给机器人的主控芯片ATmega32,(即将刚刚mega8输出颜色信号的三个I/O口与maga32的三个I/O口连起来)通过读取mega32的这三个I/O口的电平信号确定前端检测到的颜色信号。
具体的电气连接图见图2。
主要有maga32主控芯片,mega32最小系统,三个电位器,四个用于白光平衡白色高亮LED,TCS3200颜色传感器,纹波滤波电容,上下拉电阻等等。
图2颜色检测模块电路图
图3:
颜色检测模块PCB图
颜色检测模块PCB3D模型图
5.软件部分
软件编程是在AVR专用编译软件ICCV7下用C语言编程的。
关键程序
//..............初始化函数..................//
//....................................................//
voidinit(void)
{TCCR0|=0X05;
//选择T/C0时钟为1024分频,
打开溢出中断,设置为定时模式
TCCR1B|=0X06;
//T/C1配置为计数模式,下降沿驱动
TCNT0=0X64;
//T/C0赋初值,定时20ms
TIMSK|=0X01;
//T/C0溢出中断使能
SREG|=BIT(7);
//全局中断使能
}
//...............T/C0溢出中断函数................//
//..........................................//
voidjishu(void)
{
i--;
if(i==0)
{
TCCR1B=0X00;
//关闭T/C1的计数
TCCR0=0X00;
//关闭T/C0
pinlv=TCNT1L;
//读取计数值
pinlv=TCNT1H*256+pinlv;
TCNT1H=0X00;
//清空计数值
TCNT1L=0X00;
i=5;
//重新赋初值
TCCR0|=0X05;
//重新打开T/C0
//再次开始计数
}
else
return;
//.................AD转换........................
//...............................................
unsignedintget_adc(unsignedcharchannel)//channel变量为选择通道的形参
unsignedintad_result;
ADMUX=ADMUX&
0xc0;
//设定转换通道,数值右对齐
ADMUX=ADMUX|channel;
//选择通道
ADCSRA=0X80;
//开启AD
ADCSRA|=BIT(ADSC);
while(!
(ADCSRA&
(BIT(ADIF))));
//等待转换完成
ad_result=ADCL;
//读取数据
ad_result=ad_result+ADCH*256;
ADCSRA=ADCSRA|0X10;
//完成标志清零
ADCSRA=ADCSRA&
0X3F;
//关闭AD
returnad_result;
//送出转换值
voidmain(void)
{
ucharget=10;
DDRD=0XFF;
DDRC=0XFF;
DDRB=0X00;
PORTC=0X00;
init();
//初始化函数:
中断开始,计数开始
while
(1)
get=jianse();
If(get==0)
{PORTC=0X80;
elseif(get==1)
{PORTC=0X20;
elseif(get==2)
{PORTC=0X40;
\}
else
{PORTC=0X00;
}
6.结论
采用TCS230结合ATmega32可以方便快捷地将物料的颜色检测出来,为机器人分拣提供参考信号,达到分拣的目的。
参考文献:
1.AVR,ATmega32技术手册2503F-AVR-12/03版
2.TAOS,TCS230技术手册