智能小车实习报告_智能寻迹小车实习报告

2020-02-28 实习报告 下载本文

智能小车实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“智能寻迹小车实习报告”。

智能循迹避障小车

设计报告

学院名称:

机械工程学院

专业班级:

光信息120

2学生姓名:石云杰、李志岗、李召旭 学生学号: 3120303055、54、46

摘要

根据小车各部分功能,模块化硬件电路,并调试电路。将调试成功的各个模块逐个地“融合”成整体,再进行软件编程调试,直到完成小车,使小车智能地循迹、避障。利用红外线传感器检测黑线与障碍物,当左边传感器检测到黑线时,小车往左边偏转,右边的传感器检测到黑线时,小车往右边偏转。当前边用于避障的传感器检测到障碍物时,小车往左偏转避开障碍物后,回到原轨道。以STC12C5A60S2单片机为控制芯片控制电动小车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机控制。

关键词:AT89S52单片机;

;红外对管;智能小车

L298N

一、背景

随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。

自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。

随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实用有效的方法。

机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自动导引小车(AVG—auto-guide vehicle)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。

该智能小车可以作为机器人的典型代表。它可以分为三大组成部分:传感器检测部分、执行部分、CPU。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。单片机驱动直流电机一般有两种方案:第一,勿需占用单片机资源,直接选择有PWM功能的单片机,这样可以实现精确调速;第二,可以由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。考虑到实际情况,本文选择第二种方案。CPU使用STC12C5A60S2单片机,配合软件编程实现。

二、小车硬件模块

2.1 STC12C5A60S2单片机

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

STC12C5A60S2单片机的特点如下: 1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051; 2.工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机); 3.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节;

4.片上集成1280字节RAM; 5.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;

6.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;

2.2模拟舵机

按照舵机的转动角度分有180度舵机和360度舵机。

180度舵机只能在0度到180度之间运动,超过这个范围,舵机就会出现超量程的故障,轻则齿轮打坏,重则烧坏舵机电路或者舵机里面的电机。360度舵机转动的方式和普通的电机类似,可以连续的转动,不过我们可以控制它转动的方向和速度。

一般来说,我们用的舵机有以下几个部分组成:直流电动机、减速器(减速齿轮组)、位置反馈电位计、控制电路板(比较器)。舵机的输入线共有三根,红色在中间,为电源正极线,黑色线是电源负极(地线)线,黄色或者白色线为信号线。其中电源线为舵机提供6V到7V左右电压的电源。

在舵机上电后,舵机的控制电路会记录由位置反馈电位计反馈的当前位置,当信号线接收到PWM信号时会比较当前位置和此PWM信号控制所要转到得位置,如果相同舵机不转,如果不同,控制芯片会比较出两者的差值,这个差值决定转动的方向和角度。

2.3循迹模块

轮式智能小车采用3个红外线传感器

红外对管实物图

红外巡线模块

红外寻迹模块是利用红外线反射的原理,根据反射的强度来判定颜色。本寻迹模块是用来识别黑白线,黑线输出高电平,白线输出低电平。由于使用的是红外线,所以抗干扰能力很强。这样做更加确保了机器人的稳定性。

三、软件模块

3.1 软件调试平台

STC单片机是基于51控制核的高速单片机。对于程序的编译和链接,我们可以使用KEIL C 帮助完成。

在对芯片进行编程时,我们使用STC公司提供的烧录软件STC_ISP_V3.5 3.1.1 Keil C 我们使用的单片机是STC12C5A60S2,是51的内核。指令周期都优大幅度的缩减,运行速度自然提高。由于我们使用的是51内核,所以我们可以使用支持C51的开发软件帮助编辑程序和编译链接程序。KEIL C就是这样一款软件。

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

KEIL C的软件界面如下:

在项目中我们可以建立自己的工程,根据工程添加编辑程序文件。最终使用“完全编译”功能完成编译。在烧录单片机之前还应该生成对应的“.HEX”INTEL 二进制文件。有了这个文件,我们才能使用STC提供的软件进行烧写单片机的操作。

3.1.2 STC_ISP_V3.5 STC _ISP_V3.5是由STC开发的程序烧写测试综合软件。它可以通过普通的串口(COM)烧写单片机的程序。软件运行稳定。操作相对方便。软件的操作界面如下:

