当前位置:文档之家› (最新版)arduino循迹小车毕业设计

(最新版)arduino循迹小车毕业设计

1

目 录

摘要 (2)

引 言 ......................................................... 2 1 Arduino 智能小车设计方案与参

数 (3)

1.1 Arduino 智能小车设计方

案简介 (3)

1.1.1 功能要求 (3)

1.1.2 基本原理 (3)

1.2 循迹小车参数 (4)

2 Arduino 与51单片机的区别 (5)

2.1 Arduino 单片机 (5)

2.1.1 Arduino 单片机的介绍 .................................. 5 2.1.2 Arduino 单片机的特色 .................................. 5 2.1.3 Arduino 单片机的功能 .................................. 5 2.2 51单片机 .. (6)

2.2.1 51单片机的介绍 ....................................... 6 2.2.2 51单片机的功能 ....................................... 6 2.3 Arduino 比51更好的地方

(7)

3 循迹小车设计 ...........................

3.1 硬件设计 .........................

3.1.1 单片机最小系统 .................

3.1.2 灰度传感器模块 .................

3.1.3 电机驱动电路 ...................

3.2 软件设计 .........................

3.2.1 系统主程序 .....................

3.2.2 本系统编译器 ...................

3.3 实物展示 .........................

3.4 部分程序展示 .....................

结 论 ...................................

致 谢 ...................................参考文献 ................................. Arduino 循迹小车设计与实现

摘要:循迹小车是Arduino 单

片机的一种典型应用。本智能小车是由ardiuno 单片机和外部电路组

成,包括检测模块,控制模块,电

源模块。循迹车设计采用Arduino

单片机作为小车的控制核心,采用

灰度传感器作为小车的检测模块

来识别绿色路面中央的黑色引导

线,采集信号并将信号转换为能被ardiuno单片机识别的数字信号;

采用驱动芯片L298N构成双H桥控

制直流电机。其中软件系统采用C

程序。

关键词:Arduino单片机,自

动循迹,驱动电路。

引言

自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一直是人类的目标。单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域。例如:工业自动化,智能仪器仪表,消费类电子产品,通信方面,武器装备等。

作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最基础的要求。为进一步丰富和巩固单片机知识,也为能更好的联系实际应用,本次毕业设计选择了基于单片机Arduino循迹车,并做出实物。鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,单片机C语言编程相对于MC51汇

编语言编程有如下优点:

对单片机的指令系统不需要有很深的理解就可以编程操作单片机。寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理。程序有规范的结构,可分为不同的函数,可使程序结构化。库中包括许多标准子程序,具有较强的处理能力,使用方便。具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性。

事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定尝试用C语言编程完

成。也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力。

1 Arduino智能小车设计方案

与参数

根据设计要求,Arduino智能小车要沿着山道环山跑一圈。

Arduino智能小车主要由四部分组成:分别为大脑-微控制器Arduino、眼睛-灰度传感器、躯体-电机驱动模块和心脏-电源模块。

1.1 Arduino智能小车方案简介

依据所需功能的要求,设计计价器系统的结构图和硬件电路,绘制出智能小车的电路图,再绘制程序框图,之后编程并烧录到单片机;将各模块组合进行调试。

3

1.1.1功能要求

小车以Arduino 为控制核心, 用单片机产生PWM波,控制小车速度。利用灰度传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机内。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。

1.1.2基本原理

智能小车系统主要由四部分

组成:大脑-微控制器Arduino、眼睛-灰度传感器、手脚-电机驱动模块、能源-电源模块, 智能车循迹行驶过程是:首先灰度传感器将检测到黑线的信号传送给单片机最

小系统,然后通过单片机最小系统的控制算法对信号进行计算处理,将此信号在通过控制算法驱动电机,最后实现对智能车运动轨迹进行实时控制。

微控制器-Arduino为内部核心处理处理单元,将外部给予的电平信号通过以植入的c语言程序为主进行处理。灰度传感器为智能小车的眼睛,通过辨别地面的黑色线条的物理信号,灰度再将之转换为单片机能够处理的电平信号。单片机将信号传输给电机驱动模块,即我们小车结构的手脚接受指令运行。智能车总体模块设计图如图1-1所示。

Arduino板)和软

。它适用于爱好

"互动"

介面版,并且具

、C语言的

开发环境。

个主要的部分:硬

来做电路连接的

;另外一个则是

的计算机中的程

IDE中编写

Arduino

