机器人创新实践报告Word下载.docx
《机器人创新实践报告Word下载.docx》由会员分享,可在线阅读,更多相关《机器人创新实践报告Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
教师签名:
日期:
成
绩
定
备
注
智能巡线小车
1设计原理
由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断实际的“道路”情况,使小车在白色地板上循黑线行走。
通常采取的方法是红外探测法。
红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;
如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。
单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线
2方案论证
2.1
巡线模块设计
采用一体反射式红外对管,所谓一体就是发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射管发出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须是白色地板加黑色引导条。
这次设计中由于是近距离探测,故采用红外对管来完成数据采集。
由于红外光波比可见光长,因此受可见光的影响较小。
同时红外线系统还具有以下优点:
尺寸小、质量轻,便于安装。
反射式光电检测器就是其中的一种器件,它具有体积小、灵敏度高、线性好等特点,外围电路简单,安装起来方便,电源要求不高。
用它作为近距离传感器是最理想的,电路设计简单、性能稳定可靠。
1.2.2供电方案设计与比较
2.2巡线模块设计
方案一:
采用两个电源供电,将电动机驱动电源以及其周边电路与单片机电源分别供电,由于单片机的电压较低,而电机需要的电压较高,容易使单片机电压过高而损坏,使用两个电池供电,可以提高系统稳定性,但是多一组电池,增加了小车的质量,同时也增加了小车的惯性,降低了灵敏度。
方案二:
采用单一电源供电。
电源直接给单片机供电,通过单片机的IO口连接到电动机上,这样输出的电压稳定,同时也减轻了小车的质量,使小车更加灵活。
但是加高的电压提高了损坏单片机的风险。
从安全性考虑,我们选择方案一。
3设计方案
3.1小车的总体结构设计
3.1.1结构元件的选择
轮胎,减速箱,电机,万向滑轮,黄色底盘,pcb敷铜板,亚克力板,螺丝,卡簧,固定片等。
3.1.2小车结构图
3.1.3电路驱动部分电路原理图
3.1.4小车的成品外观图
3.2巡线功能介绍
3.2.1反射型光电探测器RPR220
RPR220是一种一体化反射型光电探测器。
其探测器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电二极管。
主要应用在游戏机,复印机和办公自动化等设备中。
本巡线小车就是用该元件作为检测元件,即是通过检测黑线有没有来达到控制小车巡线的目的的。
3.2.2寻迹电路图分析
(1)没有检测到黑线,则H4发光到白纸光反射到H4接收端,H4接收端导通,导通T1接地等于0。
(2)有检测到黑线,则H4发光到黑线光全部被吸收,H4接收端,没有收到任何信号,因为H4不导通(截止),T1等于vcc。
3.2.3寻迹元件在小车的具体实现
3.2.4电源部分
3.3小车三路巡迹算法
3.3.1.直线寻迹图
3.3.2左转弯巡迹图
3.3.3右转弯巡迹图
3.4巡线与电机驱动程序
#include<
REGX52.H>
//包含51单片机相关的头文件
sbitLeftLed=P2^0;
//定义前方左侧指示灯端口
sbitRightLed=P0^7;
//定义前方右侧指示灯端口
sbitFontLled=P1^0;
sbitLeftIR=P3^5;
//定义前方左侧红外探头端口
sbitRightIR=P3^6;
//定义前方右侧红外探头端口
sbitFontIR=P3^7;
//定义前方正前方红外探头端口
sbitM1A=P0^0;
//定义左侧电机驱动A端
sbitM1B=P0^1;
//定义左侧电机驱动B端
sbitM2A=P0^2;
//定义右侧电机驱动A端
sbitM2B=P0^3;
//定义右侧电机驱动B端
sbitB1=P0^4;
//定义语音识识别传感器端口
sbitSB1=P0^6;
//定义蜂鸣器端口
voidtingzhi()
{
M1A=0;
//将M1电机A端初始化为0
M1B=0;
//将M1电机B端初始化为0
M2A=0;
//将M2电机A端初始化为0
M2B=0;
}
voidqianjin()
M1A=1;
M2A=1;
voidhoutui()
M1B=1;
M2B=1;
voidzuozhuan()
voidyouzhuan()
voiddelay_nus(unsignedinti)//延时:
i>
=12,i的最小延时单12us
{
i=i/10;
while(--i);
}
voiddelay_nms(unsignedintn)//延时nms
n=n+1;
while(--n)
delay_nus(900);
//延时1ms,同时进行补偿
voidControlCar(unsignedcharConType)//定义电机控制子程序
tingzhi();
switch(ConType)//判断用户设定电机形式
{
case1:
//前进//判断用户是否选择形式1
{
qianjin();
break;
}
case2:
//后退//判断用户是否选择形式2
houtui();
//M2电机反转
case3:
//左转//判断用户是否选择形式3
zuozhuan();
//M2电机正转
case4:
//右转//判断用户是否选择形式4
youzhuan();
//M1电机正转
case8:
//停止//判断用户是否选择形式8
//退出当前选择
voidmain()//主程序入口
bitRunFlag=0;
//定义小车运行标志位
//RunShow=0;
//初始化显示状态
ControlCar(8);
//初始化小车运行状态
while
(1)//程序主循环
Start:
LeftLed=LeftIR;
//前方左侧指示灯指示出前方左侧红外探头状态
RightLed=RightIR;
//前方右侧指示灯指示出前方右侧红外探头状态
FontLled=FontIR;
SB1=LeftIR;
if(LeftIR==0&
&
RightIR==0)//三个红外检测到黑线,就前进
ControlCar
(1);
//左侧没有信号时,开始向右转一定的角度
delay_nms(10);
gotoNextRun;
RightIR==1)
ControlCar(3);
//右侧没有信号时,开始向左转一定的角度
if(LeftIR==1&
RightIR==0)
ControlCar(4);
gotoStart;
NextRun:
4结果与分析
小车的运行如视频附件所示,能实现常规的巡线,遥控,寻光功能