下面给出操作的具体步骤: 1.选择芯片类型;

2.选择要烧写的HEX文件;

3.设置串行端口和波特率,这里要注意端口号,波特率的选择比较任意一般为38400;

4.选择外部晶振;与下载无关;清FLASH区;

5.点击下载按钮后,打开单片机供电电源。在上电后单片机会自动进入编程状态。通过提示可以判断是否下载完成。

四、机械模块

智能小车可以分为三部分——传感器部分、控制器部分、执行器部分。控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。

执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。

驱动部分:智能小车的直流电机功率较小,而小车上装有电池、电机、电子器件等,使得电机负担较重。为使小车能够顺利启动,且运动平稳,在直流电机和轮车轴之间加装了三级减速齿轮。

电池的安装:将电池盒尽量安置在车体的电机前或后位置,降低车体重心,提高稳定性,同时可增加驱动轮的抓地力,减小轮子空转所引起的误差。

五、小车特色

此智能小车是基本单片机为核心,设计小车的开发平台,作品的设计将前沿的电子器件、市场应用热点与基础理论有效地结合起来,既能检验理论学习效果、又能在动手实践中检验学生对元件的利用程度,设计的创新性、技术复杂度及实用性,激发学生的创新灵感。基于此平台可以设计出各种各样的生活实用装置,如盲人导行车。

硬件方面:采用双步进控制电动车,利于车转向,利用光电传感器与单片机之间的信号传输与转换,实现电动车的智能化。

软件方面:传感器在检测到某物时,输出信号会发生变化,让单片机只对此规律的信号作出反应,减少了数据处理量,缩短了系统反应时间,并简化了程序,提高了系统的控制精度。整个运行过程中通过实时信息采集,利用端口查询,实现对信号的实时检测和处理。

小组成员感想

光信1202李召旭3120303046 经过两周的实际操作和实习,我们小组完成了光电智能小车的组装和程序调制,实现了光电智能小车的寻迹功能和避障功能,完成了光电智能小车沿给定的轨道行走的任务。

这次课程设计让我学习并巩固了光电传感器的知识,光电传感器主要利用光信号进行感应和进行信号处理。光电传感器具有反应灵敏、准确度高和精确度高的特点,光电传感器广泛应用于当今的科技领域,在探测、感应和信号处理方面的应用越来越多。

在光电智能小车的组装和程序调制过程中,我们虽然遇到了一些问题,但经过一次又一次的认真思考,一遍又一遍的修改尝试终于找出了原因,最终完成了光电智能小车的功能。

通过这次实习,我明白了实践的重要性。在实习过程中,必须将理论知识和实际情况结合起来。实践才能出真知,通过我们自己亲身实践亲自动手,我们应用掌握的光电传感器知识,使知识不再是空洞的。在课程设计过程中,我们不断的发现错误,不断改正,发现问题,不断探索,并不断领悟,在解决问题和克服错误的过程中最终完成了设计任务。不仅这次实习是这样,在今后的学习和实践过程中,我们也不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后 一一进行解决,只有这样,才能做成想要做的事情,才能成功。解决问题的方式是多种多样的,可以向有能力比自己精通的人请教,可以自己去查找资料,可以去网络上搜索,而解决问题的过程正是一个学习和提升的过程,所以我们应该不错过任何一个问题,也不应该惧怕问题,而应该迎难而上,尽力去解决问题,只有这样,我们才能够真的学习到知识并提升自身的各种能力。

课程设计是一门专业课,它不仅让我学习到了许多专业知识,也让我学到了许多书本外的知识。设计过程让我对抽象的理论有了具体 的认识。通过这次课程设计,我掌握了光电传感器的识别和功能;了 解了电路的连线方法;掌握了小车的控制方法和技术,通过查询资料,我也掌握了程序的编写和小车的调试。而调试及程序的修改过程是最艰难的,但是经过我们小组成员的合作和配合,最后终于使小车完成了任务。

在实习过程中,我们培养了自身的独 立思考、动手操作的能力,在各种其它能力 上也都有了提高。最重要的是我们还学习到了许多学习的方法,这些方法在我们以后的学习生活中是重要的。