Arduino 5

微处理控制器 (AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。Arduino支持ISP在线烧,可以将新的"bootloader"固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to RS232线更新固件。也可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)支持多种互动程序,如:Flash、MaxMsp、vvvv、PD、C、Processing等。应用方面:利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。2.1.3 Arduino单片机的功能

在功能上可以快速使用Arduino与Adobe Flash, Processing, MaxMSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, MaxMSP, Pure Data, VVVV或其他互动软件等。 Arduino 的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。

在更多功能上有基于知识共享开放元源码的电路图设计,有基于知识共享开放源码的程式开发环境。Arduino可使用ICSP线上烧

入器,将「bootloader」烧入新的IC晶片,可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制,可简单地与传感器,各式各样的电子元件连接(例如:红外线,超声波,热敏电阻,光敏电阻,伺服马达等),USB接口上,不需外接电源。另外有提供9V直流电源输入。

2.2 51单片机

2.2.1 51单片机的介绍

51单片机是对所有兼容Intel

8031指令系统的单片机的统称。该

系列单片机的始祖是Intel的8031

单片机,后来随着Flash rom技术

的发展,8031单片机取得了长足的

进展,成为应用最广泛的8位单片

机之一,其代表型号是ATMEL公司

的AT89系列,它广泛应用于工业

测控系统之中。很多公司都有51

系列的兼容机型推出,今后很长的

一段时间内将占有大量市场。51单

片机是基础入门的一个单片机,还

是应用最广泛的一种。需要注意的

是52系列的单片机一般不具备自

编程能力。

2.2.2 51单片机的功能

51单片机的功能特点分别有:8位CPU·4kbytes程序存储器(ROM)

7

(52为8K),128bytes的数据存储器(RAM) (52有256bytes的RAM),32条IO口线·111条指令,大部分为单字节指令,21个专用寄存器,2个可编程定时计数器·5个中断源,2个优先级(52有6个),一个全双工串行通信口,外部数据存储器寻址空间为64kB,外部程序存储器寻址空间为64kB,逻辑操作位寻址功能·双列直插40PinDIP封装。

51单片机的内部结构分别为CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊

功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;IO口:四个8位并行IO口,既可用作输入,也可用作输出;TC:两个定时记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统; 一

个全双工UART(通用异步接收发送器)的串行IO口,用于实现单片机之间或单片机与微机之间的串行

通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M-12M。

2.3 Arduino比51更好的地方

Arduino与51单片机相比:变更人性化,编程相对人性化和直观,没有单片机基础的人也能很快上手。硬件性能上,Arduino更加稳定,不会像51一样时常出现跑飞的现象。Arduino作为开源的一款的单片机,更重要的是在这个4g 时代可搜寻的学习资料是非常多的。综上所述,Arduino无疑是比51更适合新手和用于比赛专用的。

3 循迹小车设计

3.1 硬件设计

3.1.1单片机最小系统

主控机系统采用Arduino mega2560单片机,采用USB接口的核心电路板,它最大的特点就是具有多达54路数字输入输出,特别适合需要大量IO 接口的设计。Mega2560的处理器核心是ATmega2560,同时具有54路数字输入输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP ;

}

}

if(p_3)

{

analogWrite(2,0);

analogWrite(4,0);

analogWrite(3,90);

analogWrite(5,90);

}

else if(p_4)

{

analogWrite(2,0);

analogWrite(4,0);

analogWrite(3,90);

analogWrite(5,90);

}

9

else if(p_2)

{

analogWrite(2,30); analogWrite(4,0); analogWrite(3,0); analogWrite(5,40); }

else if(p_5)

{

analogWrite(2,0); analogWrite(4,30); analogWrite(3,40); analogWrite(5,0); }

else if(p_1) {

analogWrite(2,40); analogWrite(4,0); analogWrite(3,0); analogWrite(5,50); }

else if(p_6)

{

analogWrite(2,0); analogWrite(4,40); analogWrite(3,50); analogWrite(5,0); }

}

}

void TURN_90(unsigned char e)

