基于Arduino单片机避障小车机器人毕业论文.docx

上传人:b****5 文档编号:12179624 上传时间:2023-04-17 格式:DOCX 页数:42 大小:2.22MB
下载 相关 举报
基于Arduino单片机避障小车机器人毕业论文.docx_第1页
第1页 / 共42页
基于Arduino单片机避障小车机器人毕业论文.docx_第2页
第2页 / 共42页
基于Arduino单片机避障小车机器人毕业论文.docx_第3页
第3页 / 共42页
基于Arduino单片机避障小车机器人毕业论文.docx_第4页
第4页 / 共42页
基于Arduino单片机避障小车机器人毕业论文.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

基于Arduino单片机避障小车机器人毕业论文.docx

《基于Arduino单片机避障小车机器人毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Arduino单片机避障小车机器人毕业论文.docx(42页珍藏版)》请在冰豆网上搜索。

基于Arduino单片机避障小车机器人毕业论文.docx

基于Arduino单片机避障小车机器人毕业论文

基于Arduino单片机避障小车机器人毕业论文

论文编码:

TP39

 

首都师范大学本科毕业设计论文

 

基于行为设计的移动机器人设计与实现

——机器人机械设计模块

Design and Implementation of Mobile Robot 

Based on Behavior Design

—— Robot Mechanical Solutions

 

论文作者:

张倩颖

院系:

信息工程学院

专业:

计算机科学与技术

学号:

1111000055

指导老师:

徐敏

完成日期:

2015年4月25日

摘要

本文简要介绍了基于行为设计的移动机器人设计与实现----一种基于Arduino新型集成开发环境的超声波避障小车的工作原理。

其中包括对小车的执行组件、搭建结构、传感器、Arduino单片机软件编程及试验结果的介绍。

本方案以Arduino单片机为控制核心,基于蝙蝠超声波测距的原理,利用超声波传感器,检测小车前方障碍物的距离,然后把数据传送给单片机。

当超声波检测到距离小车前方25CM有障碍物时单片机就发出指令让小车左转一定角度,然后停止行进继续探测.如果前方25CM没有障碍物则直行,否则继续左转一定角度。

如此通过超声波不断的循环检测周边环境的情况进行自动避障。

本系统在硬件设计方面,以Arduino单片机为控制核心,以超声波传感器检测前方障碍物,从而自动避障。

在软件方面,利用Arduino语言进行编程,通过软件编程来控制小车运转。

该系统在驱动方面采用L298N驱动2个直流电机带动小车运行。

并且,用PWM系统调速,控制小车前进的速度。

实现小车根据外部环境,做出前进、后退和转向等动作,从而完成避障的功能,本设计具有有一定的实用价值。

关键词:

Arduino单片机;超声波传感器;避障

第一章绪论

1.1论文的选题背景

随着现代计算机技术的不断发展和普及,机器人的发展已经遍及近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。

小到智能玩具,大到机械、电子、冶金、交通、宇航、国防等各个领域。

人们将计算机技术更加广阔的运用的人类生活中,制造能替代人劳动的机器一直是人类的梦想,并一直在为之努力。

在我们的生活里,有很多的机器人,如图1.1所示,这两种机器人分别是扫地机器人和灭火机器人。

他们在我们的生活中非常常见也很实用,他们的特点就是无需人们的控制,能够自行运动完成他们的任务。

那么这就需要一个非常必要的基础功能,那就是能够感知并躲避前方的障碍物。

因此,在本次的设计中,我们将设计出一个能够避障机器人,在具有这个基本功能的基础上,我们就可以为他附加更多的功能,赋予它更多的实用价值。

选用Arduino单片机作为控制核心,使用仿生超声波技术传感器进行避障的实现。

“智能避障机器人”作为现代社会的新产物,也是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。

图1.1

1.2Arduino单片机概述

Arduino,是一个基于开放原始码的软硬件平台,构建于开放原始码simpleI/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。

它包含两个主要的部分:

硬件部分是可以用来做电路连接和Arduino电路板;另外一个则是ArduinoIDE,你的计算机中的程序开发环境。

你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

 

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。

板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,收录进微控制器。

对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(basedonProcessing)来实现的。

基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信(比如Flash,Processing,MaxMSP)来实现。

可以自己动手制作,也可以购买成品套装;Arduino所使用到的软件都可以免费下载.硬件参考设计(CAD文件)也是遵循availableopen-source协议,你可以非常自由地根据你自己的要求去修改他们.

Arduino可以使用开发完成的电子元件例如Switch或sensors或其他控制器、LED、步进马达或其他输出装置。

Arduino也可以独立运作成为一个可以跟软件沟通的接口,例如说:

flash、processing、Max/MSP、VVVV或其他互动软件…。