在实习的两周时间里,虽说时间并不十分长,但是真的可以学到很多很多有用的东西,一方面我们巩固了以前所学过的知识,另一方面我们培养并提升了自己的合作和动手能力。通过这次课程设计使我懂得实验过程中团队合作的重要性,我们在合作起来更加默契,在程序编写和小车组装中,我们分工合作,互相帮助,使实习过程变得简单起来,在成功后一起体会喜悦的心情。这就是团结合作的力量,只 有互相之间默契融洽的配合才能换来最终的成功。

此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没 有弄不懂的知识,才能收获到成功的喜悦。

总之,通过这次课程设计,我收获了许多,这些收获对我以后的生活和学习都将产生十分重要作用。

光信息1202 石云杰 3120303054 机器人从诞生之初简单的机械运动,完成简单的人类动作,到如今机器人的智能化。现代的机器人不再是当初人类的工友了,而是渐渐成为人类的朋友与伙伴。人们培育机器人的目标是将机器人“修炼”为人。我不知道,机器人技术员这样做的目的是否有些滑稽。人类不够用吗?地球上60亿的人类还不够多吗?再造一批人类,这又是怎样的动机?

当然,技术员们虽然想将机器人尽早“修炼成人”,主要是指其中的智能化目标,拥有人类的大脑特性,这样能自己判断以实现帮助人类工作,但不需要人类的“费心”指导。人类希望有“人”帮助自己劳动,但却更希望这种帮助是免费的,而且是一切免费的。不仅不需要付工钱,连说话也没必要。对比来讲,奴隶时代虽然过去,但是人们仍然有天生的惰性,在这个奴隶早被废除的时代,人类再次在日益发展的机器人身上看到了希望。不少的报道称机器人是“人类保姆”,但是它既不拿工资,仅仅耗费些电力(但是我想这也会在某天被天才的人类解决),想想这比奴隶还奴隶!

日本的机器人产业是先进的,不仅有强大的技术基础,而且商业化的程度也很深。机器人已经分离出很多的种类。有针对工业劳动的,有针对家庭服务的,有支持广播电视播音主持的。最近炒得比较火的,日本甚至造出服务宅男的机器人!机器人分出很多的种类,奴隶也分各种档次。在大多数国家依法治国的年代,多数人还是不敢逾越法律的红线,于是人类对着一堆“破铁”动起脑筋。它就是一个机器而已,不属于人权范围!人类的奴隶时代早已经过去,机器人的奴隶时代正悄然来临!总有一些“智慧”的人类,千方百计地为自己本属可耻的行为找一个恰当而似乎正当的途径或借口!

我们是否该为机器人的发展制定一些底线与原则?我们不能让智能化的机器人的存在为触犯法律红线的行为出现与存在。法律的目的是遏制逾越道德与正义的行为,但这不仅仅是人与人之间,即使是在人与机器人之间,但它毕竟是发生了,但我们却没有对之同样的处理与遏制,这难道不是某种程度上对法律的无视吗?

假如若干年后的某天,家家户户、社会的任何角落都是机器人在忙碌,玩命的工作(24小时从不间断)。多数人可以享受没有假期的假日(假日中不插播工作),晒沙滩或享受旅行。按照如今的一些迹象,可以推算一下,未来应该是人手一位机器人,机器人女友与男友。到时的屌丝应该非常多(不管是难还是女),因为机器人的定制,容颜可以依照女神或男神的标准制造,而且可以永久不苍老,终身享用!再者,不光具有男神或女神的外貌气质,而且具有本属于机器人的无偿服务性,人们又有什么理由不接受呢?而且机器人如果加上商业利益化驱使,这样的现象总会在某一天出现。人人努力购买一位机器人,总有一天会像现今人人努力购房买房一样!但是一些现象仍会同时出现,机器人不工作,主人打几下就好了。一些遗弃的机器人沦落街头,总有一些闲散人员欺负。或是,别家的机器人与邻居家的主人形成矛盾,于是邻居家的主人叫来自家的机器人帮助吵架甚或动手。人类制造机器人的趋势本就是使之愈加人类化,能保证机器人不会在那一天对这些行为判断为“危险”动作?

