移动机器人设计与制作设计(一)——智能循迹小车.docx_第1页
移动机器人设计与制作设计(一)——智能循迹小车.docx_第2页
移动机器人设计与制作设计(一)——智能循迹小车.docx_第3页
移动机器人设计与制作设计(一)——智能循迹小车.docx_第4页
移动机器人设计与制作设计(一)——智能循迹小车.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

开放性实验报告智能循迹小车姓名: 党树林 学号: 06124143 专业:电气工程及其自动化 指导老师: 赵勇 时间:2013.9.17-2013.12.02 15智能循迹小车目录1.系统功能介绍22.设计要求与任务23.系统硬件设计23.1舵机模块23.2数码管计数33.3循迹接收模块33.4避障模块33.5 单片机硬件最小系统34.实验演示结果45.实验总结4附录一41.系统功能介绍本设计采取以单片机为最小系统,小车内部电路结构由舵机模块,数码管计数模块,遥控接收模块,循迹模块、避障这五大部分组成。舵机模块主要是利用脉冲信号控制舵机进行360度旋转。数码管计数模块通过以秒为单位进行计数显示。遥控接收模块通过遥控控制小车进行各个方位的行进。循迹模块主要是小车可以自主沿着黑色的轨迹行进。避障模块当检测到障碍物之后主动改变原来方向,避开障碍物后继续前进。2.设计要求与任务熟悉51系列单片机的使用原理及操作方法。掌握基本电路设计技巧和c程序设计。掌握数码管、舵机等器材的基本使用方法并了解其原理。设计并灵活调试小车的各方面行进功能。3.系统硬件设计3.1舵机模块pwm信号进行控制,获得一个直流偏置压。该输出的pwm波以驱动电机正反转。利用占空比的变化改变舵机的位置。给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。3.2数码管计数数码管分为共阴极和共阳极两种类型,其实共阴极就是将八个led的阴极连在一起,让其接地,这样给任何一个led的另一端高电平,它便能点亮。而共阳极就是将八个led的阳极连在一起。3.3循迹接收模块迅即模块主要通过st188光电传感器,当没有物体反射红外线时,ce之间截止,无电流流过,输出电压为电源电压,高电平。当有物体反射红外线时,be饱和导通ce也就导通了,输出端就相当于接地。输出电压为低电平。设置检测电路,当检测到黑显示输出低电平,否则输出高电平且控制舵机转向,熟悉掌握st188的引脚功能,设计电路3.4避障模块检测距离可以根据要求进行调节。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。前方无障碍输出高电平(1),有障碍输出口(黄色)电平会从高电平变成低电平(0),工作原理已经标在图上了。背面图有一个电位器可以调节障碍的检测距离。3.5 单片机硬件最小系统试验的控制器件是at89c51系列单片机,它在整个实验中起了核心作用,采用内部时钟方式,给它的引脚外接晶振,这样就构成了自激振荡器并在单片机内部产生时钟脉冲信号,给晶振的每个角又接了一个30pf的电容,让晶振快速起振并可以达到12m稳定频率,给单片机的rst口按键开关使之构成复位电路。4.实验演示结果当开启循迹时,小车放在跑道上,打开电源后,沿着跑道行进,在转弯处能根据跑道拐弯等动作前进。开启遥控时,用遥控指挥小车的各个方向运动及停止行走过程。加上避障后,在距离障碍物20厘米左右小车会自动改变方向,避开障碍物后再次沿着原来的方向前进,从而达到集循迹、遥控、避障为一体的智能小车。5.实验总结这次实验完成了循迹遥控避障的功能,我从开始的单片机c程序及相关软件学习到后来的电路设计,在关于实验的学习的过程中,获得一定的实验知识储备。在实验中掌握了一定的知识,也遇到了问题:比如避障模块,当遇到障碍物时,小车回多转动360度后才能沿着原来的方向继续前进,我认为应该是c程序定义之间有冲突,导致运行时发生混淆,从而使显示发生错误。经过反复试验和努力到目前为止也没能解决这个问题,所以只能在以后的时间继续进行思索和改进。在实际实验中才发现,理论和实际有一定的差距,所以在实际中要不断理解深入,只有进行实际的操作才能切实掌握知识的精华和作用所在,并巩固自己的理论知识,在解决问题中深化自己。附录一循迹遥控代码#include #define uchar unsigned char#define uint unsigned intvoid delay1(int ms);void delay2(uchar x);sbit left=p10;/左舵机控制信号sbit p1_1=p11; /工作指示灯 sbit right=p12;/右舵机控制信号sbit left_s=p13;/左传感器信号sbit middle_s=p14;/中传感器信号sbit right_s=p15;/右传感器信号sbit eye=p35;/红外接近传感器信号sbit in1=p24;sbit in2=p25;sbit in3=p26;sbit ge_w = p22;sbit shi_w = p21;sbit bai_w = p23; uint a=2700,c=0;/舵机信号变量uint count=0,flag = 0, ge , shi, bai,num;/计时变量uchar ircom7;uchar code number=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f; /数码管编码表void delay(uint a)uchar x;uint y;for(y=a;y0;y-)for(x=110;x0;x-);void delay(void)/舵机控制延时函数 uint t=2222; while(t-) void time1() interrupt 3/定时器t1中断 th1=(65536-50000)/256; tl1=(65536-50000)%256;/50ms flag+;if(flag=20)flag = 0;num+;if(num=1000)num = 0;ge = num%10;shi = num/10%10;bai = num/100; void display(uchar ge,uchar shi,uchar bai)/数码管显示函数shi_w = 0;p0 = numbershi;delay(5);/p0 = 0x00;shi_w = 1;bai_w = 0;p0 = numberbai;delay(5);/p0 = 0x00;bai_w = 1;ge_w = 0;p0 = numberge;delay(5);/p0 = 0x00;ge_w = 1;void timer0(void) interrupt 1 /定时器t0中断left=0; right=0; c=10000-c; th0=-(c/256);tl0=-(c%256); c=a; void servo(uint b,uint d)/舵机控制函数left=b;right=d;c=a;th0=-(a/256); tl0=-(a%256); et0=1;/定时器t0中断允许tr0=1;/定时器t0启pt0=0;/定时器t0低优级void go_forward(void)/前进函数servo(1,1);delay();et0=0;tr0=0;void go_left(void)/左转函数servo(0,1); delay(); et0=0;tr0=0;void go_right(void) /右转函数 servo(1,0); delay();et0=0;tr0=0;void stop(void)/停止函数 servo(0,0);delay(); et0=0;tr0=0;void turn_head(uint l,uint r)/转向函数,参数为(1,0),左转;为(0,1),右转 uint aa=360; while(aa-)servo(r,l);delay();et0=0; tr0=0;display(ge,shi,bai); if (middle_s=0)break; void main(void)/主函数 uint i=0; p1_1=0;/工作状态显示in1=1;in2=1;in3=1; ea=1; et1=1; tr1=1; pt1=1; tmod=0x11; /定时器工作方式为1 /ie = 0x81; /允许总中断中断,使能 int0 外部中断 /tcon = 0x01; /触发方式为脉冲负边沿触发 while(1) display(ge,shi,bai); /调用显示函数,各判断中也或有调用以保持显示的连续性 if (eye=0)/检测到障碍物,转向turn_head(1,0); else if (left_s=0&middle_s=0&right_s=0) /遇到障碍物回来后检测到节点,转向 i=6; while (i-)go_forward();turn_head(0,1); /* else if (left_s1=1&right_s1=0)/前进途中遇到转向节点,转向 turn_head(0,1); */ else if (middle_s=0)|(in1=1&in2=0&in3=1)/前进 go_forward(); else if (left_s=0&right_s=1)|(in1=0&in2=1&in3=1)/左转 go_left(); else if (left_s=1&right_s=0)|(in1=1&in2=1&in3=0)/右转 go_right(); else if(left_s=1&middle_s=1&right_s=1)|(in1=1&in2=1&in3=0)/停止 go_forward();else if(in1=1&in2=1&in3=1)stop();et0=0;/以下为状态清零 tr0=0; et1=0; tr1=0; ea=0; while (1)/显示系统用时 display(ge,shi,bai); 2数码管代码#include #include #define nop() _nop_() /* 定义空指令 */#define uchar unsigned char#define uint unsigned int#define delaynop(); _nop_();_nop_();_nop_();_nop_();void delay(uchar x); /x*0.14msvoid delay1(int ms);void beep(void);sbit irin = p32; /红外接收器数据线uchar ircom7;sbit in1=p24;sbit in2=p25;sbit in3=p26; void turn_left(void)in1=0;in2=1;in3=1;void turn_right(void)in1=1;in2=1;in3=0; void go(void)in1=1;in2=0;in3=1;void stop(void)in1=1;in2=1;in3=1; unsigned char y0;/*/main() ie = 0x81; /允许总中断中断,使能 int0 外部中断 tcon = 0x01; /触发方式为脉冲负边沿触发 irin=1; /i/o口初始化 delay1(10); /延时 in1=1;in2=1;in3=1; while(1); /end main/*/void ir_in(void) interrupt 0 /外部中断服务程序 unsigned char j,k,n=0; ex0 = 0; delay(15); if (irin=1) ex0 =1; return; /确认ir信号出现 while (!irin) /等ir变为高电平,跳过9ms的前导低电平信号。 delay(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k=30) ex0=1; return; /0.14ms计数过长自动离开。 /高电平计数完毕 ircomj=ircomj 1; /数据最高位补0 if (n=8) ircomj = ircomj | 0x80; /数据最高位补1 n=0; /end for k /end for j if (ircom2!=ircom3) ex0=1; return; ircom5=ircom2 & 0x0f; /取键码的低四位 ircom6=ircom2 4; /右移4次,高四位变为低四位 if(ircom59) ircom5=ircom5+0x37;/十进制转ascall的值 else/ascall码0到9对应的十六进制是0x30-0x39 a-f对应的0x41-0x46 ircom5=ircom5+0x30; if(ircom69) ircom6=ircom6+0x37; else ircom6=ircom6+0x30; switch(ircom2) case 0x45: ; break; case 0x46: ; break; case 0x47: ; break; case 0x44: ; break; case 0x40: ; break; case 0x43: ; break; case 0x07: ; break; case 0x15: ; break; case 0x09: ; break; if (ircom2=0x45) turn_left(); delay(1); if (ircom2=0x46) go();

温馨提示

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

评论

0/150

提交评论