Arduino开发IDE接口基于开放源代码原,可以让您免费下载使用开发出更多令人惊艳的互动作品。

其主要特点如下:

1)开放源代码的电路图设计,程序开发接口免费下载,也可依个人需求自己修改。

2)使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3)Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。

有了bootloader之后,可以通过串口或者USBtoRs232线更新固件。

4)可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:

红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)

5)支持多种互动程序,如:

Flash、Max/Msp、VVVV、PD、C、Processing等。

6)应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。

我们为什么要使用Arduino?

有很多的单片机和单片机平台都适合用做交互式系统的设计。

例如:

ParallaxBasicStamp,Netmedia’sBX-24,Phidgets,MIT’sHandyboard和其它等等提供类似功能的。

所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。

Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:

和其它平台相比,Arduino板算是相当便宜了。

最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。

而且Arduino软件可以跨平台运行在Windows,MacintoshOSX,和Linux操作系统。

而大部分其它的单片机系统都只能运行在Windows上。

另外,它具有简易的编程环境。

初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。

对于老师们来说,一般都能很方便的使用Processing编程环境,所以如果学生学习过使用Processing编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。

软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。

Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVRC编程语言(因为Arduino语言实际上是基于AVRC的)。

类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C代码。

Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。

大大降低了软件开发难度,适宜非专业爱好者使用。

优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。

1.3Arduino机器人发展现状

我国目前的发展现状是研制中的智能移动机器人智能水平并不高,只能说是智能移动机器人的初级阶段。

智能移动机器人研究中当前的核心问题有两方面:

一方面是,提高智能移动机器人的自主性,这是就智能移动机器人与人的关系而言,即希望智能移动机器人进一步独立于人,具有更为友善的人机界面。

从长远来说,希望操作人员只要给出要完成的任务,而机器能自动形成完成该任务的步骤,并自动完成它。

另一方面是,提高智能移动机器人的适应性,提高智能移动机器人适应环境变化的能力,这是就智能移动机器人与环境的关系而言,希望加强它们之间的交互关系。

智能移动机器人涉及到许多关键技术,这些技术关系到智能移动机器人的智能性的高低。

这些关键技术主要有以下几个方面:

多传感信息耦合技术,多传感器信息融合就是指综合来自多个传感器的感知数据,以产生更可靠、更准确或更全面的信息,经过融合的多传感器系统能够更加完善、精确地反映检测对象的特性,消除信息的不确定性,提高信息的可靠性;导航和定位技术,在自主移动机器人导航中,无论是局部实时避障还是全局规划,都需要精确知道机器人或障碍物的当前状态及位置,以完成导航、避障及路径规划等任务;路径规划技术,最优路径规划就是依据某个或某些优化准则,在机器人工作空间中找到一条从起始状态到目标状态、可以避开障碍物的最优路径;机器人视觉技术,机器人视觉系统的工作包括图像的获取、图像的处理和分析、输出和显示,核心任务是特征提取、图像分割和图像辨识;智能控制技术,智能控制方法提高了机器人的速度及精度;人机接口技术,人机接口技术是研究如何使人方便自然地与计算机交流。

在各国的智能移动机器人发展中,美国的智能移动机器人技术在国际上一直处于领先地位,其技术全面、先进,适应性也很强,性能可靠、功能全面、精确度高,其视觉、触觉等人工智能技术已在航天、汽车工业中广泛应用。

日本由于一系列扶植政策,各类机器人包括智能移动机器人的发展迅速。

欧洲各国在智能移动机器人的研究和应用方面在世界上处于公认的领先地位。

中国起步较晚,而后进入了大力发展的时期,以期以机器人为媒介物推动整个制造业的改变,推动整个高技术产业的壮大

1.4Arduino智能避障机器人研究意义和目的

机器人的感觉传感器种类非常多,其中视觉传感器成为研制自动行走和驾驶机器人的重要部件。

机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。

本设计以超声波作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。

我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的,在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。

本设计主要体现多功能小车的智能避障功能,本设计中的理论方案、分析方法及特色与创新点等可以为自动运输机器人、采矿勘探机器人、家用自动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义。

同时小车可以作为玩具的发展对象,为中国玩具市场技术含量的缺乏进行一定的弥补,实现经济收益,形成商业价值。

我们所设计的智能移动机器人利用超声波能够在路面上顺利躲避障碍物,从而在导盲和辅助人类行动方面也有着重要意义。

1.5项目主要研究内容

本设计题目为《基于行为设计的移动机器人设计与实现》是以Arduino单片机为控制核心,主要研究小车的避障功能。

利用超声波传感器检测道路上的障碍,然后把数据传送给单片机,当超声波检测到距离小车前方有障碍物时单片机就发出指令让小车左转一定角度,然后停止运行继续探测.如果前方没有障碍物就直走,否则继续左转一定角度。