弗兰克的机器人都学会了说谎,《云图》中的机器人某天都受到自我寻求解放的鼓励,机器人的奴隶时代,总有一天奴隶也会选择成为主人!

以上当然是某种假想,机器人的智能化是必定的趋势。但是,我们或许更应该清楚,我们使机器人智能化的目的在于使机器人帮助人类完成人类无法做到的事情与任务,而不是作为实现某些人内心可耻行为的途径!

光信息1202 李志岗 3120303055

附录:智能循迹小车程序

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

名称:小车实验 说明:

1、小车前后左右停止控制+循迹避障控制

2、请注意舵机接线与程序中的一致 注:此版本程序对应反向舵机

***************************************************************/ #include #include

#define uchar unsigned char /* 预定义*/ #define uint unsigned int #define l_stop 125 #define r_stop 125

uchar i;uchar l_speed;uchar r_speed;/*字符定义,uchar即

unsigned char,l_speed、r_speed左右电机速度*/ uint a,b;//a-left;b-right /*unit即 unsigned int*/

sbit LeftCon=P2^0;/*管脚定义,LeftCon左电机*/ sbit RightCon=P2^1;/*右电机*/ sbit L=P0^0;/*左传感器及信号*/ sbit R=P0^1;/*右传感器,对地面有反馈,而对地面的黑色没有反应,即不反馈。*/ sbit M=P0^2;/*前端传感器*/

void instate()//初始化 { i=0;a=1750;b=1750;TMOD=0x21;TH1=0xe6;//波特率1200 TL1=0xe6;//波特率1200 PCON=0x00;//SMOD=0 SCON=0x40;//串口工作方式1 REN=1;TH0=-((1500+l_stop*2)/256);TL0=-((1500+r_stop*2)%256);TR0=1;TR1=1;EA=1;ET0=1;ES=1;} void servo()interrupt 1 using 1 { switch(i){

case 0:

{

TH0=-(a/256);//a=l_stop*2+1500

TL0=-(a%256);

RightCon=1;

i++;

break;

}

case 1:

{

TH0=-((2500-a)/256);

TL0=-((2500-a)%256);

RightCon=0;

i++;

break;

}

case 2:

{

TH0=-(b/256);

TL0=-(b%256);

LeftCon=1;

i++;

break;

}

case 3:

{

TH0=-((17500-b)/256);

TL0=-((17500-b)%256);

LeftCon=0;

i=0;

break;

}

} } //_____________________________________________________________________________________________________________ //动作函数库

void action(uchar num){ switch(num){

case 242://stop

{

a=l_stop*2+1500;

b=r_stop*2+1500;

}

break;

case 243: //forward

{

a=(l_stop+50)*2+1500;

b=(r_stop-50)*2+1500;

}

break;

case 244: //backward

{

a=(l_stop-50)*2+1500;

b=(r_stop+50)*2+1500;

}

break;

case 245: //turn left

{

a=(l_stop+50)*2+1500;

b=(r_stop+50)*2+1500;

}

break;

case 246://turn right

{

a=(l_stop-50)*2+1500;

b=(r_stop-50)*2+1500;

}

break;

default://stop

a=l_stop*2+1500;

b=r_stop*2+1500;

break;} }

//循迹// void xunji(){ if(L==0&&R ==0){ action(243);DelayMs(5000);} /*0及没有障碍物反馈(在黑色带的上方),左右都没有障碍物时前进*/ else if(L==1&&R ==0){ action(246);DelayMs(5000);} /*右有障碍物,左没障碍,右转*/ else if(L==0&&R ==1)

{ action(245);DelayMs(5000);} /*左有障碍物,右没障碍,左转*/ else action(243);

}

//*************************************************************************************************************** void main(void){

SP=0x70;//堆栈指针初始化(这里的做法和汇编是一样的)

//这里需要特别注意!在没有调用任何函数前,就必须初始化堆栈指针。

//如果调用函数后做初始化工作,就会发生指针指向出错的问题。instate();//初始化单片机(Initialization MCU)

while(1){

xunji();/*先循迹再避障*/

if(M==0)

action(243);

} }

《智能小车实习报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
智能小车实习报告
点击下载文档
相关专题 智能寻迹小车实习报告 实习报告 小车 智能 智能寻迹小车实习报告 实习报告 小车 智能
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文