基于单片机的自动避障小车.docx

上传人:b****0 文档编号:9180595 上传时间:2023-05-17 格式:DOCX 页数:22 大小:241.27KB
下载 相关 举报
基于单片机的自动避障小车.docx_第1页
第1页 / 共22页
基于单片机的自动避障小车.docx_第2页
第2页 / 共22页
基于单片机的自动避障小车.docx_第3页
第3页 / 共22页
基于单片机的自动避障小车.docx_第4页
第4页 / 共22页
基于单片机的自动避障小车.docx_第5页
第5页 / 共22页
基于单片机的自动避障小车.docx_第6页
第6页 / 共22页
基于单片机的自动避障小车.docx_第7页
第7页 / 共22页
基于单片机的自动避障小车.docx_第8页
第8页 / 共22页
基于单片机的自动避障小车.docx_第9页
第9页 / 共22页
基于单片机的自动避障小车.docx_第10页
第10页 / 共22页
基于单片机的自动避障小车.docx_第11页
第11页 / 共22页
基于单片机的自动避障小车.docx_第12页
第12页 / 共22页
基于单片机的自动避障小车.docx_第13页
第13页 / 共22页
基于单片机的自动避障小车.docx_第14页
第14页 / 共22页
基于单片机的自动避障小车.docx_第15页
第15页 / 共22页
基于单片机的自动避障小车.docx_第16页
第16页 / 共22页
基于单片机的自动避障小车.docx_第17页
第17页 / 共22页
基于单片机的自动避障小车.docx_第18页
第18页 / 共22页
基于单片机的自动避障小车.docx_第19页
第19页 / 共22页
基于单片机的自动避障小车.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的自动避障小车.docx

《基于单片机的自动避障小车.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动避障小车.docx(22页珍藏版)》请在冰点文库上搜索。

基于单片机的自动避障小车.docx

基于单片机的自动避障小车

目录

第1节引言。

3

1.1研究背景。

3

1.2本设计任务和主要内容。

3

第2节系统主要硬件电路设计。

4

2.1系统原理组成框图。

4

2.2系统主控模块电路。

4

2.2.1STC89C52单片机性能优点。

4

2.2.2主控模块电路。

5

2.3车体框架。

5

2.4电源及稳压模块。

6

2.5逻辑模块。

7

2.6感测模块。

7

2.7连接模块。

8

2.8电机驱动模块。

9

2.9显示模块。

10

第3节系统软件设计。

11

3.1程序设计流程图。

11

3.2系统主程序设计。

12

3.3PWM信号控制小车走向流程图。

13

3.4PWM信号控制电机流程序。

13

3.5液晶初始化及显示子程序。

15

第4节结束语。

18

参考文献。

19

基于单片机的自动避障小车

数理与信息工程学院06电子信息工程刘东福生

指导老师余水宝

第1节引言

本课程设计是以功耗低、抗干扰能力强的STC89C52单片机为核心,外加路面障碍物感测模块――光电开关组完成对路面情况的实时监测,并把所采集的信息传输给单片机,单片机根据路面情况做出恰当的处理,进而控制小车的走向。

1.1研究背景

在科学探索及紧急抢险中经常要对一些危险或人类不能直接到达的地域进行探测,这就需要用机器人来完成。

而机器人在复杂地形行进时自动避障是一项必不可少也是最基本的功能。

因此,自动避障系统的研发就应运而生。

自动避障小车就是基于这一系统开发而成的。

随着科技的发展,对于未知空间和人类所不能直接到达的地域的探索逐步成为热门,这就使机器人自动避障功能的研发有了重大意义。

自动避障小车就是自动避障机器人中的一类。

自动避障小车可以作为地域探索机器人和紧急抢险机器人的运动系统,让机器人在行进中自动避过障碍物。

1.2本设计任务和主要内容

本设计是对以单片机STC89C52为核心的系统根据感测模块传输的前方路面信息控制小车行驶走向的软、硬件设计开发。

