智能循迹小车设计与实现.docx

上传人:b****6 文档编号:3288752 上传时间:2022-11-21 格式:DOCX 页数:18 大小:69.10KB
下载 相关 举报
智能循迹小车设计与实现.docx_第1页
第1页 / 共18页
智能循迹小车设计与实现.docx_第2页
第2页 / 共18页
智能循迹小车设计与实现.docx_第3页
第3页 / 共18页
智能循迹小车设计与实现.docx_第4页
第4页 / 共18页
智能循迹小车设计与实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

智能循迹小车设计与实现.docx

《智能循迹小车设计与实现.docx》由会员分享,可在线阅读,更多相关《智能循迹小车设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。

智能循迹小车设计与实现.docx

智能循迹小车设计与实现

智能循迹小车设计与实现

摘要本文介绍的是基于单片机STC89C52控制智能循迹小车的设计。

利用红外对光管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的运动,从而实现自动循迹避障的功能。

其中小车的电机由LG9110驱动,整个系统的电路结构简单,可靠性高。

 

关键词STC89C52LG9110红外对光管循迹小车

 

Themanufactureofintelligenttrackingcar

AbstractThisarticaleintroducesthedesignofintelligenttrackingcarbasedontheSTC89C52singlechipcomputer.Basedinfrareddetectionofblacklinesandtheroadobstacles,anduseaSTC89C52MCUasthecontrollingcoreforthemovement.Aelectronicdrived,whichcanautomatictrackandavoidobstacle,wasdesignedandfabricated.Inwhich,theelectricmachineryofcarisdrivedbytheLG9110.Theelectriccircuitstuctionofwholesystemissimple,andthefunctionisdependable.

 

KeywordsSTC89C52LG9110InfraredemittingdiodeTrackingcar

 

第1章引言

随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。

这种技术促使机器人技术也有了突飞猛进的发展。

单片机技术作为自动控制技术的核心之一,被广泛应用于工业控制、智能仪器、机电产品、家用电器等领域。

随着微电子技术的迅速发展,单片机功能也越来越强大,本设计基于单片机技术在智能寻迹小车控制系统的设计中,以STC89C52为核心,用LG9110驱动两个减速电机,当产生信号驱动小车前进时,是通过寻迹模块里的传感器管是否寻到黑线产生的电平信号通过传感器再返回到单片机,单片机根据程序设计的要求作出相应的判断送给电机驱动模块,让小车实现前进、左转、右转、停车等基本功能,寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,本实验中的寻迹是指在白色地板上寻黑线。

1.1设计目的

1、了解机械部件结构与机械安装过程;

2、掌握电动机齿轮箱内部结构及减速原理;

3、了解电子元器件的基本形状及焊接过程;

4、掌握电子元器件的焊接步骤与检测过程;

5、了解单片机内部结构与程序编制方法;

6、了解LED灯驱动方法,全面掌握流水灯/跑马灯编程技术;

7、了解数码管内部结构,掌握数码显示技术;

8、了解键盘结构原理,掌握中断查询技术;

9、了解话筒电路结构,掌握话筒输入技术;

10、了解蜂鸣器驱动技术,全面体现音乐报警功能;

11、了解光敏电阻结构原理,充分体现夜间自动照明功能;

12、了解红外发射与接收技术,有力体现防撞检测与智能寻迹功能

13、了解直流电机驱动原理,掌握电机驱动技术;

14、认识红外检测传感器,全面掌握红外遥控编码解码技术;

15、了解R232通信协议,掌握串口通信技术。

16、通过本机系统学习,全面掌握智能自动寻迹机器人的控制方法。

1.2设计要求

当前的电动小汽车基本上采取的是基于纯硬件电路的一种开环控制方法,或者是直线行使,或者是在遥控下作出前进、后退、转弯、停车等基本功能。

但是它们不能实现在某些特殊的场合下,我们需要能够自动控制的小型设备先采集到一些有用的信息的功能。

本文正是在这种需要之下开发设计的一种智能的电动小车的自动控制系统。

它以单片机STC89C51为控制核心,附以外围电路,在画有黑线的白纸“路面”上行使,由于黑线和白线对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”——黑线。

判断信号可通过单片机控制驱动模块修正前进方向,以使其保持沿着黑线行进。

轨迹探测模块用2对红外发射管。

2对各置于轨道外侧,当小车脱离轨道时,外面任意一只检测到黑线后,做出相应的转向调整,直到重新回到轨道。

 

 

第2章总体方案设计

2.1总体方案的设计思路

该简易智能小车在画有黑线的白纸“路面”上行使,不断地向地面发射红外光,利用红外线在不同颜色的物理表面具有不同的反射性质的特点,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。

