智能小车说明书.docx
- 文档编号:9506448
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:17
- 大小:147.53KB
智能小车说明书.docx
《智能小车说明书.docx》由会员分享,可在线阅读,更多相关《智能小车说明书.docx(17页珍藏版)》请在冰点文库上搜索。
智能小车说明书
基于STC12C5A60S2单片机智能轮式小车设计
摘要:
以STC12C5A60S2单片机为核心,由主控模块、传感器模块、电机驱动模块等组成,完成路面信息检测、循迹,寻找火源,直流电机控制等功能。
路面信息检测、循迹采用红外光电寻迹传感器判断接收地面反射光线的方式反馈,通过高低电平来进行路面检测、路径判断;寻找火源采用火焰传感器判断火源所在方位;电机直流驱动则用来保证小车以最快的速度行驶。
关键词:
智能小车、STC12C5A60S2单片机、红外传感器、循迹传感器、碰撞传感器、直流电机
目录
引言2
一.总体设计方案3
1.1设计方案论证3
1.2方案的总体设计框图3
二.硬件模块设计3
2.1硬件模块组成3
2.2中央处理器模块3
2.3传感器模块4
三.功能介绍6
四.软件设计6
五.参考文献14
引言
只能作为现代社会的新产物是以后的发展方向。
它可以按照预先设定的模块在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或更高的目标。
本次设计一智能小车,小车能够沿着特定轨迹行驶并能准确寻找到火源,并实现灭火功能。
在此过程中要通过单片机和各种传感器实现小车的前进、后退、左转和右转等基本操作。
通过这些基本功能再加上相关的传感器实现具有特定功能的智能小车。
这里在轮式小车上加装碰撞、循迹、火焰传感器,在STC12C5A60S2单片机的管理和相关程序的控制下,能完成自动循迹及在复杂地形的迷宫中寻找出路的功能。
作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的
应用实例,该系统将会有更广阔的开发前景。
一.总体设计方案
1.1设计方案论证
本次设计采用循迹传感器来实现按照特定的轨迹行驶的循迹功能;采用火焰传感器来实现寻找火源的功能;采用碰撞传感器来实现避免小车遇到障碍物时能即使的避免的功能;采用STC12C5A60S2单片机来控制小车的各项基本操作。
1.2方案的总体设计框图
二.硬件模块设计
2.1硬件模块组成
本次创新设计所用到的硬件模块有:
中央处理器模块、传感器模块、直流电机驱动模块、调试电路模块。
2.2中央处理器模块
本文采用的STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
2.3传感器模块
本次课程设计所用到的传感器有:
碰撞传感器、寻迹传感器、火焰传感器。
(1)碰撞传感器:
工作原理:
在没有碰撞时,传感器输出的是高电平,当触头发生碰撞时输出低电平。
本次设计是将两个碰撞传感器平行斜置安装在小车车头两侧。
在小车的行进过程中,左侧遇到障碍时,左侧的碰撞传感器输出低电平,单片机控制小车先后退再右转。
同理,右侧遇到障碍时,右侧的碰撞传感器输出低电平,单片机控制小车先后退再左转。
(2)寻迹传感器:
工作原理:
循迹传感器通过发射红外线射到路面并反射接收,利用红外线在黑线和白线对光的反射系数不同的特点白色反光线,黑色吸收光线,当检测到黑线时,检测电路向单片机发出一个高电平信号,当检测到白色时检测电路向单片机发出一个低电平信号。
本次设计采用两个循迹传感器相距一定距离平行放置,进行黑带采集,若左边的循迹传感器检测到黑带信号,则左转一定角度,同理,若右边的循迹传感器检测到黑带信号,则右转一定角度,若两个传感器都没有检测到黑带信号,则小车向前直线行驶。
(3)火焰传感器:
工作原理:
火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。
不同燃烧物的火焰辐射强度、波长分布有所差异,但总体来说,其对应火焰温度的1-2微米近红外波长域具有最大的辐射强度。
火焰传感器是机器人专门用来搜寻火源的传感器。
火焰传感器利用对红外线特别敏感的特点,将火焰的亮度转化成高度变化的电平信号,输入到处理器中
三.功能介绍
本次创新设计主要实现的功能是:
首先在预先设定的黑带轨迹上自动寻迹行驶然后再设置火源,使小车找到火源并灭火
四.软件设计
#include
#include
#defineSTOP165535-1680;//1685为实例舵机的静止参数,基本静止即可
#defineSTOP265535-1686;
#defineLFORWARD65535-1680+400;
#defineLBACKWARD65535-1686-400;
#defineRFORWARD65535-1686+235;
#defineRBACKWARD65535-1690-159;
#defineLOW65535-20000;//低电平时间20ms(思考:
会不会有误差?
误差体现在哪里?
)
sbitleft=P3^0;//电机2接P3.0口
sbitright=P3^1;//电机1接P3.1口
sbitl_touch=P0^1;
sbitr_touch=P0^0;
sbitxj_r=P0^2;
sbitxj_l=P0^4;
sbitred=P0^3;
intflag=0;
intflag1=0;
inti,L,R;
intseg1;//阶段一左轮高电平,右轮低电平时间1.686+-0.4
intseg2;//阶段而左轮低电平,右轮高电平时间1.686+-0.4
intseg3;//阶段三左轮、右轮都是低电平,时间20ms
unsignedcharADCS_cnt=0x00;//ADC通道标志
unsignedintdisbuf[3];
voidinit(void);//初始化函数
voidforward_run(int);//前进函数
voidbackward_run(int);//回转
voidstop_run(int);//停止
voidturnleft_run(int);//右转
voidturnright_run(int);//左转
voidrest(void);//休息函数,如果不加此函数,可能造成MCU停顿而无相应
/*************************************************/
/*主程序有两个功能:
/*第一个是进行计时器0的初始化*********************/
/*第二个是在中断服务程序重新设置后开启计时器******/
floatADC_L()
{
floatADC_Result;
P1ASF=0x40;//P1ASF=01000000P1^4口作为模拟A/D转换口
AUXR1=0x04;//ADRJ=1,高2位放在ADC_RES中,低8位放在ADC_RESL中,转换结果=1024*Vin/Vcc
ADC_CONTR=0x8E;//ADC_CONTR=10001000,即ADC_Power=1,ADC_STart=1;
DelayMs(10);
ADC_Result=ADC_RESL+ADC_RES*256;//取值
ADC_Result=(ADC_Result*500)/1024;//转换为电压
returnADC_Result;
ADC_CONTR=0x00;//关闭ADC以节约能量
}
floatADC_R()
{
floatADC_Result;
P1ASF=0x20;//P1ASF=00010000P1^5口作为模拟A/D转换口
AUXR1=0x04;//ADRJ=1,高2位放在ADC_RES中,低8位放在ADC_RESL中,转换结果=1024*Vin/Vcc
ADC_CONTR=0x8D;//ADC_CONTR=10001000,即ADC_Power=1,ADC_STart=1;
DelayMs(10);
ADC_Result=ADC_RESL+ADC_RES*256;//取值
ADC_Result=(ADC_Result*500)/1024;//转换为电压
returnADC_Result;
ADC_CONTR=0x00;//关闭ADC以节约能量
}
voidrest(void)
{
TR0=0;
DelayMs(20);
}
voidforward_run(intn)
{
seg1=LFORWARD;
seg2=RBACKWARD;
seg3=LOW;
TR0=1;
DelayMs(n*10);
}
voidbackward_run(intn)
{
seg1=LBACKWARD;
seg2=RFORWARD;
seg3=LOW;
TR0=1;
DelayMs(n*100);
}
voidturnleft_run(intn)
{
seg1=LBACKWARD;
seg2=RBACKWARD;
seg3=LOW;
TR0=1;
Delay01Ms(n*10);
}
voidturnright_run(intn)
{
seg1=LFORWARD;
seg2=RFORWARD;
seg3=LOW;
TR0=1;
Delay01Ms(n*10);
}
voidstop_run(intn)
{
seg1=STOP1;
seg2=STOP2;
seg3=LOW;
TR0=1;
DelayMs(n*1000);
}
/************初始化定时器0***********************/
voidinit(void)
{
TMOD=0x01;
TH0=0xB1;
TL0=0xDF;//这里可以是随机值,目的是产生计时器0中断后,进入服务子程序
TR0=1;
EA=1;
ET0=1;
}
/************计数器0的服务程序*****************/
/*分成三个计数阶段****************************/
voidtimer0_servo()interrupt1
{
if(flag==0)
{TH0=(seg1)/256;
TL0=(seg1)%256;
left=1;
right=0;
flag++;
}
elseif(flag==1)
{
TH0=(seg2)/256;
TL0=(seg2)%256;
left=0;
right=1;
flag++;
}
elseif(flag==2)
{
TH0=(seg3)/256;
TL0=(seg3)%256;
left=0;
right=0;
flag=0;
}
}
主程序
voidmain()
{
floatADC_Res_L,ADC_Res_R,LEN=450,HIG=1450;
floatADC_L();
floatADC_R();
SP=0x70;
init();
while
(1)
{
i=1;
while(i<300)
{
i++;
if(l_touch==0&&r_touch==1)//碰撞
{
backward_run
(2);
rest();
turnright_run(21);
rest();
continue;
}
elseif(l_touch==1&&r_touch==0)
{
backward_run
(2);
rest();
turnleft_run(21);
rest();
continue;
}
elseif(l_touch==0&&r_touch==1)
{
backward_run
(2);
rest();
turnleft_run(84);
rest();
continue;
}
else
{
if(red==0)//红外
{
backward_run
(2);
rest();
turnleft_run(210);
rest();
continue;
}
else
{
if(xj_l==0&&xj_r==0)//循迹
{
forward_run
(1);
rest();
}
elseif(xj_l==1&&xj_r==0)
{
turnleft_run(5);
rest();
}
elseif(xj_l==0&&xj_r==1)
{
turnright_run(5);
rest();
}
else
{
turnleft_run(20);
rest();
}
}
}
}
flag1=0;
i=0;
while(flag1<=1)
{
i++;
L=xj_l;
R=xj_r;
turnleft_run(10);
rest();
if(L!
=xj_l||R!
=xj_r)
flag1++;
ADC_Res_L=ADC_L();
ADC_Res_R=ADC_R();
if(ADC_Res_L>LEN||ADC_Res_R>LEN)//发现火源
{
i=1;
while(i)
{
ADC_Res_L=ADC_L();
ADC_Res_R=ADC_R();
if(ADC_Res_L>(ADC_Res_R+20))//左边>右边
{
turnleft_run(5);
forward_run
(1);
rest();
}
elseif(ADC_Res_R>(ADC_Res_L+20))//右边>左边
{
turnright_run(5);
forward_run
(1);
rest();
}
elseif(ADC_Res_L>HIG||ADC_Res_R>HIG)//停车灭火
{
stop_run
(1);
rest();
}
elseif(ADC_Res_L { i=0; } else { forward_run (1); rest(); } } } } } } 五.参考文献 【1】江武志,许娜芬,孙菁.基于STC12C5A60S2的教育机器人的设计与实现[J].山西电子技术,2011年第4期. 【2】邵泽军,张秋菊.基于单片机的智能小车[N].魅力科学ModernScience. 【3】姬红旭.基于STC89C52单片机智能避障小车设计[N].职业技术. 【4】肖 月,李成贵,赵利国,魏 鹏.基于STC12C5A60S2单片机的太阳跟踪控制器设计[J].计算机与数字工程,2011年第9期. 【5】揭宗昌,蔡泽辉,王鹏.简易自动仓储搬运小车的设计与实现[N].中国科技论文在线. 【6】袁孜.基于路径规划的迷宫移动机器人[N].中国科技论文在线. 【7】魏式,龚树锋.基于MC9S12DG128智能模型车的设计与实现[J].重庆工学院学报(自然科学),2009年9月. 【8】金立,王梅,刘恩鹏,李安迎.基于PIC单片机的智能循迹小车设计[N].中国科技论文在线. 【9】背景俊原.舵机控制说明[R].
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 小车 说明书