系统要能够做到准确及时监测前方路面信息并传输给主控模块,做到根据前方路面信息及时调整小车的走向,做到显示小车的走向和小车已经行驶过的路程。

主要内容是:

①感测模块实时监测路面情况并及时传输给单片机;

②单片机核心模块根据感测模块给予的信息控制小车两电机转动;

③电机驱动模块驱动两电机转动,实现转向与行走;

④液晶显示模块显示走向和已行驶过的路程。

第2节系统主要硬件电路设计

2.1系统原理组成框图

 

 

图2-1系统原理组成框图

2.2系统主控模块电路

2.2.1STC89C52单片机性能优点:

课堂上我们学习的是8051单片机,但实际应用中现在我们是不会再用8051单片机了。

学习8051单片机是学习一种方法,学习单片机的基本结构,指令。

现在单片机种类繁多,各有各的优点,结合具体情况恰当选择单片机型号也是非常重要的,在此系统中采用STC89C52为主控模块芯片,选此芯片的理由是:

01.与MCS-51单片机完全兼容:

指令兼容,引脚兼容;

02.高保密性:

无法读出,因此无法解密;

03.超强抗干扰能力:

电源、I/O接口、时钟均有抗干扰措施;

04.高可靠性:

1宽电压范围,不怕电源波动5V产品3.4V~6V,;

2宽温度范围:

-40。

C~85。

C;

05.低电磁辐射:

1可禁止ALE输出,降低辐射;

2可选6时钟/机器周期,降低晶振频率,降低辐射;

3单片机时钟振荡器增益可设为1/2;

06.超低功耗:

1掉电模式典型功耗:

≦1uA,可由外中断唤醒;

2空闲模式典型功耗:

2mA;

3正常工作典型功耗;4mA~7mA;

07.可在线编程,节约投资;

08.强驱动能力,无论灌电流还是拉电流,均优于MCS-51单片机;

09.高速度,最高晶振达到90MHZ;

10.内部资源更丰富,与MCS-51单片机相比增加了:

1T2定时/计数器;

2内部数据存储器RAM增加了1~8倍;

3自带A/D和PWM;

4有P4口;

2.2.2主控模块电路:

 

 

图2-2系统核心STC89C52连接电路图

2.3车体框架

方案1:

自己设计制作车架

自己制作小车底盘,用两个直流电机作为主动轮,利用两电机的转速差完成前进、左转、右转、后退等动作。

直流电机扭矩大,转速较慢,易于控制和调速,符合避障小车的要求。

而且自己制作小车框架,可以根据电路板及传感器安装需求灵活设计。

但自己制作小车制作周期较长,且费用较高,有可能自己做的不太美观,因而放弃了这一方案。

方案2:

购买玩具电动车

玩具电动车价格低廉,有完整的驱动、传动和控制单元,其中传动装置是所需的,缩短了开发设计周期。

玩具动车有两个直流电机,再加上自己设计的驱动模块就可以由单片机来控制了,而且买来的玩具电动车一般比较牢固,比较美观。

所以采用了此方案。

2.4电源及稳压模块

方案1:

采用交流电经直流稳压处理后供电

采用交流电提供直流稳压电源,电流驱动能力及电压稳定性最好,且负载对电源影响也最小。

但由于需要电线对小车供电,极大影响了避障小车行动的灵活性及地形的适应能力。

而且避障小车极易把拖在地上的电线识别为障碍物,人为增加了不必要的障碍。

故放弃了这一方案。

方案2:

采用干电池组进行供电

采用四节干电池降压至5V后给单片机及其他逻辑单元供电,另取六节干电池为电机及光电开关供电。

这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作。

但由于电机驱动需要比较大的电流,所以采用干电池供电使用的周期不能很长,实用性不太好。

故放弃了这一方案。

方案3:

采用可充电蓄电池供电

采用可充电蓄电池给驱动和感测模块供电,其它采用蓄电池经LM2575稳压后供电。

虽然蓄电池的重量比较大,但是蓄电池能够供电的时间长而稳定,况且买来的小车负重能力好,所以采用此方案完全可行。

