智能寻迹小车的研究与开发.docx

上传人:b****3 文档编号:3834614 上传时间:2022-11-25 格式:DOCX 页数:44 大小:512.36KB
下载 相关 举报
智能寻迹小车的研究与开发.docx_第1页
第1页 / 共44页
智能寻迹小车的研究与开发.docx_第2页
第2页 / 共44页
智能寻迹小车的研究与开发.docx_第3页
第3页 / 共44页
智能寻迹小车的研究与开发.docx_第4页
第4页 / 共44页
智能寻迹小车的研究与开发.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

智能寻迹小车的研究与开发.docx

《智能寻迹小车的研究与开发.docx》由会员分享,可在线阅读,更多相关《智能寻迹小车的研究与开发.docx(44页珍藏版)》请在冰豆网上搜索。

智能寻迹小车的研究与开发.docx

智能寻迹小车的研究与开发

 

材料清单

 

一、研究报告

1.项目成果简介

2.项目研究背景和意义

3.研究计划

4.研究内容

5.成果创新点

6.项目研究展望

二、附件材料

附件一:

实物电路图

附件二:

实物照片

附件三:

源程序清单

三、实物作品

 

衡阳市第三届大学生创新大赛相关项目的研究报告

项目名称:

智能寻迹小车的研究与开发

项目类型:

实用型

成果形式:

1、研究报告;2、实用作品

参赛学生:

陈绪雄、周锋、蒋晶

指导教师:

李祖林、雷军、李旭华

一、项目成果简介

本项目使用光电传感器检测小车的运动轨迹,金属传感器和超声波传感器检测小车周围的障碍,对小车的相关信息进行采集,采用AVR单片机Atmega128L作为电动小车的寻迹控制,AVR单片机Atmega128L完成算法分析、信息处理和小车的控制。

构建了以微处理器为核心、多传感器的小车信息检测与融合、声光报警与LCD数码显示、双向PWM控制驱动电机的智能小车寻迹系统。

电动小车能沿着任意设定的轨迹行走,遇到障碍自动停止5秒并发出声光报警,之后能自动倒回按设定的轨迹行走,小车能自动纠偏。

经过测试,小车能够按任意设定的轨迹行走流畅。

二、项目研究背景和意义

随着计算机技术、控制技术、信息技术的快速发展,工业的生产和管理进入了自动化、信息化和智能化时代,智能化已经成为时代发展的需要。

在柔性自动化生产线、智能仓储管理及物流配送等领域,当生产现场环境恶劣时,人工不能完成的任务如物料运输和装卸等,可采用智能寻迹小车完成相应的任务。

基于生产现场和日常生活的实际需要,研究和开发智能小车寻迹系统具有十分重要的意义。

该项目的研究可以应用于机车头灯自动寻迹、工厂自动化、仓库管理、智能玩具和民用服务等领域,可提高劳动生产效率,改善劳动环境。

三、研究计划

2007年6月1日---2007年6月20日,收集资料,确定研究内容、技术方案、研究路线。

(由组内3人共同研究)。

2007年6月21日---2007年7月30日,完成小车硬件的电路制作(陈绪雄负责小车整体方案确定、制作电路板,周锋负责购买元器件和电路焊接,蒋晶负责电路图绘制)。

2007年8月1日---2007年9月8日,完成小车软件的编写和小车整机调试。

(三人共同协作完成)。

2007年9月10日---2008年3月6日,完成成果总结。

四、研究内容

1方案与论证

1.1控制芯片的选择

方案一:

选用AVR单片机Atmega128L,Atmega128L是高性能、低功耗的AVR®8位微处理器,64引脚。

采用先进的RISC结构,具有133条指令,大多数可以在一个时钟周期内完成。

它具有两个独立的预分频器和比较器功能的8位定时器/计数器和两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器及具有独立预分频器的实时时钟计数器。

片内带有模拟比较器。

具有上电复位以及可编程的掉电检测功能。

其片内资源丰富,具有:

8个外部中断,4个定时计数器,53个I/O口,可解除I/O口资源不足的困难。

其引脚大多数都有具有第二功能,功能强大。

.

方案二:

采用AT89S52单片机,AT89S52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

AT89S52有5个中断源,和3个定时计数器。

方案三:

采用FPGA(现场可编辑门列阵)作为系统控制器。

FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。

FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。

方案比较:

由三种方案可以看出,以Atmega128L核心可以方便地实现对各个部分的控制和外接,而AT89S52而需要外扩大量的I/O口才能满足需要,而FPGA的高速处理能力得不到充分发挥且价格较贵,所以我们选择方案一。

(2)轨道行程控制方案的选择

