2012_中国教育机器人大赛教育机器人创意设计项目报告书.doc_第1页
2012_中国教育机器人大赛教育机器人创意设计项目报告书.doc_第2页
2012_中国教育机器人大赛教育机器人创意设计项目报告书.doc_第3页
2012_中国教育机器人大赛教育机器人创意设计项目报告书.doc_第4页
2012_中国教育机器人大赛教育机器人创意设计项目报告书.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012 中国教育机器人大赛教育机器人创意设计项目报告书项目名称:无线协作搬运机器人 学 校: 院 系: 专 业: 学生姓名: 指导教师: 时 间:2012年11月20日 目录1.设计任务与要求.12.方案设计与论证.13.硬件单元电路设计.23.1主控制电路.23.2 循迹电路.33.3 电源模块.43.4 最小系统原理图.43.5物块颜色识别传感器.43.6无线通信传感器.44.安装与调试.54.1 电路的安装.54.2 电路的调试.54.3 软件的调试.55. 性能测试与分析.55.1 循迹模块.55.2 tcs3200颜色传感器.55.3 nrf905通信模块无线通信.56.结论与心得.67.致谢.68.参考文献.69. 程序清单.69.1 无线通信部分.69.2 颜色传感器部分.159.3 主程序部分.19 9.3.1 机器人a主程序.19 9.3.2 机器人b主程序.39 摘要:目前,随着现代传感器技术、自动控制技术以及网络通信技术的不断提高和完善,机器人技术的发展更加趋于自动化和智能化。机器人爱好者藉此趋势设计了各种各具风格的机器人。本设计以两个机器人为主体,这两个机器人通过相互协作,以推的方式进行物体的搬运并将不同颜色的物体加以分类。通过无线通信控制搬运过程。该设计是以at89s52为系统核心,结合trc5000寻迹模块、nrf905无线通信模块和tcs3200颜色传感器模块,综合了运用机器人技术、现代传感器技术,自动控制技术。关键词:无线搬运、机器人、tcs3200颜色传感器、nrf905无线通信模块611 设计任务与要求设计两个智能搬运机器人,由两个搬运机器人在一类似蜘蛛网的循迹图里交替搜寻物块,让机器人识别出物块的颜色,并将物块搬运至对应的物体存放区,如果正在搬运物块的那个机器人发现有另一个搬运机器人占用了它的行走路线,它就会马上通知另一个搬运机器人为它让路,当该机器人把物体搬运到目的地后,它就会通知另一个机器人搜寻物体,如此循环,直到把所有物体搬运完。实物图如下图所示: 图1-1 搬运路线图 图1-2 机器人实物图2 方案设计与论证方案一:通过51单片机外接nrf905无线模块实现,这种51单片机非常普遍,主要运用于小的系统,但是如果要处理比较复杂的任务就会非常吃力,51单片机是我们学习编程入门很好的工具,操作简单方便。方案二:采用cc2510无线单片机来实现任务,cc2510是一种低成本的无线soc,也是为低功耗无线应用而设计。其工作在2.4ghz频段,此芯片包含标准的增强型8051mcu和一个收发芯片。其通信更是其最大优点但本设计中没有很复杂的功能要实现,cc2510操作起来比较难,并且cc2510外接的可控io端口数量较少,不能满足我们的设计需求。方案论证:通过以上比较,对于通过用51单片机外接nrf905无线模块实现明显足以满足我们的设计要求。综合以上论述,我们选择方案一。3 硬件单元设计3.1 主控制电路以采用plcc封装at89s52单片机作为主控制器,at89s52单片机是靠程序运行的,并且可以修改。8051 cpu与mcs-51 兼容,全静态工作:0hz-24khz,4k字节可编程flash存储器(寿命:1000写/擦循环),三级程序存储器保密锁定,128*8位内部ram,32条可编程i/o线,两个16位定时器6个中断源,可编程串行通道 ,低功耗的闲置和掉电模式,片内振荡器和时钟电路。此控制芯片资源丰富,但价格比较贵,尽管它可以实现各种复杂的逻辑功能,功耗小,在此非常适合,外围接无线模块进行控制机器人的搬运。3.2 循迹电路循迹电路如图所示: 图3-2-1 寻迹电路图3-2-2 循迹电路pcb图我们用的循迹模块是用贴片元件来制作,类似工业制板,制作设备由学校提供。该制作过程大大提高了我们的制板技能和焊接技术。我们用到的红外传感器是tcr5000红外对管,传感器的红外发射三极管不断发射红外线,当发射出的红外线没有被反射回来或者被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;被监测物体出现在监测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。tcrt5000光电传感器模块是基于tcrt5000红外关电传感器设计的一款红外反射式光电开关,传感器采用高发射功率红外光电二极管和高灵敏度光晶体管组成,输出信号经施密特电路整形,稳定可靠。3.3 电源模块电源电路图如图3-4-1所示: 图3-3 电源部分电路图该稳压电路主要实现5v(供给控制芯片及其它模块)、6v(供给舵机)和3.3v(nrf905无线模块需要3.3v的电压)稳压,采用lm7805、lm7806和lm1117芯片作为稳压芯片。这些稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管,to- 220 的标准封装,也有lm9013样子的to-92封。用7805、7806和1117来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠方便,而且价格便。3.4 at89s52最小系统原理图 图3-4 单片机最小系统3.5 物块颜色识别传感器根据德国物理学家赫姆霍兹的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。通过颜色传感器测出构成各种颜色的三原色的值,就能知道物体的颜色。以前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、蓝滤波片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个a/d电路进行采集,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。这里我们选择taos公司推出的可编程彩色光到频率的转换器tcs3200颜色传感器来识别物块颜色。它的输出信号时数字量,因此它能直接与微处理器或逻辑电路相连接,这使得组成电路变得简单。它与测试物体的最佳位置大约为1厘米。tcs3200的引脚图如下:图3-5 tcs3200引脚图3.5 无线通信模块方案一:选择nrf2401无线模块。nrf2401内置地址解码器、先进先出堆栈区、调解处理器、时钟处理器、gfsk滤波器、低噪声放大器、频率合成器、功能放大器等功能模块,它具有收发模式、配置模式、空闲模式和关机模式,需要很少的外围元件,且工作时能耗低(工作电流仅几十毫安,待机模式下电流为十几微安),内部有内置天线,使用方便。但市场价格比较贵。方案二:选择nrf905无线模块。nrf905单片无线收发器是挪威nordic公司推出的单片射频发射芯片,工作于433/868/915mhz个ism频道,芯片内置频率合成器、功率放大器、晶体振荡器和调制调解器等功能模块,它具有多个通讯频道,满足多点通讯、分组跳频等应用需求,通道切换时间短(小于6us),能进入关机模式和空闲模式,使用起来节能方便,且价格便宜。综上所述,根据本设计的需求,nrf905无线模块已能满足我们的设计需求。4 安装与调试4.1 电路的安装与调试做好循迹模块,并调好循迹传感器的灵敏度。在制作模块的过程中,焊接贴片元件时不要出现虚焊、漏焊等,因为一旦出现电路出问题,虚焊是比较难查找的。还要注意元件的位置要对应,极性不要接反。电路板做好后,就可以把循迹模块安装在机器人上了,安装过程中要注意传感器与水平地面的距离(距离一般在1cm左右),连接时要注意每个红外对管对应输出接口的位置,以免机器人运行出错。接下来把其他模块安装好。安装颜色传感器时,要把它牢牢的固定在它所能检测到物体颜色的特定位置(注意:它与检测物体的最佳距离大约为1厘米)。4.3 软件的调试5 性能测试与分析5.1 循迹模块让机器人在行走轨迹上运行,机器人反应灵敏,能稳定的按照特定轨迹行走,这说明循迹模块性能稳定。如果出现机器人跑出轨道的现象,这可能是因为循迹模块灵敏度未调到最佳状态,也可能是因为传感器距离水平地面过低或过高,还可能是因为提供的电压过低等因素造成。5.2 颜色传感器在调试程序的过程中,当机器人接触到物块时,机器人很快就能识别出物块颜色,并立即将物块运至物体所属区域。5.3 nrf905无线通信模块正确将nrf905无线模块安装在机器人上,下载程序,让两个机器人进行交替搬运,当一个机器人搬运一个物块到达目的地后,就通知另一个机器人去搜寻要搬运的物块,调试过程中,机器人之间通信正常。如果出现通信问题,这可能是因为收发频率或收发地址不一致造成的。在应用过程中需求注意的问题:一定要把接收天线接上,以免通信不稳定;提供的电压不能超过3.6伏,否则会烧坏该模块。 6 结论与心得通过我们小组三人的共同努力,制作完成了搬运群机器人,特色鲜明,较好的完成了预期的目标。而且通过沟通交流讨论尽可能的增加了作品设计的创新功能,在整个过程中,我们在机器人设计和程序编写方面获得了很多经验,同时也了解到团队精神的重要性。通过备战这次中国教育机器人大赛创意设计和制作比赛,极大的锻炼了我们的动手能力,通过将软件开发,电路设计,网络通信,自动化控制,电子技术等多个学科融合在一起,做出令自己满意的作品,很有成就感,通过这次活动,让我明白不管做什么,只要努力了就会有收获。作为一名大学在校本科生,除了学习理论知识要,还要勤于动手实践,培养自己的创新能力,动手能力,从而提升自己的综合实力,为投入社会,为社会创造价值做好准备。7 致谢衷心感谢河池学院的领导和同学们,本次参赛是河池学院派遣学生参加全国机器人大赛,受到了全院领导和同学们的大力支持,在此一并表示感谢,在今后的日子里,我们会再接再厉,拿出更好的作品出来与大家一起分享。衷心感谢我的指导老师,在项目期间,他给予了众多宝贵的经验,给我们的研制工作提供了很多硬件设备和指导,在此表示感谢。同时也感谢辛勤培育我们的老师!提供创新实验室让我们学习,营造了温馨的第二课堂的氛围。让我们学到了知识能够飞翔于广阔的天际。8 参考文献1康华光,邹寿彬.电子技术基础(数字部分)m.高等教育出版社,20022童诗白,华成英.模拟电子技术基础m.清华大学出版社,20063吴线.实战微功耗simplici ti无线网络.出版地:电子产品世界,出版年2009.092011.10.29./article/97727.htm9 程序清单9.1无线通信部分/-#define uint unsigned int #define uchar unsigned charuchar wuxian = 0; / 无线发送、接收标志位/-led显示端口- sbit led=p27; uchar wx_jieshou = 0;uchar wx_fasong = 0;/*函数声明*/void txpacket(uchar *txrxbuf,uchar n) ;void spiwrite(unsigned char send);void nrf905_delay(int n); unsigned char spiread(void);void nrf905init(void);void config905(void);void settxmode(void) ;void txpacket(uchar *txrxbuf,uchar n) ;void rxpacket(void) ;void rx(void) ;void clear(void); /清空接收数组unsigned char checkdr(void); /检查是否有新数据传入 data /-#define byte_bit0 0x01#define byte_bit1 0x02#define byte_bit2 0x04 #define byte_bit3 0x08 #define byte_bit4 0x10 #define byte_bit5 0x20 #define byte_bit6 0x40#define byte_bit7 0x80 /-bdata unsigned char data_buf;/可位寻址的片内ran #define data7 (data_buf&byte_bit7) != 0) #define data0 (data_buf&byte_bit0) != 0) sbit flag =data_buf7;sbit flag1=data_buf0;/- 发送数据缓冲区- #define txrxbuf_len 4 unsigned char txrxbuftxrxbuf_len=0x29,0x30,0x31,0x32; code txaddress4=0xcc,0xcc,0xcc,0xcc; unsigned char tf=0; /-nrf905工作模式控制端口- sbit txen=p33;/发射使能 2 33sbit trx_ce=p34;/发射接收使能 4 34sbit pwr=p32; / 1 32/-nrf905 数据交换端口(spi)- sbit miso=p23;/输出sbit mosi=p22;/输入 sbit sck=p21;/时钟sbit csn=p20;/使能 /-nrf905状态端口- sbit am=p25; sbit dr=p24;sbit cd=p26; /-nrf905控制指令- #define wc 0x00 /写配置寄存?#define rc 0x10 /读配置寄存?#define wtp 0x20 /向tx-payload寄存器写入发送有效数据#define rtp 0x21 /向tx-payload寄存器读取发送有效数据 #define wta 0x22 /向tx-addtess寄存器写入发送地址 #define rta 0x23 /向tx-addtess寄存器读取发送地址 #define rrp 0x24 /从rx-payload寄存器读取接收到的有效数据/-nrf905寄存器配置- unsigned char idata rfconf11=0x00, /配置命令/0x4c, /ch_no,配置频段在430mhz字节0,配置频段0x0c, /输出功率为10db,不重发,节电为正常模式 字节1,000 11000x44, /地址宽度设置,为4字节字节2,6:4 是tx地址宽度, 2:0是rx地址宽度0x04,0x04, /接收发送有效数据长度为4字节字节3(rx),字节(tx):可设置为1,2,4,8,16,32 字节,其中6,7 两位为空,写00,则4字节为:0000 0100 : 0x04 依次类推0xcc,0xcc,0xcc,0xcc, /接收地址字节5到字节8 0x58, /crc充许,8位crc校验,外部时钟信号不使能,16m晶振 字节9,;/=延时= void nrf905_delay(int n)uchar i;while(n-) for(i=0;i80;i+); /=spi读函数= /步骤一:miso线准备好需要发送的数据位/步骤二:sck置高,主机读取miso线上的数据 /步骤三:sck置低,准备接收数据的下一位 / 以上步骤循环执行8次,通过spi从器件上读取数据完成/数据传送时候。高位在前,低位在后。unsigned char spiread(void) unsigned char j;for (j=0;j8;j+) data_buf=data_buf1; sck=1; if (miso)/读取最高位,保存至最末尾,通过左移位完成整个字节 data_buf|=byte_bit0; else data_buf&=byte_bit0; sck=0; return data_buf; /=spi写函数= /步骤一:mosi线准备好需要发送的数据位/步骤二:sck置高,器件读取mosi线上的数据/步骤三:sck置低,准备发送数据的下一位/以上步骤循环执行8次,通过spi从器件上发送数据完成/数据传送时候。低位在前,高位在后。void spiwrite(unsigned char send) unsigned char i; data_buf=send; for (i=0;i8;i+) if (data7)/总是发送最高位 mosi=1;/spi输入,主机写操作 else mosi=0; sck=1; data_buf=data_buf1; sck=0; /-初始化nrf905-void nrf905init(void) csn=1;/ spi disable sck=0;/ spi clock line init low dr=1;/ init dr for input am=1;/ init am for inputcd=1;/ init cd for input pwr=1;/ nrf905 power on trx_ce=0;/ set nrf905 in standby mode txen=0;/ set radio in rx mode /-初始化寄存器- /步骤一:csn置低电平,spi接口开始等待第一条命令/步骤二:调用spiwrite函数,向nrf905发送wc指令,准备写入配置信息/步骤三:反复调用spiwrite函数,向器件配置寄存器写入配置信息 /步骤四:csn置高电平,结束spi通讯。即nrf905配置完成!void config905(void) uchar i; csn=0;/ csn片选信号,spi使能/spiwrite(wc);/ 向905芯片写配置命令 for (i=0;i=650us) /步骤一:trx_ce=0;必须将次引脚置低,使905进入standby模式 /步骤二:发送rrp指令 /步骤三:循环调用spiwrite函数,读取接收到的数据 /步骤四:等待dr和am引脚复位为低电平 / am 地址匹配,接收到有效地址,被置高 / dr 接收到有效数据包,并解码后,被置高,当所有有效数据被读取后,/ nrf905降am和dr置低,最后需要注意的是,必须首先设置器件的 / 发送/接收模式才能保证有效的数据发生接收 /-设置nrf905进入接收模式- void setrxmode(void) txen=0; trx_ce=1; nrf905_delay(1); / nrf905_delay for mode change(=650us) /-发送数据打包-/步骤一:通过spiwrite函数发送wtp命令,准备写入tx有效数据 /步骤二:循环调用spiwrite向tx-payload寄存器写入有效数据(中间必须夹有csn电平变化/步骤三:延时 /步骤四: 通过spiwrite函数发送wta命令,准备写入tx地址 /步骤五:循环调用spiwrite向tx-address寄存器写入tx地址 /步骤六:trc_ce=1;开始发送数据,延时,nrf905数据发送完成/当nrf905接收到一条完成的信息时,会将dr引脚置高。void txpacket(uchar *txrxbuf,uchar n) uchar i;txrxbuf0=n; nrf905init(); /初始化config905(); settxmode();/config905(); csn=0; spiwrite(wtp);/ write payload command for (i=0;i4;i+) spiwrite(txrxbufi);/ 写入32直接发送数据 csn=1; nrf905_delay(1);/ 关闭spi,保存写入的数据csn=0;/ spi使能,保存写入的数据 spiwrite(wta);/ 写数据至地址寄存器for (i=0;i4;i+)/ 写入四字节地址 写入与对方地址一样的地址 spiwrite(txaddressi); csn=1;/ 关闭spi trx_ce=1;/ 进入发送模式,启动射频发送 nrf905_delay(1);/进入shockburst发送模式后,芯片保存数据 trx_ce=0;/ 发送完成后返回atandby模式while (dr!=1);nrf905_delay(10);led=0; nrf905_delay(300);led=1;nrf905_delay(300);/发送后led闪烁 /-判断数据接收状态- unsigned char checkdr(void)/检查是否有新数据传入 data dr=1; /通过对端口写1,可以使端口为输入状态,这51的 特性。不熟悉者可以参阅51相关书籍作证(将dr端口设置为输入状态。) if (dr=1) dr=0; return 1; else return 0; /-nrf905接收到数据后读取保存-void rxpacket(void) uchar i; nrf905_delay(1);/trx_ce=0;/ 设置905进入待机模式 nrf905_delay(100); trx_ce=0; csn=0;/ 使能spi nrf905_delay(1); spiwrite(rrp); /准备读取接收到的数据for (i = 0 ;i 4 ;i+) txrxbufi=spiread();/ 通过spi接口从905芯片读取数据 csn=1;/禁用spi nrf905_delay(10); trx_ce=1; /-void clear(void) /清空接收数组uchar i;for(i=0;i4;i+)txrxbufi=0; /-数据接收- void rx(void) clear(); /清空接收数组nrf905init(); /初始化config905();tf=0;setrxmode(); / 设置为接收模式 while (tf=0) if(dr)nrf905_delay(10); rxpacket(); if(txrxbuf1=0x30) switch (txrxbuf0) case 1: wx_jieshou = 1; break; case 2: wx_jieshou = 2; break; case 3: wx_jieshou = 3; break; led=0;nrf905_delay(300); led=1;nrf905_delay(300);/接收到数据 后闪烁 tf=1;dr=0; 9.2 颜色传感器部分#include #define uchar unsigned char#define uint unsigned intsbit tcs230_s2=p16;/tcs230 s2接单片机p1.0sbit tcs230_s3=p17;/tcs230 s3接单片机p1.1sbit tcs230_en=p30; /tcs230 en(e0)接gnduchar flat2 = 0;/颜色传感器函数声明/*=*/void baipingheng();void celiang();void judge_colour(uint rb1,uint gb1,uint bb1);void delayms(uint ms);/1ms基准延时程序void baipingheng();/白平衡子程序void celiang();/实际颜色程序void delayms(uint ms);uint ryz,gyz,byz;/分别定义红色因子 绿色因子 蓝色因子uint rb,gb,bb;/rgb值/*=*/*= 白平衡子程序=*/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(rb255)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(bb255)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(gb255)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; 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; byz=th1*256+tl1;/其实这里的比例因子应该为255/(th1*256+tl1) /*求绿红色因子* 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论