故采用了此方案。

其原理图如下图所示:

 

 

图2-3供电电源及稳压模块:

LM2575电路图

2.5逻辑模块

在感测模块和单片机中断接口之间,需要经过电平的逻辑处理,信息才能被单片机所感知。

主要是一块三输入或非门,所以我们采用现成的74ls27芯片实现逻辑功能。

 

图2-4信号逻辑模块:

74LS27电路图

2.6感测模块:

方案1:

使用超声波探测器

超声波探测器探测距离远,测距方便。

但由于声波衍射现象较严重,且波包散面太大,易造成障碍物的错误判断。

同时,超声波探测具有几厘米甚至几十厘米的盲区,这对于我们的避障小车是个致命的限制。

故放弃了这一方案。

方案2:

使用光电对管探测

光电对管价格低廉,性能稳定,但探测距离太近(一般不超过3cm),使得小车必须制动迅速。

而我们由于采用普通直流电机作为原动力,制动距离至少需要10cm。

因此不采取这一方案。

方案3:

使用视频采集处理装置进行探测

使用CCD实时采集小车前进路线上的图像并进行实时传输及处理,这是最精确的障碍物信息采集方案,可以对障碍物进行精确定位和测距。

但是使用视频采集会大大增加小车成本和设计开发难度,而且考虑到我们小车行进转弯的精确度并未达到视频处理的精度,因而使用视频采集在实际应用中是个很大的浪费,所以放弃了这一方案。

方案4:

使用光电开关进行障碍物信息采集

使用三只E3F-DS30C4光电开关,分别探测正前方,前右侧,前左侧障碍物信息,在特殊地形(如障碍物密集地形)可将正前方的光电开关移置后方进行探测。

E3F-DS30C4光电开关平均有效探测距离0~30cm可调,且抗外界背景光干扰能力强,可在日光下正常工作(理论上应避免日光和强光源的直接照射)。

小车换档调速后的最大制动距离不超过30cm,一般在10~20cm左右,因而探测距离满足小车需求。

故采用此方案。

光电开关排列如图所示:

图2-5光电开关示意图

2.7连接模块

m价钱也不高,市场上也容易买到。

其原理图如下图所示:

 

图2-6连接模块:

TLP521-4电路图

2.8电机驱动模块

此模块的主要作用的驱动直流电机,让直流电机有足够的动力。

方案1:

使用分立原件搭建电机驱动电路

使用分立原件搭建电机驱动电路造价低廉,在大规模生产中使用广泛。

但分立原件H桥电路工作性能不够稳定,较易出现硬件上的故障,故放弃了这一方案。

方案2:

使用L298N芯片驱动电机

L298N是一个具有高电压大电流的全桥驱动芯片,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号,而且带有使能端,方便PWM调速,电路简单,性能稳定,使用比较方便。

L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,正好符合小车两个直流电机的驱动要求。

其原理图如下所示:

 

图2-7驱动模块:

L298电路图

2.9显示模块:

方案1:

采用数码管显示

数码管完全可用来显示已行驶过的路程,且数码管亮度大,夜间观测也比较方便,所以数码管在一般场合是首选,但是数码管只能显示数字,发挥的空间比较窄。

所以不采用此方案。

方案2:

采用液晶显示

用128×64的液晶屏作为显示器件,可以显示小车行驶的方向,小车行驶过的路程,小车行驶过的时间等等,最重要的是液晶能够显示汉字,提供的信息非常直观,故采用此方案。

其原路图如下所示:

 

图2-8显示模块:

128×64电路图

 

第3节系统软件设计

3.1程序设计流程图

本系统设计流程图如下所示:

 

图3-1系统软件主流程图

3.2系统主程序设计:

ORG0000H

LJMPMAIN

ORG0003H

LJMPINTT0;外部中断0入口

ORG000BH;定时器/计时器0中断入口

LJMPTIME0

ORG0050H

MAIN:

MOVSP,#6FH;主程序

