智能小车报告分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能小车(红外版)项目报告
目录
一、引言
------------------------------1 二、总体方案
------------------------------1 三、电路与程序设计
------------------------------4 四、小车调试方案和调试结果
------------------------------8 五、遇到的问题和解决方案
-------------------------------9 六、工程管理方案
-------------------------------10 七、总结和体会
-------------------------------10
一、引言
智能,即可以按照预先设定的模式在一个环境中运行,不需要人为的管理。智能小车就是其中一个体现。本文的智能小车设有自动避障和自动循迹的功能。其中避障的实现需要注意当小车与障碍物之间距离小于*一数值时,车通过电动机转向;寻迹的实现则需要通过车底部的光电传感器检测行驶方向是否偏离黑线,再通过电动机调整运行方向。
小车系统以STC89C52单片机为系统控制处理器;采用红外传感获取轨道及障碍物的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。
二、总体方案
本小组设计的智能小车的控制机制是:以STC89C52单片机为控制核心的智能循迹避障小车。采用红外探测法实现信号检测,通过红外发射管和接受管来感知给定黑色轨迹和障碍物,将感知的信号返回给单片机,然后单片机对不同信号进行区分,结合软件编程控制小车前进、后退、左转、右转,从而实现循迹避障功能,即在有轨迹的地方小车能沿轨迹行驶,当遇到障碍时小车能够自动避开。
1.实现功能
(1)寻迹功能
该智能小车在画有黑线的白纸 "路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断 "道路”一黑线。本车用了比较普遍的检测方法——红外探测法。红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。
(2)避障功能
该智能小车利用红外对管获取障碍物的信息,小车在前进时位于小车前方的红外管不断发射红外光,当前方有障碍物时,红外管被反射,并被接收管接收。
2.框图
图一
3.原理图(图二)
4.流程图
Stc89c52
循迹红外对管 时钟电路 复位电路 报警电路 电机驱动 避障红外对管
智能小车寻迹流程图(图三)
N
Y
N
Y
N
Y
智能小车避障流程图(图四)
三、电路与程序设计
(1)电路设计(各单元模块功能):
1、控制器模块
采用STC89C52单片机,直接通过USB线为小车烧录程序做开发,不用购买转换器。
作用:智能小车的控制核心,通过对单片机烧录控制程序,控制小车前进、后退、左转、右转,从而实现循迹避障功能,即在有轨迹的地方小车能沿轨迹行驶,当遇到障碍时小车能够自动避开。
2. 电机驱动模块
运用两块LG9110驱动芯片来分别控制左前轮和右前轮。该芯片简单易管理,充分主程序有时间去处理其他更多功能。
作用:用驱动芯片做单片机与马达的桥梁,当芯片接收到来自单片机的命令信号时,芯片会做出相应的命令来使马达运作,从而实现控制左转与右转的功能。
3、寻迹模块
智能小车设计要能实现在黑白轨迹线路上寻迹行驶,小车就要能区分路面上的黑白颜色,采用的是红外光线对黑白颜色反光程度不同的原理。同时也可以根据这种方法来实现避悬崖及其他更多的高级功能。
4、避障模块
智能小车的避障方法采用红外光线反射原理,可以很好的检测到前方能够反光的白色物体,从而实现能够绕障碍物与防撞的功能。
5. 电源模块
采用4节1.5V干电池供电,电压达到6V,给单片机、电机和其他芯片供电。
作用:给小车提供能源。
6. 发光二极管和蜂鸣器
采用普通发光二极管和蜂鸣器分别发出光声进行提示。
作用:两个发光二极管一直亮着表示小车处于前进状态;发光二极管闪烁和蜂鸣器鸣叫表示小车后退;左边的发光二极管亮而右边的发光二极管灭表示小车左转;右边的发光二极管亮而左边的发光二极管灭表示小车右转。
7.8位LED指示灯
充分发挥程序状态指示灯、跑马灯、流水灯、花样灯等更多变幻多样的功能。(2)程序设计:
程序设计原理:探测障碍物的红外对管和寻迹的两个红外对管引起的电平变化,并将其变化传递给STC89C51单片机,经过一定计算处理,并配合两个直流发电机通过前进、后退、左转、右转等动作完成寻迹和避障功能。
1、主程序模块
#include
#include
#define GPIO2 P1
#define GPIO3 P2
#define uchar unsigned char
void delayms(uchar *); //延时子程序
void display(); //数码管显示程序
void bizhang(); //避障程序
void qian(); //前进
void hou(); //后退
void zuo(); //向左
void you(); //向右
void stop(); //停止
void *unji(); //寻迹子程序
void voicecontrol();
sbit IB1=P0^0;
sbit IA1=P0^1;
sbit IB2=P0^2;
sbit IA2=P0^3;
sbit D1=P2^0; //左前方LED
sbit D2=P0^7; //右前方LED
sbit BE=P0^6; //蜂鸣器控制位
sbit BT=P0^4; //声音检测位
sbit h1=P3^7; //前方避障红外检测
sbit h2=P3^5; //寻迹左红外检测
sbit h3=P3^6; //寻迹右红外检测
sbit s2=P3^4;
uchar runflag=0,flag1,flag2; //标志位
uchar num1=0,num2=0,t,k;
uchar code
DPIO[10]={~0*fc,~0*60,~0*da,~0*f2,~0*66,~0*b6,~0*be,~0*e0,~0*fe,~0*f6 }; //数码管段码
2、延时子程序
void delayms(uchar *)
{
uchar a,b,c;
for(a=0;a<*;a++)
for(b=0;b<100;b++)
for(c=0;c<100;c++);
}
3、数码管显示子程序
void display()
{
uchar i,j;
t=D1;
i=num2/10; //秒的十位
j=num2%10; //秒的个位
switch(i)
{