




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四 川 交 通 职 业 技 术 学 院实 训 报 告 实 训 项 目 :利用红外线导航寻迹 实训指导老师: 班 级 : 学 生 姓 名 : 1、 设计题目:利用红外线导航寻迹,区分黑白区域,实现对黑色条纹带的跟踪2、 设计方案1、硬件电路 完成此次任务的硬件需求只需沿用上一次利用红外线导航探测实现桌面避障任务的硬件即可,宝贝车电路连接不需做任何修改。2、 程序设计1)串口调试程序左边红外检测#include#include#define LeftIR P1_3 /左边红外接收连接到P1_3#define LeftLaunch P1_4 /左边红外发射连接到P1_4unsigned int time; /定时时间值int leftdistance; /左边的距离int distanceLeft,irDetectLeft;unsigned int frequency5=29370,31230,33050,35700,38460;void time_init(void)IE=0x82; /开总中断EA,允许定时器0中断ET0TMOD |=0x01; /定时器0工作在模式1:16位定时器模式void FreqOut(unsigned int Freq)time=256-(500000/Freq); /根据频率计算初值TH0=0XFF; /高八位设FFTL0=time; /低八位根据公式计算TR0=1; /启动定时器delay_nus(800); /延时TR0=0; /停止定时器void Time0_Interrupt(void)interrupt 1 /定时器中断LeftLaunch=LeftLaunch; /取反TH0=0xff; /重新设值TL0=time;void Get_1r_Distances()unsigned char count;leftdistance=0; /初始化左边的距离for(count=0;count5;count+)FreqOut(frequencycount); / 发射频率irDetectLeft=LeftIR;printf(irDetecLeft=%d,irDetectLeft);if(irDetectLeft=1)leftdistance+;int main(void)uart_Init();time_init();printf(FREQENCY ETECTED!n);while(1)Get_1r_Distances();printf(distanceLeft=%dn,leftdistance);printf(-n);delay_nms(1000);右边红外检测#include#include#define RightIR P3_3 /右边红外接收连接到P3_3#define RightLaunch P3_4 /右边红外发射连接到P3_4unsigned int time; /定时时间值int Rightdistance; /右边的距离int distanceRight,irDetectRight;unsigned int frequency5=29370,31230,33050,35700,38460;void time_init(void)IE=0x82; /开总中断EA,允许定时器0中断ET0TMOD |=0x01; /定时器0工作在模式1:16位定时器模式void FreqOut(unsigned int Freq)time=256-(500000/Freq); /根据频率计算初值TH0=0XFF; /高八位设FFTL0=time; /低八位根据公式计算TR0=1; /启动定时器delay_nus(800); /延时TR0=0; /停止定时器void Time0_Interrupt(void)interrupt 1 /定时器中断RightLaunch=RightLaunch; /取反TH0=0xff; /重新设值TL0=time;void Get_1r_Distances()unsigned char count;Rightdistance=0; /初始化左边的距离for(count=0;count5;count+)FreqOut(frequencycount); / 发射频率irDetectRight=RightIR;printf(irDetecRight=%d,irDetectRight;if(irDetectRight=1)Rightdistance+;int main(void)uart_Init();time_init();printf(FREQENCY ETECTED!n);while(1)Get_1r_Distances();printf(distanceRight=%dn,Rightdistance);printf(-n);delay_nms(1000);2)寻迹程序#include#include#define LeftIR P1_3 /左边红外接收连接到P1_3#define LeftLaunch P1_4 /左边红外发射连接到P1_4#define RightIR P3_3 /右边红外接收连接到P3_3 #define RightLaunch P3_4 /右边红外发射连接到P3_4#define Kpl 60#define Kpr -60#define SetPoint 3#define CenterPulse 1500unsigned int time;int leftdistance,rightdistance; /左边和右边的距离int delayCount,irDetectLeft,irDetectRight,pulseLeft,pulseRight;unsigned int frequency5=29370,31230,33050,35700,38460;void timer_init(void)IE=0x82; /开总中断EA,允许定时器0中断ET0TMOD |=0x01; /定时器0工作在模式1:16位定时器模式void FreqOut(unsigned int Freq)time=256-(500000/Freq);TH0=0xff;TL0=time;TR0=1;delay_nus(800);TR0=0;void Timer0_Interrupt(void)interrupt 1LeftLaunch=LeftLaunch;RightLaunch=RightLaunch;TH0=0xff;TL0=time;void Get_1r_Distances()unsigned char count;leftdistance=0; /初始化左边的距离rightdistance=0; /初始化右边的距离for(count=0;count5;count+)FreqOut(frequencycount);irDetectLeft=LeftIR;irDetectRight=RightIR;if(irDetectLeft=1)leftdistance+;if(irDetectRight=1)rightdistance+;void Send_Pulse(unsigned int pulseLeft,unsigned int pulseRight)P1_1=1;delay_nus(pulseLeft);P1_1=0;P1_0=1;delay_nus(pulseRight);P1_0=0;delay_nms(18);int main(void)unsigned int pulseLeft,pulseRight;uart_Init();timer_init();while(1)Get_1r_Distances(); pulseLeft=(SetPoint-leftdistance)*Kpl+CenterPulse;pulseRight=(SetPoint-rightdistance)*Kpr+CenterPulse;Send_Pulse(pulseLeft, pulseRight); 3、 调试过程1) 串口调试(以左边检测为例,右边类似)如果检测结果irDetectLeft为1,即没有发现物体,则距离leftdistance加1。循环描述,当5个频率扫描完后,可根据leftdistance的值来判断物体离机器人的大致距离。运行程序时,把宝贝车放在寻迹的黑白纸上,置于黑色条纹中间,通过左右移动调整宝贝车的触角,使宝贝车左边的触角能很好的感应到左边的白色区域,前方的黑色区域,直到显示的值达到4或5表明发现黑色区域,显示0代表看见的是白色区域。还可适当的用一张白色的纸放在宝贝车前方,用来测试调整宝贝车看到前方白色物体的距离。2) 寻迹调试将编写好的寻迹程序加载到宝贝车上,把宝贝车放到黑白条纹纸上,因为老师给的黑白条纹纸是以白色为底色,黑色是条纹,所以使宝贝车沿着黑色条纹走。当宝贝车沿黑色直线走时,保证其不会偏离黑色条纹带;当宝贝车遇到转弯时,能根据触角接收到的信息自动调整左轮和右轮的转速,从而实现正确的转弯,使宝贝车在转弯过程中依然是沿着黑色条纹带行走的。若不能正确实现上述宝贝车寻迹要求,则需检查宝贝车线路连接是否正确,寻迹程序编写的接收发射串口等是否编写正确。当然,最重要的还是宝贝车触角的调试角度,是否能很好的感应到黑白区域,在这里可使宝贝车的触角呈“内八”来寻觅黑色条纹,实现沿黑色条纹行走的寻迹任务。四、小结1.通过对宝贝车寻迹任务的完成,使我们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论