SETBEA;开总中断

SETBEX0;开外部中断0

SETBIT0;设置外部0为边沿触发

SJMP$;等待外部中断

INTT0:

MOVA,#00H;累计器清零

MOVC,P2.0;光电管1传来的信号

MOVACC.0,C;光电管1值送累加器0位

MOVC,P2.1;光电管2传来的信号

MOVACC.1.C;光电管2值送累加器1位

MOVC,P2.2;光电管3传来的信号

MOVACC.2,C;光电管3值送累加器2位

CJNEA,#00H,LOOP1;是000,左前中都有障碍物,转LOOP1

CJNEA,#01H,LOOP2;是001,左前有障碍物,右方无障碍物,转LOOP2

CJNEA,#02H,LOOP3;是010,左右有障碍物,前方无障碍物,转LOOP3

CJNEA,#03H,LOOP4;是011,左方有障碍物,前右无障碍物,转LOOP4

CJNEA,#04H,LOOP5;是100,左方无障碍物,前右有障碍物,转LOOP5

CJNEA,#05H,LOOP6;是101,左右无障碍物,前方有障碍物,转LOOP6

CJNEA,#06H,LOOP7;是110,左中无障碍物,右方有障碍物,转LOOP7

LO0P1:

…………………

LOOP2:

…………………

LOOP3:

…………………

LOOP4:

…………………

LOOP5:

…………………

LOOP6:

…………………

LOOP7:

………………

RETI

3.2PWM信号控制小车走向流程图

 

图3-2PWM信号控制电机流程图

3.3PWM信号控制电机流程序

PWMH1DATA30H;直流电机1高电平脉冲的个数

PWMH2DATA31H;直流电机2高电平脉冲的个数

ZHENG1BIT20H.0;直流电机1正转标志0正转,1反转

ZHENG2BIT20H.1;直流电机2正转标志0正转,1反转

PWMDATA34H;PWM周期

COUNTER1DATA35H;直流电机1计数COUNTER1

COUNTER2DATA36H;直流电机2计数COUNTER2

0RG2000H

PWM:

MOVSP,#60H;设置堆栈,首地址为#60H

MOVPWMH1,#08H;电机1高电平脉冲赋初值

MOVPWMH2,#08H;电机2高电平脉冲赋初值,与电机1相同

MOVCOUNTER1,#01H;COUNTER1赋初值1

MOVCOUNTER2,#01H;COUNTER2赋初值1

MOVZHENG1,#00H;电机1正转标志位置0

MOVZHENG2,#00H;电机2正转标志位置0

MOVPWM,#15H;PWM周期赋初值15H

MOVP1,#00H;P0口都为低电平,方便电机控制

MOVTMOD,#02H;定时器0在模式2下工作

MOVTL0,#38H;定时器200us产生一次溢出

MOVTH0,#38H;自动重装的值

SETBET0;使能定时0中断

SETBEA;使能总中断

SETBTR0;开始计时

TIME0:

PUSHPSW;现场保护

PUSHACC

INCCOUNTER1;COUNTER1加1

INCCOUNTER2;COUNTER2加1

MOVA,COUNTER1

CJNEA,PWMH,TIME011;如果等于高电平脉冲数

MOVCY,ZHENG1;判断是否要反转

JZCY,Z1;是否反转

CLRP1.1;电机1一端变为低电平,反转引脚

Z1:

CLRP1.0;电机1一端变为低电平,正传引脚

TIME011:

CJNEA,PWM,TIME02;如果等于周期数

MOVCOUNTER1,#01H;计数器1复位

MOVCY,ZHENG1;判断是否要反转

JZCY,Z11;是否反转

SETBP1.1;置P1.0为高电平,反转引脚

Z11:

SETBP1.0;置P1.0为高电平,正传引脚

MOVA,COUNTER2

CJNEA,PWMH,TIME021;如果等于高电平脉冲数

MOVCY,ZHENG2;判断是否要反转

JZCY,Z2;是否反转