为了使电动车能够识别黑线不跑离轨道,我们在系统中加装了光电传感器和金属传感器。

1.2路面检测

我们采用检测黑线的方法来控制智能小车的行走轨迹,使用了两个红外对管来检测黑线,同时用超声波传感器检测小车周围的障碍物。

方案一:

采用热探测器。

热探测器是利用所接收到的红外辐射后,会引起温度的变化,温度的变化引起电信号输出,且输出的电信号与温度的变化成比例,温度变化是因为吸收热辐射能量引起的,与吸收红外辐射的波长没有关系,即对红外辐射吸收没有波长的选择。

但热探测器对其吸收的红外辐射波长没有选择性,受外界环境的影响比较大。

方案二;采用光电探测器。

光电探测器接收红外辐射后,由于红外光子直接把材料的束缚态电子激发成传导电子,由此引起电信号输出,信号大小与所吸收的光子数成比例。

且这些红外光子的能量的大小(即红外光还必须满足一定的波长范围),必须满足一定的要求,才能激发束缚电子,起激发作用。

光电探测器吸收的光子必须满足一定的波长,否则不能被吸收,所以受外界影响比较小,抗干扰比较强。

基于上面分析,我们采用方案二

1.3小车运行终点检测

方案一:

采用计算路程的方法来控制。

只要将计算出来的路程不断的与预置的初值进行比较,只要相等说明已经到了终点,倒回起点也如此。

这种方法不仅计算路程麻烦而且占用了CPU的开销。

方案二:

采用检测金属片的方法。

只要在运行轨迹的终点放置一块铁片,再用金属传感器检测金属片就可以了,电路简单、程序采用中断的方式不会占用很多CPU资源。

综合上述我们采用方案二

1.4显示装置的选择

方案一:

采用美信公司的MAX7219是一款串行共阴极数码管动态扫描显示的驱动芯片,其峰值段电流可达到40mA最高串行扫描频率10MHz,典型扫描频率为1.3MHz,仅用3线串行接口传送数据,可直接与单片机接口,用户可以方便地修改其内部参数以实现多位LED显示。

它内含硬件动态扫描显示控制电路,每片芯片可同时驱动8位共阴LED。

点是控制比较简单,而且串行显示只占用很少的I/O口。

方案二:

采用点阵型LCD显示,点阵型LCD虽然占用的I/O口资源多,控制比较复杂,但其功能强大的,显示信息量大,可以保证良好的用户模式。

它具有显示质量高、体积小、重量轻、功耗低、轻薄短小、无辐射危险、平面直角显示以及影像稳定不闪烁等优势,可视面积大,图面积效果好,分辨率高,抗干扰能力强等特点等优点。

考虑到Atmega128I/O口资源丰富和LCD的众多优点,我们选择使用LCD显示。

2主要电路设计与分析

2.1系统结构框图

单片机将传感器送来的数据进行处理、算法分析,其输出信号控制电机并送LCD显示。

光电传感器负责黑线的检测,引导智能小车的行使轨迹。

金属传感器负责前起点和终点的检测,当金属传感器检测到金属条时,说明电动小车已经到起点或终点,采用超声波传感器检测智能小车的周围障碍物及其距离,若检测的距离达到超过给定值,发出声光报警,声音报警信号为“请注意倒车”。

系统框图如图2.1。

图2.1系统框图

 

2.2系统模块理论分析与设计

(1)探测路面黑线的基本原理

当光线照射到路面会反射,由于黑线和地面对光的反射系数不同,可根据接收到的反射光强弱,用光电传感器判断黑线。

光电管基本原理图如图2.2。

图2.2光电管基本原理图

当光电管检测不到黑线时,红外光管接收到反射回来的红外光,使其输出由高电平立即跳至低电平。

我们在小车上并排加上两个红外光电管,黑线置于两红外光电管之间,并且将两个光电管产生的电信号脉冲分别送单片机的PE2和PE3。

这样通过PWM来调节两个电机的速度来校正行使路线,电动车行驶状态和红外对管产生的电信号关系如表2-1。

表2-1电动车行驶状态和红外对管产生的电信号关系

(2)金属探测模块

金属探测模块主要用于行驶轨迹中金属片的探测。

考虑到金属一般都是导体,根据电磁场理论可知,在受到变化的电磁场作用的任何导体,都会产生电涡流。

因此,在本系统中采用电感式接近开关实现对金属片的检测。

电感式接近开关由LC高频振荡器和放大处理电路组成,金属物体接近传感器的振荡感应头时,物体内部产生电涡流,当电涡流作用于接近开关时,接近开关振荡能力衰减,内部电路的参数发生变化,由此识别出有无金属物体接近,进而控制开关的通和断,并以电信号脉冲的形式送入单片机的PD7。