{

stop(rl);

delay (500);

if(e==r)

{

delay (10);

analogWrite(2,0);

analogWrite(4,70); analogWrite(3,60); analogWrite(5,0);

delay (450);

do

{

p_1=digitalRead(22);

p_2=digitalRead(24);

p_3=digitalRead(26);

p_4=digitalRead(28);

p_5=digitalRead(30);

p_6=digitalRead(32);

if(p_4||p_3)

{

delay (3);

p_1=digitalRead(22);

p_2=digitalRead(24);

11

p_3=digitalRead(26);

p_4=digitalRead(28);

p_5=digitalRead(30);

p_6=digitalRead(32);

}

} while(!(p_4||p_3)); }

else if(e==l) {

delay (10);

analogWrite(2,70);

analogWrite(4,0); analogWrite(3,0);

analogWrite(5,60);

delay (450);

do

{

p_1=digitalRead(22); 读取12位灰度

p_2=digitalRead(24);

p_3=digitalRead(26);

p_4=digitalRead(28);

p_5=digitalRead(30);

p_6=digitalRead(32);

if(p_3||p_4)

{

delay (3);

p_1=digitalRead(22); p_2=digitalRead(24);

p_3=digitalRead(26);

p_4=digitalRead(28);

p_5=digitalRead(30);

p_6=digitalRead(32);

}

} while(!(p_3||p_4));

}

stop(rl);

delay (100);

}

void loop()

{

while(1)

{

FOLL_FINE(1);

结论

经过努力《Arduino循迹小车设计与实现》实务专题的毕业设计终于接

13

近尾声。较好地实现了小车自动循迹行驶功能。但是仍旧有许多不足的地方,循迹车部分由于是遥控车改造所以无法进行大幅度的拐弯,循迹行驶的灵敏度不高,循迹部分的这两个问题造成拍摄视频时难度加大。

以为学的知识已经很完善,但是通过这次对《Arduino智能小车》实务专题的毕业设计,让我认识到自己所学的东西不过是冰山一角,认识到理论和实践相合的重要性。之后,我会更加勤奋地去学习。如果说完成毕业设计是我们这几个月艰苦奋斗的“硬件”成果,那么能够激起我对知识的不断渴求则是这几月不懈努力的“软件”成果。

通过这“最后一次的大学作业”,我深刻理解了理论和实践相结合的重要性,理论与实践相结合不仅可以巩固我们所学的的知识,还加深与巩固了原有的知识,更重要的是还拓宽了我们的知识面,学到了更多更深的东西,与此同时,自己的动手能力也大大的提高。在说明文的编写过程中,查阅了不少的相关资料,使我Arduino单片机、L298N驱动芯片、灰度传感器、光电传感器等电子元器件有了更进一步的了解和掌握,同时也衬托出自己专业知识学得还不扎实。特别是在电路制作过程中,由于缺少实际经验,对单片机的很多功能还不能熟练的掌握。所以在今后的工作和学习过程中,应加强专业知识的学习,不段以理论和实践相结合,锻炼出具有突出的专业技能,不段完善自己,拓宽知识面,最终成为复合型人才,适应社会的挑战,实现人生的自我价值。

致谢

在此次设计中,童晓薇老师作为我的指导老师,至始至终都给予我了不少帮助,从下任务书开始,就帮我制定规划,提醒我应注意的问题;借给我资料,帮我联系硬件;和我一起调程序,并提出了很多的修改意见以及完善方案;此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心;可以说我的每一点进展都与童老师的付出是分不开的。

当然在此,我还要向身边关心我的老师、同学致以诚挚的谢意!最后感谢母校对我这几年的辛勤培养。还有其他老师和同学,都帮了我不少忙,在此不再一一陈述。谨祝老师们工作顺利,万事如意,桃李满天下;同学们学业有成,前程似锦!

参考文献

[1]基于Arduino的趣味电子制作 Simon Monk、张宝玲、吴兰臻、郑海昕科学出版 [2] (英)Simon Monk,ARDUINO 编程从零开始,科学出版社

[3] 单成祥,牛彦文,传感器设计基础,北京: 国防工业出版社,2007

[4] 窦振中,单片机外围部件实用手册输出通道器件分册,北京:北京航空航天大学出版社,2003.

[5] 杨素行,模拟电子技术基础简明教程(第三版),北京:高等教育出版社,2005

[6] 阎石,数字电子技术(第五版),北京:高等教育出版社,2006

[7] 孙余凯,传感器应用电路300例[M],北京: 电子工业出版社,2008.

[8] 陈晓莉,张俊涛,KEIL C51单片机仿真器的设计第二版,陕西科技大学出版社,2006:19-20

[9] 张一斌,余建坤,单片机原理课程设计,长沙:中南大学出版社,2008

相关主题
文本预览
相关文档 最新文档