当红外接收探头接收到信号后,再将信号送到单片机由单片机内部程序来控制电机,由电机完成小车的前进,转向。

因此,可根据接收到的反射光的强弱来判断“道路”——黑线。

2.2总体方案设计

整个路系统分为检测、控制、驱动三个模块。

首先利用光电对管对路面信号进行检测,把检测到的光信号转化为电信号,送给单片机进行处理,然后单片机输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。

系统方案方框图如图所示:

图2-2智能小车寻迹系统框

2.2.1控制器模块

方案一:

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

FPGA可以实现各种复杂的逻辑功能,规模大,密度高。

但由于本设计对数据处理速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时其芯片引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。

因此排除该方案。

方案一:

采用89C51作为控制核心。

针对本设计特点—多开关量输入的复杂程序控制系统,需要擅长处理多开关量得单片机,而不能用精简I/O口和程序存储的小体积单片机,A/D,D/A功能也不必选用,据此,我们选用STC89C51单片机,另外,该单片机价格低廉,使用简单。

综上所述,我们选用方案二。

2.2.2电机驱动模块

方案一:

采用继电器对电动机的开或关进行控制,通过开关的切换对小车的运动进行调整,此方案的优点是电路较为简单,缺点是继电器的响应速度慢,易损坏,寿命短,可靠性不高。

方案二:

市面上有专门的双电机驱动芯片LG9110,经测试性能可以满足小车的电机控制要求,而且外围电路比较简单,稳定性好,驱动能力强,能够很好的保证两电机的同步。

因此,采用方案二。

2.2.3黑线检测模块

方案一:

采用摄像头或探测头收集画板上信息。

用这种方法,对板面信息处理准确,但是成本过高,对硬、软件的要求都非常高,短时间内难做出实物来。

方案二:

使用可见光发光二级管和光敏二级管组成的发射-接受模块。

这种方案的缺点在于其他环境光源会对光敏二级管工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;如采用高亮发光管可以降低一定的干扰,但会增加额外的功率损耗。

方案三:

使用反射式红外二级管和接收管组合发射-接收器。

由于红外光波长比可见光长,因此受可见光的影响比较小,同时,红外对管还具有以下优点:

质量轻,灵敏度高,线性好,接口电路比较简单,安装方便,对于本系统中近距离的检测,用它作为传感器将是最理想的。

因此,本系统采用方案三

2.2.4电机模块

方案一:

采用直流电机。

直流电机使用方便,价格便宜,有优良调速特性,实现方便平滑调速,调整范围广,有较强过载能力,能承受频繁的冲击负载,可频繁无级快速启动,制动,反转。

方案二:

采用步进电机。

步进电机的运动精度很高,由其组成的位置控制系统定位准确,稳定时间短,一般可采用开环控制。

但控制系统必须由双环形脉冲信号,功率驱动电路等组成方可使用,控制相对复杂。

综上所述,直流电机的电路相对简单,功能合题意,使用方便,价格便宜,本系统采用直流电机作为动力源。

 

第3章系统硬件设计

 

3.1系统的硬件组成

硬件设计总体上以STC89C52为核心,辅以必要的外围电路,完成红外传感器对运动轨迹的检测,信号的处理,电机的转动等功能。

系统总框图如下:

3.2单片机模块

此部分是整个小车运行的核心部件,起着控制小车所有运行状态的作用。

这里选择了ATMEL公司的STC89C52作为控制核心部件。

该单片机要想正常工作,还需有复位电路和晶振电路,此单片机的最小系统图如下:

 

 

图3-2

3.3电机驱动模块

LG9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。

该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750~800mA的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降与静态电流;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。

9110被广泛应用于玩具汽车电机驱动、自动阀门电机驱动、电磁门锁驱动等电路上。

该驱动芯片LG9110的IA,IB口接单片机,输出口OA,OB接电机。

O口为低电平时,电机正传。

O口为高电平时,电机反转。

电机驱动电动如下图3-3:

 

图3-3

3.4红外检测模块

本单元模块中,白色管作为发色管,黑色管作为接管,当白色管发射一束光,遇到黑线或白色物体反射,黑色管接收到反射光,然后把光信号转化为电信号送给单片机进行处理,控制电机的正反转,电路原理图如下:

 

图3-4

3.5声控模块

话筒的阻值随接收到声音信号强度的变化而变化,在电容正端产生变化的电压信号,经电容C5耦合和基本共射极三极管V3的电压反向存在,通过单片机P0.4引脚采集和处理可实现小车的声控功能,正常情况下P0.4管脚采集到的是高电平信号,当话筒收到强度足够的声音后,三极管导通后P0.4管脚变为低电平。