电感式接开关内部工作原理图如图2.3。

图2.3电感式接开关内部工作原理图

 

(3)电机驱动模块

L298是一个4通道逻辑驱动电路,既将逻辑控制电平进行功率放大,可以用于功率驱动的电压。

电机驱动模块电路如图2.4所示。

图2.4电机驱动模块电路

 

PWM(脉冲宽度调制)控制,配用L298驱动电路实现直流电机的调速,非常简单且调速范围大,它利用的是直流斩波原理,假设高电平导通,在一个周期T内导通时间为t,那么一个周期T内的平均电压

,其中

=

称为占空比。

各周期内不同的占空比示例如图2.5。

图2.5各周期内不同的占空比示例

电机的转速与电机两端的电压成正比,而电机两端的电压与控制波形的占空比成正比,因此电机的速度与占空比成正比,占空比越大,电机转得越快,当占空比

时,电机转速达到最大。

3程序设计

主程序流程图主要包括传感器输出中断的查询、电平的检测和电机的响应等。

主程序流程图如图3.1所示。

图3.1主程序流程图

 

4功能测试

通过测试,智能小车能按任意设定路线行驶,能实现以下功能:

(1)沿着直线轨迹行使。

(2)沿着S型设定轨迹行使。

(3)沿着任何设置的轨迹行使。

(4)小车行使到达轨迹终点时,自动停留5秒并发出声光报警之后自动寻迹倒回行使到起点。

(5)沿轨迹行使过程中,检测到障碍物时,自动停止5s,并发出声光报警“请注意倒车”。

4小结

项目设计中采用具有丰富资源的Atmega128单片机和光电传感器、金属传感器、超声波传感器等,实现相应信号的检测与小车的控制,系统结构简单、稳定、具有较高的控制精度、抗干扰能力强,实现了智能小车能按任意轨迹行驶。

五、成果创新点

智能小车能检测障碍物及其距离,并发出声光报警“请注意倒车”信号,智能小车能沿任意设定轨迹行驶,具有实际应用价值和推广价值。

六、项目研究展望

对智能寻迹小车的研究,加装GPS(全球卫星定位系统)或加装基于Internet的接口电路,智能寻迹小车将具有更广泛的应用前景和使用价值,这也是我们以后的研究方向。

 

附录一:

实物电路图

 

 

附件二:

实物照片

 

 

附录三:

程序清单

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

Thisprogramwasproducedbythe

CodeWizardAVRV1.24.1dStandard

AutomaticProgramGenerator

Copyright1998-2004PavelHaiduc,HPInfoTechs.r.l.

http:

//www.hpinfotech.ro

e-mail:

********************

Project:

LTPC-3500

Version:

1.0

Date:

2007-6-1

Author:

HNHYLEI

Company:

HNGXY

Comments:

Chiptype:

ATmega128L

Programtype:

Application

Clockfrequency:

8.000000MHz

Memorymodel:

Small

ExternalSRAMsize:

0

DataStacksize:

128

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

#include

#include

#include

#include

#include

//-----------------------------------------------

#definebuzzer_ledPORTB.0

#defineLED1PORTD.0

#defineLED2PORTD.1

#defineLED3PORTD.2

#defineLED4PORTD.3

#definelpwm_ffPORTB.4

#definelpwm_rePORTA.4

#definerpwm_ffPORTB.7

#definerpwm_rePORTA.5

#defineblack_lPINE.2

#defineblack_rPINE.3

#definemetal_detectPINF.0

#definemodelPINF.2

//----------------------------------------液晶

#defineucharunsignedchar

#definersPORTA.7

#definerwPORTB.5

#defineenPORTB.6

#defineretPORTA.6

//LCD数据数据口初始化

#definedataPORTC

ucharcommand,data1,data2,com0;

ucharlcd_bufl,lcd_bufg;//定义显示缓冲区

//-----------------------------------------------

//Declareyourglobalvariableshere

//ThisflagissetonUSART0Receiverbufferoverflow

bitleft_run=0;//左走

bitright_run=0;//右走

bitleft_ff=1;//左前进

bitright_ff=1;//右前进

bitleft_pwm;//用于左PWM

bitright_pwm;//用于右PWM

//-----------

//---------------

bitfilter_start=0;//数字滤波

bitfilter_over=0;//数字滤波

bitblack_l1=0;//左黑线1

bitblack_l2=0;//左黑线2

bitblack_r1=0;//右黑线1

bitblack_r2=0;//右黑线2

bitleft_turn=0;//左转

