基于ARM的智能避障小车设计.docx

上传人:b****4 文档编号:3503251 上传时间:2022-11-23 格式:DOCX 页数:11 大小:87.66KB
下载 相关 举报
基于ARM的智能避障小车设计.docx_第1页
第1页 / 共11页
基于ARM的智能避障小车设计.docx_第2页
第2页 / 共11页
基于ARM的智能避障小车设计.docx_第3页
第3页 / 共11页
基于ARM的智能避障小车设计.docx_第4页
第4页 / 共11页
基于ARM的智能避障小车设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于ARM的智能避障小车设计.docx

《基于ARM的智能避障小车设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的智能避障小车设计.docx(11页珍藏版)》请在冰豆网上搜索。

基于ARM的智能避障小车设计.docx

基于ARM的智能避障小车设计

 

工程控制设计报告

 

题目:

基于ARM的智能避障小车设计

 

学院:

计算机与信息科学学院

专业:

自动化(控制方向)

班级:

学号:

姓 名:

指导教师:

完成日期:

 

2009.8

基于ARM的智能避障小车设计

 

摘要:

避障是智能小车应具备的基本功能之一,以s3c44b0x芯片为核心,采集前方障碍信息并对智能小车进行控制,选用红外避障传感器检测智能小车前方的障碍物,设计了智能小车的自动避障系统,并阐述其工作原理。

该系统设计简单、成本低、实时性好,在室内环境中取得了预期的实验结果,使智能小车无碰撞到达目的地。

关键字:

ARM;,智能,;红外避障传感器

ObstacleAvoidanceSystemofIntelligentCarriageBasedonARM

WeiPeng

DepartmentofAutomation,FacultyofComputer&InformationScience,SouthwestUniversity,Chongqing

 

Abstract:

Theobstacleavoidanceisoneofthemainfunctionsthatanindependentlyintelligentcarriageshouldbeprovided.UsingARMchips3c44b0xasakeycomponent,collectingtheenvironmentalinformationandcontrollingtheintelligentcarriage,akindofobstacleavoidancesystemofintelligentcarriageisdesigned.Inthissystem,infraredobstacleavoidancesensorsareusedtodetectthebarries,whicharefrontofdistancebetweentheintelligentcarriageandthebarriers.Thesystem'sdesignissimple,andhaslowercostandbetterrealtimefeatures.Andatthesametime,thissystemhasobtainedanticipatedexperimentalresultsintheindoorenvironment.Thatis:

theintelligentcarriagecanarriveatthedestinationwithoutanycollision.

Keywords:

ARM;intelligent;infraredobstacleavoidancesensors

1引言

随着汽车工业的发展,汽车本身的安全性和智能性日益得到重视。

目前,国内外已经有了很多有关汽车自适应驾驶的理论和实验。

汽车的紧急避障是由计算机模拟驾驶员的主动控制过程,以汽车为控制对象进行实时信号采集、分析和处理,在紧急情况下可代替驾驶员的驾驶操作。

通过红外线传感器可以感知车辆行驶环境,实现小车的自适应巡航、避障等功能。

 近几年,在我国大学,智能小车作为轮式机器人家族中的重要成员,现已是机械电子学、计算机技术、人工智能等的典型载体被广泛地用来作为工科本科生的讲授课程之一;在中学,轮式模型机器人则逐渐成为素质教育,技能实践的选题之一,各种智能化的比赛正蓬勃发展。

但因成本和功耗过高,功能的不断扩展,运行环境的不可预知性等因素起了极大的负面影响,制约了其发展。

本文通过s3c44b0x开发板和ADS集成开发平台,设计出基于嵌入式系统的智能小车控制器。

以其功耗低、体积小、集成度高、可靠性强等优势,为智能汽车技术的发展提供了广阔的前景。

2系统的功能描述

普通的玩具小车一般需要在外加条件下才能按照自己的设想避开前方存在的障碍去自动行驶,而目前可借助嵌入式技术让小车无需外加条件便可完成智能化,即实现自动避开障碍物的功能。

从原理上讲主要是依靠小车上的红外避障传感器来检测可能出现的障碍物的信号并将其反馈回控制电路。

