欢迎来到天天文库
浏览记录
ID:20059722
大小:296.50 KB
页数:10页
时间:2018-10-09
《智能循迹避障机器人论文(打印)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、智能循迹避障机器人设计论文院系班级:学号:姓名:指导教师(职称):完成时间:智能循迹避障机器人摘 要:利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制机器人小车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。关键词:智能;STC89C52单片机;L298N;红外对管1.机器人小车的构成它可以分为三大组成部分:传感器检测部分、执行部分、CPU。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。基
2、于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。单片机驱动直流电机由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。2.机器人小车功能机器人要实现自动导引功能和避障功能,要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。3.1主板设计框图如图3.1Stc89c52循迹红外对管时钟电路复位电路报警电路电机驱动避障红外对管图3.1主板设计框图3.2
3、驱动电路电机驱动一般采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。通过单片机给予L298N电路PWM信号来控制小车的速度,起停。其引脚图如3.2,驱动原理图如图3.3。图3.2L298N引脚图图3.3电机驱动电路3.3信号检测模块小车循迹原理是小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。 红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不
4、断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号,再通过LM324作比较器来采集高低电平,从而实现信号的检测。避障亦是此原理。电路图如图3.4。市面上有很多红外传感器,在这里我选用TCRT5000型光电对管。图3.4循迹原理图3.4主控电路本模块主要是对采集信号进行分析,同时给出PWM波控制电机速度,起停。以及再检测到障碍报警等作用。其电路图如图5。图3.5主控电路4.1主程启动循迹是否检测到停止线停止是否检测到障碍NY避障YN序框图:4.2电机驱动程序voidgoah
5、ead(){s1=1;s2=0;s3=1;s4=0;}voidgoback(){s1=0;s2=1;s3=0;s4=1;}voidturnleft(){s3=1;s4=0;}void开始前进扫描I/O口,是否检测到黑线Y左边右边左转右转Nturnright(){s1=1;s2=0;}voidstop(){en1=0;en2=0;}4.3循迹模块循迹框图:循迹程序:voidxunji(){if((left_red==1)&(right_red==1)){en1=1;en2=1;goahead();delay(150);en1=0;en2=0;delay(50);}e
6、lseif((left_red==0)&(right_red==1)){en1=0;en2=1;P0_0=!P0_0;turnleft();delay(150);en1=1;en2=0;delay(50);}elseif((left_red==1)&(right_red==0)){en1=1;en2=0;P0_1=!P0_1;turnright();delay(150);en1=0;开始后退一点,报警后退左转前进右转Y左转是否检测到障碍前进Nen2=1;delay(50);}else{stop();}}4.4避障模块避障框图:避障程序:voidbizhang(){
7、en1=1;en2=1;goback();mid_red=0;baojing();goback();for(i=0;i<8;i++){en1=1;en2=1;delay(150);en1=0;en2=0;delay(50);}stop();delay(10);turnleft();for(i=0;i<11;i++){en1=0;en2=1;delay(130);en2=0;delay(50);}stop();delay(10);goahead();for(i=0;i<22;i++){en1=1;en2=1;delay(130);en1=0;en2=0;delay(
8、50);}
此文档下载收益归作者所有