原理图如图3-5:

图3-5

3.6报警模块

单片机上电后各管脚默认为高电平,三极管不导通。

当需要执行报警时,单片机P0.6管脚出现低电平信号,三极管导通驱动蜂鸣器报警。

如图3-6

 

图3-6

3.7串口通信模块

此模块用于单片机和电脑进行串口通信,但由于计算机串口为RS232电平,高电平为

—12V,低电平为+12V,而单片机为TTL电平,高电平为+5V,低电平为0V,因此,计算机与单片机之间通讯时需要加电平转换芯片MAX232.原理图如下

 

图3-7

 

第4章系统软件设计

 

该系统的软件程序采用模块结构,由C语言编写完成,主要由初始化程序,偏道调整程序、声光指示程序,读红外对光管状态,显示程序等模块组成。

总的设计流程图如下:

循迹流程图:

 

循迹程序:

#include//包含51单片机相关的头文件

sbitLeftLed=P2^0;//定义前方左侧指示灯端口

sbitRightLed=P0^7;//定义前方右侧指示灯端口

sbitLeftIR=P3^5;//定义前方左侧红外探头端口

sbitRightIR=P3^6;//定义前方右侧红外探头端口

sbitFontIR=P3^7;//定义前方正前方红外探头端口

sbitM1A=P0^0;//定义左侧电机驱动A端

sbitM1B=P0^1;//定义左侧电机驱动B端

sbitM2A=P0^2;//定义右侧电机驱动A端

sbitM2B=P0^3;//定义右侧电机驱动B端

sbitB1=P0^4;//定义语音识识别传感器端口

sbitSB1=P0^6;//定义蜂鸣器端口

#defineRunShowP1//定义数据显示端口

voidDelay()//定义机器人调转子时间子程序

{unsignedintDelayTime=50000;//定义机器人转弯时间变量

while(DelayTime--);//机器人转弯循环

SB1=!

SB1;//蜂鸣器闪响

return;

}

voidControlCar(unsignedcharConType)//定义电机控制子程序

{

M1A=0;//将M1电机A端初始化为0

M1B=0;//将M1电机B端初始化为0

M2A=0;//将M2电机A端初始化为0

M2B=0;//将M2电机B端初始化为0

switch(ConType)//判断用户设定电机形式

{

case1:

//前进//判断用户是否选择形式1

{M1A=1;//M1电机正转

M2A=1;//M2电机正转

break;

}

case2:

//后退//判断用户是否选择形式2

{M1B=1;//M1电机反转

M2B=1;//M2电机反转

break;

}

case3:

//左转//判断用户是否选择形式3

{

M2A=1;//M2电机正转

break;

}

case4:

//右转//判断用户是否选择形式4

{M1A=1;//M1电机正转

//M2电机反转

break;

}

case8:

//停止//判断用户是否选择形式8

{

break;//退出当前选择

}

}

}

voidmain()//主程序入口

{

bitRunFlag=0;//定义小车运行标志位

RunShow=0;//初始化显示状态

ControlCar

(1);//初始化小车运行状态

while

(1)//程序主循环

{

Start:

LeftLed=LeftIR;//前方左侧指示灯指示出前方左侧红外探头状态

RightLed=RightIR;//前方右侧指示灯指示出前方右侧红外探头状态

if(LeftIR==0)//左侧红外探头没有接收到白色道路信号

{

ControlCar(4);//左侧没有信号时,开始向右转一定的角度

Delay();//修改这里进行转弯角度的调整

Delay();//同上

Delay();

gotoNextRun;

}

if(RightIR==0)

{

ControlCar(3);//右侧没有信号时,开始向左转一定的角度

Delay();//修改这里进行转弯角度的调整

Delay();//同上

Delay();

gotoNextRun;

}

gotoStart;

NextRun:

ControlCar

(1);

}

}

 

 

避障流程图:

避障程序:

#include//包含51单片机相关的头文件

sbitLeftLed=P2^0;//定义前方左侧指示灯端口

sbitRightLed=P0^7;//定义前方右侧指示灯端口

sbitLeftIR=P3^5;//定义前方左侧红外探头端口

sbitRightIR=P3^6;//定义前方右侧红外探头端口

sbitFontIR=P3^7;//定义前方正前方红外探头端口

sbitM1A=P0^0;//定义左侧电机驱动A端

sbitM1B=P0^1;//定义左侧电机驱动B端

sbitM2A=P0^2;//定义右侧电机驱动A端

sbitM2B=P0^3;//定义右侧电机驱动B端

sbitB1=P0^4;//定义语音识识别传感器端口

sbitSB1=P0^6;//定义蜂鸣器端口