bitright_turn=0;//右转

bitmetal1=0;//金属1

bitmetal2=0;//金属2

bitmode=0;//测试模式

bitstop_point;//停车点

bitbuzzer=0;//蜂鸣

bitlcd_dsp=0;//LCD刷新

bitread_over;//

bitgradient_set=0;//

bitstop_status=0;//

unsignedcharspeed_l;//left速度控制量

unsignedcharspeed_r;//right速度控制量

unsignedcharfilter_count;//数字滤波

unsignedcharexcute_step1;//

unsignedcharexcute_step2;//

unsignedintbcd_temp0=0;//BCD入口

//-------------------------------

unsignedcharcount1=0;//秒计时

unsignedcharcount2=0;//转弯计时

unsignedintcount3=0;//停止时间计时

unsignedintcount4=0;//

unsignedintcount5=0;//

unsignedintstop_time=0;//停止时间

unsignedintgradient=0;//

unsignedintgradient2=0;//

unsignedintgradient_old;//

unsignedintgradient2_temp1[8];//

unsignedintfilter_temp1[50];//数字滤波

unsignedlongintfilter_sum;

unsignedintfilter_temp3;

//------------------------------

unsignedcharj1,k1;//公共循环变量

unsignedcharbcd_temp[5]={0};//BCD分解值

//-----------------------------------

unsignedintahead_time=0;//前进时间

unsignedintback_time=0;//倒退时间

//EEPROM-----------------------------------------

//-----------------------------------------

voidbcd_con(unsignedcharnumb);

voidclear_lcd();

voidlcd_int();

voidlcd_set();

voiddisplay();

voiddis_code1();

voiddis_code2();

voidwrite_command(ucharcommand);

voidwrite_data(uchardata0);

//-----------------------------------------

//----------------------------------------------

//ExternalInterrupt0serviceroutine

interrupt[EXT_INT0]voidext_int0_isr(void)

{

//Placeyourcodehere

}

//ExternalInterrupt4serviceroutine

interrupt[EXT_INT4]voidext_int4_isr(void)

{

TCNT3H=0x00;

TCNT3L=0x00;

}

//ExternalInterrupt5serviceroutine

interrupt[EXT_INT5]voidext_int5_isr(void)

{

if(filter_start==0)

{

filter_temp1[filter_count]=(unsignedint)TCNT3H*0xff+(unsignedint)TCNT3L;

filter_count++;

if(filter_count==50)//60

{

filter_count=0;

filter_start=1;

}

}

if(filter_over==1)

{

filter_over=0;

gradient=filter_temp3;

read_over=1;

}

}

//-----------------------------------------------

//Timer0overflowinterruptserviceroutine

interrupt[TIM0_OVF]voidtimer0_ovf_isr(void)

{

//TCNT0=0x06;

left_pwm=~left_pwm;

if(left_pwm==1)

{

if(left_turn==1)

{

TCNT0=255-(speed_l/2);

}

else

{

TCNT0=255-speed_l;

}

}

else

{

if(left_turn==1)

{

TCNT0=speed_l/2;

}

else

{

TCNT0=speed_l;

}

}

if(left_run==1)

{

if(left_pwm==1)

{

if(left_ff==1)

{

lpwm_ff=1;

lpwm_re=0;

}

else

{

lpwm_ff=0;

lpwm_re=1;

}

}

else

{

lpwm_ff=0;

lpwm_re=0;

}

}

else

{

lpwm_ff=0;

lpwm_re=0;

}

}

//-------------------------------------------------------------

//Timer1overflowinterruptserviceroutine

interrupt[TIM1_OVF]voidtimer1_ovf_isr(void)

{

//Placeyourcodehere

TCNT1H=0xff;

TCNT1L=0x06;

//------------------------前进时间

if(++count1>=128)

{

count1=0;

if(excute_step1==0&&excute_step2!

=2)

{

ahead_time++;

}

if(excute_step1==2)

{

back_time++;

}

lcd_dsp=1;

//-------------

if(mode==1&&ahead_time<8)

{

gradient2_temp1[ahead_time]=gradient;

}

}

//------------------------

if(stop_point==1)//停车计时

{

if(++count3>=128)

{

count3=0;

stop_time++;

lcd_dsp=1;

if(buzzer==1)

{

buzzer_led=~buzzer_led;

LED1=~LED1;

LED2=~LED2;

LED3=~LED3;

LED4=~LED4;

}

else

{

buzzer_led=1;

LED1=1;

LED2=1;

LED3=1;

LED4=1;

}

if(stop_time==5)

{

stop_point=0;

buzzer_led=1;

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

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

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

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