CLRP1.3;电机2一端变为低电平,反转引脚

Z2:

CLRP1.2;电机2一端变为低电平,正传引脚

TIME012:

CJNEA,PWM,TIME02;如果等于周期数

MOVCOUNTER2,#01H;计数器1复位

MOVCY,ZHENG2;判断是否要反转

JZCY,Z21;是否反转

SETBP1.3;置P1.3为高电平,反转引脚

Z21:

SETBP1.2;置P1.2为高电平,正转引脚

TIME02:

;出堆栈

POPACC

POPPSW

RETI

3.3液晶128×64初始化及各显示子程序:

RETBITP2.7;液晶与单片机连接脚

PSBBITP2.6

ENBITP2.5

RWBITP2.3

RSBITP2.4

COMBIT30H;命令/数据

128*64:

CLRRET;液晶初始化

LCALLDELAY10MS

SETBRET

SETBPSB

CLREN

MOVCOM,#30H;液晶功能设定

LCALLW_COM

MOVCOM,#0CH;液晶显示状态

LCALLW_COM

MOVCOM,#01H;液晶清楚显示

LCALLW_COM

MOVCOM,#06H;液晶地址归位

LCALLW_COM

CHECKBUSY:

;液晶查忙

MOVP0,#FFH

CLRRS

SETBRW

SETBEN

MOVA,#FFH

ANLA,P0

CPLA

JZCHECKBUSY

CLREN

RET

W_COM:

LCALLCHECKBUSY;液晶写指令

CLRRS

CLRRW

SETBEN

MOVP0,COM

LCALLDELAY10MS

CLREN

RET

W_DATA:

LCALLCHECKBUSY;液晶写数据

SETBRS

CLRRW

SETBEN

MOVP0,COM

LCALLDELAY10MS

CLREN

RET

DELAY10MS:

;延时10MS

MOVR6,#20

D1:

MOVR7,#250

DJNZR7,$

DJNZR6,D1

RET

 

第4节结束语

以上就是我这次期末课程设计全部内容。

本系统是以STC89C52为核心,外加各个模块,最终达到让小车遇障碍物灵活避障的目标。

本系统硬件电路比较简单,主要是通过软件来实现各个功能,这样就可以让小车负载轻,小车行动就变得更灵活了。

硬件电路感测模块的光电开关组价格昂贵是本系统的一不足之处,但是其他拥有此功能的传感器精度不高,所以为了设计好这个系统还是选了光电开关组。

此小车我认为要改进的是,小车走向时能有语音播放,这样就能更直观的知道小车接下来的走向了。

通过这次期末课程设计,我对单片机有了更深层次的了解,课本上我们学习的是8051单片机,但是这次课程设计我选的是现在工业用的单片机STC89C52单片机,此单片机操作与8051绝大部分是一样的,所以知道了8051就可以对STC89C52进行编程操作。

学习8051是学习一种方法,要能够举一反三。

现在单片机种类繁多,根据具体情况选择合适的单片机是非常重要的。

在这次期末课程设计中,我遇到了很多问题。

最害怕的也是最基本的是写汇编程序,由于以前学习单片机时写的都是C语言,所以一段时间总觉得汇编语言过时了,不如C语言灵活,但是经过这次期末课程设计觉得有些C语言跟汇编是没法比的,对汇编语言也更熟悉了。

上课时学汇编指令,只是记下来而已,没有真正的写过,因此经过这次期末课程设计,让我知道了,学习一门语言光记是没有用的,而且很容易忘记,最好的方法是在实际中多写,多改,不要怕写不好,走出了第一步,接下里的就容易了。

 

参考文献:

[1]何立民单片机高级教程—应用于设计北京航空航天大学出版社2000.8

[2]张鑫单片机原理及应用电子工业出版社2008.5

[3]郁有文传感器原理及工程应用西安电子科技大学出版社2007.2

[4]杨素行模拟电子技术基础简明教程高等教育出版社2007.5

[5]余孟尝数字电子技术基础教程高等教育出版社2006.12

.

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2