如此通过超声波不断的循环检测周边环境的情况进行自动避障。

该功能的小车能够实现在无人操作的情况下在比较宽阔平坦的环境中避开障碍物。

当机器人在行走过程中遇到前方障碍时,能够根据有效范围内的距离作出相应处理,由单片机软件发出转弯、直行、后退指令,避免机器与障碍物相撞。

第二章 避障小车机器人的总体设计

2.1设计原理与方法

本设计中直流电机PWM控制系统的主要功能包括实现对直流电机的加速、减速,并且可以调整电机的转速,能够很方便的实现电机的智能控制。

主体电路:

即直流电机PWM控制模块。

这部分电路主要由AT89S52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。

其间是通过AT89S52单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。

该直流电机PWM控制系统由以下电路模块组成:

设计控制部分:

主要由AT89S52单片机的外部中断扩展电路组成。

直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。

智能小车采用后轮驱动,两个后轮各用一个电机,前轮是万象轮,起到支撑和转向的作用。

2.2硬件设计

本小车的硬件部分分为几个模块:

超声波传感器、Arduino单片机、电源、两个直流电动机、电机驱动板、车身。

电源连接在Arduino单片机上给整个小车供电。

小车以Arduino单片机为核心,连接电机驱动板控制两个直流电动机的运转,从而实现小车的前进。

将超声波传感器安置在车身的最前端,用于探测前方是否有障碍物。

当超声波传感器遇到障碍物,将反馈提供到单片机里从而做出向左旋转的反应,再次检测前方是否有障碍物,若有障碍物则继续旋转,没有障碍物则电机驱动器驱动电机前进,从而实现整个小车的避障功能。

硬件框架图如图2.1。

图2.1硬件设计框架

2.3软件设计

2.3.1Arduino语言

Arduino语言具有如下特点:

1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。

2、使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3、Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。

有了bootloader之后,可以通过串口或者USBtoRs232线更新固件。

4、可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:

红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)

5、支持多种互动程序,如:

Flash、Max/Msp、VVVV、PD、C、Processing等。

6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。

Arduino的功能:

Arduino可以让我们快速使用与MacromediaFlash,Processing,Max/MSP,PureData,SuperCollider等软件结合,作出互动作品。

Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。

Arduino也可以独立运行,并与软件进行交互,例如:

MacromediaFlash,Processing,Max/MSP,PureData,VVVV或其他互动软件,Arduino的IDE界面基于开放源代码,可以让我们免费下载使用,开发出更多令人惊艳的互动作品。

Arduino可使用ICSP线上烧入器,将「bootloader」烧入新的IC晶片;可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:

红外线,超声波,热敏电阻,光敏电阻,伺服马达等);支援多样的互动程序例如:

MacromediaFlash、Max/Msp、VVVV、PD、C、Processing等;使用低价格的微处理控制器(ATMEGA8-168);USB接口,不需外接电源。

另外有提供9V直流电源输入;在应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入的装置进行互动内容的设计,可以更简单地达成单人或多人游戏互动。

2.3.2ArduinoIDE

如图2.3这是运行界面。

Arduino语言是一种类c的语言。

在这个界面里有我们编程时最常用的东西。

当我们把鼠标放在上面就会在右侧出现按键的功能。

图2.3ArduinoIDE运行界面

图2.4就是upload上传功能。

最右边的图标是我们需要熟知的串口监视器,快捷键是:

Ctrl+Shift+M。

点这个图标有用的前提是插上了串口设备,当然Arduino插在USB上也可以,因为板上的Atmega16U2就是USB转串口的功能。

图2.4upload上传功能

如图2.5这就是串口监视器的运行画面相对于网上流传的众多串口调试软件,它的功能可以说较为简单。

右下角是波特率,波特率接收端和发射端要相同,要不然收到的会是乱码。

图2.5串口监视器

如果电脑没找到串口或者驱动没装好,就会有如图2.6的提示。

serialport的意思是串行通讯接口。

图2.6

ArduinoIDE的菜单栏中有很多选项,例如“文件”“编辑”等英文界面。

其中Sketch是草图的意思,在ArduinoIDE中,每个Arduino程序都称为sketch,他是一个可以上传进ArduinoBoard中的程序包,当然经过编译以后他就不是代码包了。

Tools里面第一项,自动格式,当你把一段从网上下载的源代码放到sketch里面,会有一些缩进的乱码,这时,AutoFormat就起到了很好的作用。

当我们编写好程序后,点击Update,IDE会自动编译,上传。

如果程序有错误,就会有如图2.7的显示,标出了行号。

修改程序后就可以继续编译上传了。

图2.7

2.4实验前期准备

搭建小车的零件清单如下:

1.减速电机2个

2.优质轮胎2个

3.电机固定件2个