当传感器检测到障碍物时,传感器会产生高电平信号驱动某一侧步进电机转动使得小车能够平稳转动方向,随后继续前进。

小车整体示意图如图1所示(其中电机安放在小车背面)。

图1小车模型图

Fig.1Modelofthelittlecarriage

3系统硬件设计

总体设计方案的硬件部分如图2所示。

图2硬件设计示意图

Fig.2Hardwaredesigndiagram

在本设计中选择的开发平台是ADS集成开发环境,通过s3c44b0x芯片相关工具tftp等进行硬件方面的设计调试工作。

红外传感器是一种能探测红外线的器件,能把红外辐射量变化转换成电量变化。

本设计所采用的红外避障传感器GP2Y0A02YK性能如下:

反射率:

对反射物体的颜色有较小影响。

传感器返回的模拟电压值与测量的距离值一一对应。

探测距离的范围:

10cm~60cm。

不需要外部控制电路。

硬件设计中选用的直流电机驱动模块是中小电流直流电机专用驱动器,所用芯片l293属于H桥集成电路,其输出电流为1000mA,最高电流2A,最高工作电压36V,可以驱动感性负载,比如:

小型直流电机,继电器、步进电机和开关电源晶体管。

当驱动小型直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。

该驱动模块具有体积小,控制方便的特点。

测试实验表明采用此模块能够对电机进行平稳可靠的控制。

4系统软件设计

系统软件设计在集成开发环境ADS和MicrosoftVisualC++6.0集成开发平台下完成,主要采用C语言进行程序编制。

软件设计主要包括对控制主程序、电机驱动程序、中断程序和软件算法等程序的设计。

在系统整体设计的初始阶段,智能小车系统的正前方安装一个红外线避障传感器,通过这个传感器采集来自正前方的障碍物信号,然后将其传递给控制系统,由控制系统根据该信号进一步采取动作控制两个步进电机的运转,在经过设定好的一定时间的延时过程之后,系统主程序动作继续循环进行下去,直到电源关闭或者系统出现故障。

小车主程序流程图如图3所示,其初始化过程包括ARM微处理器的初始化和外部驱动电路的初始化等。

图4为小车使用单个传感器示意图。

图3主程序流程图1图4带单个传感器小车示意图

Fig.3Flowchart1ofthemainfunctionFig.4Schematicdiagramofthecarriagewithasensor

5系统深入设计展望

继本次系统设计使用单个传感器进行智能避障小车设计完成之后,下一步计划是使用三个传感器进行功能更加完善、系统更加稳定的智能避障小车设计。

图5带三个传感器小车示意图

Fig.5Schematicdiagramofthecarriagewiththreesensors

图5为使用三个红外避障传感器的小车示意图。

图中,三个传感器分别位于小车的左中右方,能够检测来自左、前、右三方的障碍物信号。

针对此硬件框架设计,相应的主程序流程图如下:

图6主程序流程图2

Fig.6Flowchart2ofthemainfunction

三个传感器分别检测三个方向的障碍物的好处是明显的,因为能够最大程度地扩充智能避障小车的“视野”,但同时也存在一些问题,比如三个传感器扫描范围之间的检测死区就是智能小车一个比较大的硬伤。

因此,在接下来的设计中,我们将针对诸如此类的问题进一步研究分析,争取能够在不影响智能小车基本功能的前提下丰富小车系统的设计。

6结论

由于ARM7强大的运算能力使之能实现各种数字信号的算法,加之其丰富的硬件扩展资源,使其可完全胜任智能小车设计的要求。

所以在实验时选用的是适应于ARM7的S3C44BO板,该板有十八种设计功能,在本试验中就应用其一种功能,即产生控制直流减速电机的脉冲。

本系统设计简单,软件编程易实现,实时性好且成本较低,红外线传感器对障碍物的检测虽然存在些误差,但并不影响小车避障。

在室内环境中,小车可以顺利绕过障碍物到达指定地点。

但是由于红外线探测仪的角度问题和车的宽度问题,是小车在障碍物较大时不能全部避开障碍物,所以小车并不能完全实现智能,因为传感器获得的信息非常有限,而且对步进电机的控制受到驱动的影响也带有不确定性。