#defineRunShowP1//定义数据显示端口

voidDelay()//定义机器人调转子时间子程序

{unsignedintDelayTime=50000;//定义机器人转弯时间变量

while(DelayTime--);//机器人转弯循环

SB1=!

SB1;//蜂鸣器闪响

return;

}

voidControlCar(unsignedcharConType)//定义电机控制子程序

{

M1A=0;//将M1电机A端初始化为0

M1B=0;//将M1电机B端初始化为0

M2A=0;//将M2电机A端初始化为0

M2B=0;//将M2电机B端初始化为0

switch(ConType)//判断用户设定电机形式

{

case1:

//前进//判断用户是否选择形式1

{M1A=1;//M1电机正转

M2A=1;//M2电机正转

break;

}

case2:

//后退//判断用户是否选择形式2

{M1B=1;//M1电机反转

M2B=1;//M2电机反转

break;

}

case3:

//左转//判断用户是否选择形式3

{M1B=1;//M1电机反转

M2A=1;//M2电机正转

break;

}

case4:

//右转//判断用户是否选择形式4

{M1A=1;//M1电机正转

M2B=1;//M2电机反转

break;

}

case8:

//停止//判断用户是否选择形式8

{

break;//退出当前选择

}

}

}

voidmain()//主程序入口

{

bitRunFlag=0;//定义小车运行标志位

RunShow=0;//初始化显示状态

ControlCar

(1);//初始化小车运行状态

while

(1)//程序主循环

{

LeftLed=LeftIR;//前方左侧指示灯指示出前方左侧红外探头状态

RightLed=RightIR;//前方右侧指示灯指示出前方右侧红外探头状态

RunShow=FontIR;//数据显示窗口,指示前方红外探头状态

if(FontIR==0||LeftIR==1||//判断前方,左侧,右侧是否有信号输入

RightIR==1)

{ControlCar

(2);//让小车后退

Delay();//开始小车后退延时子程序

Delay();//决定了小车后退的步数

Delay();//改变它可以改小车后退的距离

Delay();//这里只是一个延时

ControlCar(3);//改变小车为左转方向

Delay();//开始小车左转延时子程序

Delay();//改变它可以改变小车旋转的角度

Delay();//同上

Delay();//同上

ControlCar

(1);//改变小车为前进运行状态

SB1=1;//这个多一步将蜂鸣器关闭

}

if(B1==0)//判断是否有声音信号输入

{

while(B1==0);//去除声音多余的杂波

if(RunFlag==0)//判断小车当前的运行状态标志

{RunFlag=1;//改变小车当前的运行状态标志

ControlCar(8);//停止小车的运行

}

else//否则执行的代码如下

{RunFlag=0;//判断小车的运行状态标志

ControlCar

(1);//改变小车为前进的运行状态

}

}

}

}

 

第5章总结

5.1总结

经过十多天的努力我们组的课程设计终于完成了,但是现在回想起来做课程设计的整个过程,颇有心得,其中有苦也有甜,艰辛同时又充满乐趣,不过乐趣尽在其中!

这次做课程设计不仅是对所学知识的一种检验,而且也是对自己能力的一种提高。

本次设计我们按照老师组织的设计步骤的要求来进行,从课题分析开始,再进行总体设计、详细设计,最后到系统实现。

每一步都让我将理论学习的知识应用到实践中去。

也使我掌握了一整套规范的设计操作流程。

这次课程设计让我学习到很多。

焊接阶段又让我认识了一些新的器件,另外,让我明白了焊接必须准确,规范,才能为下一阶段的调试程序打下基础。

最重要的是我从最后的课程设计说明书中学会了如何设计一份报告。

本次设计的小车基本上实现了所需功能,但还有一些不足,由于所用对光管较少,循迹,避障的效果不是很理想。

虽然本次课程设计结束了,但这只能是一个开始。

单片机设计还有很多。

在微型计算机控制领域,要学的实在太多,仅大学生涯所学实在有限。

我们只有对自己有了更高的要求,才能作为动力不断取得新的成绩!

 

参考文献

[1]谢自美·电子线路设计.试验.测试[M]·华中科技大学出版社,2004

[2]宗光华·机器人的创意设计与实践[M]·北京航空航天大学出版社,2004

[3]RichardBarnett《嵌入式C语言编程与MicrochipPIC》清华大学出版社,2006

[4]马忠梅《单片机的C语言应用程序设计》第三版北京航空航天大学出版社,2005

[5]杨帮文·新编传感器实用宝典[M]·机械工业出版社,2005

[6]周坚编·单片机C语言轻松入门[M]·北京航空航天大学出版社,2006

 

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

当前位置:首页 > 小学教育 > 语文

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

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