4.万向轮1个

5.100*150*2.6MM有机玻璃板2片

6.L298N电机驱动板1个

7.ARDUINO328给力板1个

8.云台1个

9.舵机1个

10.超声波模块1个

11.迷你面包板1个

12.6节5号电池盒一个

13.杜邦线12条

14.1米长USB线1条

15.铜柱35MM长3个12MM4个

16.3MM螺丝螺母若干

第三章硬件模块

3.1各模块的的基本性能

3.1.1单片机模块

本设计采用AtmelAtmega328微处理控制器。

其性能为:

DigitalI/O数字输入/输出端共0~13。

AnalogI/O模拟输入/输出端共0~5。

支持ISP下载功能。

输入电压:

接上电脑USB时无须外部供电,外部供电7V~12V直流电压输入。

输出电压:

5V直流电压输出和3.3V直流电压输出。

图3.1Arduino单片机实物图

3.1.2电机、电机驱动模块

本设计采用由双极性管组成的H桥电路(L298N)。

用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。

这种电路由于工作在管子的饱和截止模式下,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。

而且它有更强的驱动能力。

而且L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机。

这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。

因此决定采用使用功率三极管作为功率放大器的输出控制直流电机。

图3.2L298N引脚图

图3.3L298N电路原理图

图3.4L298N实物图

3.1.3避障模块

本设计采用HC-SR04超声波测距模块,该原件可提供2CM-400CM的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器,接收器和控制电路。

基本工作原理:

(1)采用IO口TRIG触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340M/S))/2;

图3.5避障模块实物图

3.1.4电源模块

本设计采用的电源为车载电源。

为保证电源工作可靠,单片机系统与动力伺服系统的电源采用了大功率、大容量的蓄电池;而传感器的工作电源则采用了小巧轻便的干电池。

图3.6电源模块实物图

3.2小车的基本搭建

舵机,云台和超声波的连接步骤如下图:

1.如图3.7准备好云台舵机超声波安装所需配件。

图3.7

2.图3.8取出舵机配件之一“十字胶体”将十字剪成四边对等的长度,打磨成宽度一样。

图3.8

3.将2*8mm的和1.2*5mm的螺丝安装到十字的第二个孔,装到云台底座上。

在云台底部的螺丝位套上螺母,并用热熔胶固定如图3.9。

图3.9

4.将舵机装上云台的两个边翼,并用螺丝紧固如图3.10。

图3.10

5.将装好的舵机放进固定好的十字胶体调整好方向后,从舵机组件包里取出2*6mm的螺丝安装到舵机固定孔中。

完成云台安装后用扎带将超声波模块固定在云台前端如图3.11。

图3.11

6.将6mm铜柱装在云台底座安装孔并将装好的云台组件直接安装到小车底盘上,小车搭建成品如图3.12。

图3.12小车搭建成品

3.3连线

3.3.1电机的连线

L298N的供电处理:

用6节5号电池盒取一路电源给L298N电机驱动模块供电,另一路给ARDUINO主板供电给L298N电机驱动模块供电的电源+极接L298N的VMS接口,电源的-接L298N的GND接口,L298N板上的+5V接口放空不接。

电机一接L298N的MOTOA,电机二接L298N的MOTOB。

图3.13电机的连线

3.3.2舵机的连线

首先设置函数:

myservo.attach(5);//定义伺服马达输出第5脚位。

舵机需要连接的有三条线,分别是+,-,信号。

三条线均直接连接到Arduino板上。

接线方法:

将+5V接到J5位,-位接到J6位,信号位接到J4位PWM口的第五脚。

连线方式如图3.14所示:

图3.14舵机的连线

3.3.3超声波的连线

超声波传感器有四个脚,如图3.15所示:

四个引脚的功能分别是:

1:

VCC接+5V。

2:

TRIQ信号输入。

3:

ECHO信号输出。

4:

GND接地。

图3.15超声波的引脚示意图

超声波模块四个引脚直接与Arduino单片机连接,接线方法如图3.16所示:

图3.16超声波与Arduino单片机接线

3.3.4Arduino超声波小车总体连线图:

电机A和电机B将正负两端接在L298N电机驱动板上,若正负两级接反则车轮反转。

电机驱动板、舵机、超声波模块直接与Arduino核心控制板相连,电源模块分别给电机驱动板和Arduino板供电。

图3.17Arduino超声波小车总体连线图

第四章软件模块

4.1软件设计思路

在软件设计方面,采用Arduino语言编程,编写程序流程图4.1

图4.1软件编译流程图

4.2电机前进模块

在定义好各个引脚之后,进入主程序的编写部分。

我在程序控制模块里主要编写的是电机的控制函数。

本程序中提及的digital

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

当前位置:首页 > 工程科技 > 机械仪表

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

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