在程序烧制方面,由于技术或方法等方面的原因,使程序在烧制后有时也会出现自动删除的问题。

总的来说,实验是成功的,因为基本实现了实验前所要求的功能。

 

参考文献

[1]李驹光.ARM应用系统开发详解——基于S3C4510B的系统设计[M].北京:

清华大学出版社,2004.

[2][美]JeanJ.Labrosse.邵贝贝.嵌入式实时操作系统μC/OS-II(第2版)[M].北京:

北京航空航天大学出版社,2003.

[3]刘岚.基于ARM的嵌入式系统开发[M].北京:

电子工业出版社,2008.

[4]何希才.传感器及其应用[M].国防工业出版社,2001.

[5]田海梅.基于ARM平台的智能小车控制系统的开发与实现[J].金陵科技学院学报,2008,24(4):

23-26.

 

另实验程序附下:

控制主程序:

#include"INCLUDE.H"

//Taskstacksize

#defineTASK_STACK_SIZE10*1024

//Taskdefinition

#defineMain_PRIO10

#defineTask1_PRIO12

#defineTask2_PRIO14

#defineTask3_PRIO16

voidMain_Task(void*Id);

voidTask1_Task(void*Id);

voidTask2_Task(void*Id);

voidTask3_Task(void*Id);

OS_STKMain_Stack[TASK_STACK_SIZE]={0};//MainTask

OS_STKTask1_Stack[TASK_STACK_SIZE]={0};//Task1

OS_STKTask2_Stack[TASK_STACK_SIZE]={0};//Task2

OS_STKTask3_Stack[TASK_STACK_SIZE]={0};//Task3

/*******************************************************************************************//邮箱的使用

/*******************************************************************************************

voidMain(void)

{

/***************************************************************************************//最小系统函数定义

SYSTEM_INIT();

Port_Init();

Uart0_Init(115200);

/***************************************************************************************//用户定义函数:

注意此处不能开总中断

/***************************************************************************************

/***************************************************************************************OSInit();//InituCOS-II

OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_Stack[TASK_STACK_SIZE-1],Main_PRIO);//CreatetheMainTask

OSStart();//StartuCOS-II

}

/*********************************************任务1*********************************************/

voidMain_Task(void*pdata)

{

pdata=pdata;

OS_Time0_Init(TimeLength2ms);//initializeTarget

OS_Time0_Start();//StarttheS3C44B0XBSPRunning此处开总中断

/***************************************************************************************

//OSTaskCreate(Task1_Task,(void*)0,(OS_STK*)&Task1_Stack[TASK_STACK_SIZE-1],Task1_PRIO);

//OSTaskCreate(Task2_Task,(void*)0,(OS_STK*)&Task2_Stack[TASK_STACK_SIZE-1],Task2_PRIO);

//OSTaskCreate(Task3_Task,(void*)0,(OS_STK*)&Task3_Stack[TASK_STACK_SIZE-1],Task3_PRIO);

while

(1)

{

Sensor2_Motor();

OSTimeDlyHMSM(0,0,0,100);

}

}

/*********************************************任务1*********************************************/

voidTask1_Task(void*pdata)

{

pdata=pdata;

while

(1)

{

shorti,j;

for(i=0;i<=1000;i++)

{

for(j=0;j<=1000;j++)

{

Led_Display(0x01);

}

}

OSTimeDlyHMSM(0,0,10,0);

}

}

/********************************************任务2*********************************************/

voidTask2_Task(void*pdata)

{

pdata=pdata;

while

(1)

{

shorti,j;

for(i=0;i<=1000;i++)

{

for(j=0;j<=1000;j++)

{

Led_Display(0x03);

}

}

OSTimeDlyHMSM(0,0,30,0);

}

}

/*********************************************任务3*********************************************/

voidTask3_Task(void*pdata)

{

pdata=pdata;

while

(1)

{

shorti,j;

for(i=0;i<=100;i++)

{

for(j=0;j<=1000;j++)

{

Led_Display(0x05);

}

}

OSTimeDlyHMSM(0,0,50,0);

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1