arduino循迹小车毕业论文.docx
- 文档编号:13670772
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:14
- 大小:198.50KB
arduino循迹小车毕业论文.docx
《arduino循迹小车毕业论文.docx》由会员分享,可在线阅读,更多相关《arduino循迹小车毕业论文.docx(14页珍藏版)》请在冰点文库上搜索。
arduino循迹小车毕业论文
ThismodelpaperwasrevisedbytheStandardizationOfficeonDecember10,2020
arduino循迹小车毕业论文
摘要2
2
3
Arduino智能小车设计方案简介3
3
4
5
5
5
5
5
6
6
6
7
8
8
8
9
0
2
3
3
4
5
0
1
22
Arduino循迹小车设计与实现
摘要:
循迹小车是Arduino单片机的一种典型应用。
本智能小车是由ardiuno单片机和外部电路组成,包括检测模块,控制模块,电源模块。
循迹车设计采用Arduino单片机作为小车的控制核心,采用灰度传感器作为小车的检测模块来识别绿色路面中央的黑色引导线,采集信号并将信号转换为能被ardiuno单片机识别的数字信号;采用驱动芯片L298N构成双H桥控制直流电机。
其中软件系统采用C程序。
关键词:
Arduino单片机,自动循迹,驱动电路。
引言
自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。
近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一直是人类的目标。
单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域。
例如:
工业自动化,智能仪器仪表,消费类电子产品,通信方面,武器装备等。
作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最基础的要求。
为进一步丰富和巩固单片机知识,也为能更好的联系实际应用,本次毕业设计选择了基于单片机Arduino循迹车,并做出实物。
鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,单片机C语言编程相对于MC51汇编语言编程有如下优点:
对单片机的指令系统不需要有很深的理解就可以编程操作单片机。
寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理。
程序有规范的结构,可分为不同的函数,可使程序结构化。
库中包括许多标准子程序,具有较强的处理能力,使用方便。
具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性。
事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定尝试用C语言编程完成。
也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力。
1Arduino智能小车设计方案与参数
根据设计要求,Arduino智能小车要沿着山道环山跑一圈。
Arduino智能小车主要由四部分组成:
分别为大脑-微控制器Arduino、眼睛-灰度传感器、躯体-电机驱动模块和心脏-电源模块。
Arduino智能小车方案简介
依据所需功能的要求,设计计价器系统的结构图和硬件电路,绘制出智能小车的电路图,再绘制程序框图,之后编程并烧录到单片机;将各模块组合进行调试。
1.1.1功能要求
小车以Arduino为控制核心,用单片机产生PWM波,控制小车速度。
利用灰度传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机内。
单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。
1.1.2基本原理
智能小车系统主要由四部分组成:
大脑-微控制器Arduino、眼睛-灰度传感器、手脚-电机驱动模块、能源-电源模块,智能车循迹行驶过程是:
首先灰度传感器将检测到黑线的信号传送给单片机最小系统,然后通过单片机最小系统的控制算法对信号进行计算处理,将此信号在通过控制算法驱动电机,最后实现对智能车运动轨迹进行实时控制。
微控制器-Arduino为内部核心处理处理单元,将外部给予的电平信号通过以植入的c语言程序为主进行处理。
灰度传感器为智能小车的眼睛,通过辨别地面的黑色线条的物理信号,灰度再将之转换为单片机能够处理的电平信号。
单片机将信号传输给电机驱动模块,即我们小车结构的手脚接受指令运行。
智能车总体模块设计图如图1-1所示。
图1-1循迹车总体模块设计图
循迹小车参数
系统参数如下表所示:
微控制器
Arduino
路径检测模块
灰度传感器
俩轮驱动
车模配套直流电机
直流电机驱动模块
芯片:
LM298N
电机电源
9V3A
参数
2Arduino与51单片机的区别
Arduino单片机
2.1.1Arduino单片机的介绍
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。
它适用于爱好者、艺术家、设计师和对于"互动"有兴趣的朋友们。
是一个基于开放原始码的软硬件平台,构建于开放原始码simpleI/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。
Arduino包含两个主要的部分:
硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是ArduinoIDE,你的计算机中的程序开发环境。
你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
2.1.2Arduino单片机的特色
开放源代码的电路图设计,程序开发接口可以免费下载,也可依个人需求自己修改。
而且低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。
Arduino支持ISP在线烧,可以将新的"bootloader"固件烧入AVR芯片。
有了bootloader之后,可以通过串口或者USBtoRS232线更新固件。
也可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:
红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)支持多种互动程序,如:
Flash、Max/Msp、vvvv、PD、C、Processing等。
应用方面:
利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。
2.1.3Arduino单片机的功能
在功能上可以快速使用Arduino与AdobeFlash,Processing,Max/MSP,PureData,SuperCollider等软件结合,作出互动作品。
Arduino可以使用现有的例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。
Arduino也可以独立运行,并与软件进行交互,例如:
MacromediaFlash,Processing,Max/MSP,PureData,VVVV或其他互动软件等。
Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。
在更多功能上有基于知识共享开放元源码的电路图设计,有基于知识共享开放源码的程式开发环境。
Arduino可使用ICSP线上烧入器,将「bootloader」烧入新的IC晶片,可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制,可简单地与传感器,各式各样的电子元件连接(例如:
红外线,超声波,热敏电阻,光敏电阻,伺服马达等),USB接口上,不需外接电源。
另外有提供9V直流电源输入。
51单片机
51单片机的介绍
51单片机是对所有兼容Intel8031指令系统的的统称。
该系列的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是的AT89系列,它广泛应用于工业测控系统之中。
很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
51单片机的功能
51单片机的功能特点分别有:
8位CPU·4kbytes程序存储器(ROM)(52为8K),128bytes的数据存储器(RAM)(52有256bytes的RAM),32条I/O口线·111条指令,大部分为单字节指令,21个专用,2个可编程定时/计数器·5个中断源,2个(52有6个),一个口,外部数据为64kB,外部寻址空间为64kB,逻辑操作功能·双列直插40PinDIP封装。
51单片机的内部结构分别为CPU:
由运算和控制逻辑组成,同时还包括和部分外部;RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:
用以存放程序、一些原始数据和表格;I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出;T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个的中断;一个(通用异步接收发送器)的I/O口,用于实现单片机之间或与之间的;片内振荡器和时钟产生电路,和需要外接。
最佳振荡频率为6M-12M。
Arduino比51更好的地方
Arduino与51单片机相比:
变更人性化,编程相对人性化和直观,没有的人也能很快上手。
硬件性能上,Arduino更加稳定,不会像51一样时常出现跑飞的现象。
Arduino作为开源的一款的单片机,更重要的是在这个4g时代可搜寻的学习资料是非常多的。
综上所述,Arduino无疑是比51更适合新手和用于比赛专用的。
3循迹小车设计
硬件设计
3.1.1单片机最小系统
主控机系统采用Arduinomega2560单片机,采用USB接口的核心电路板,它最大的特点就是具有多达54路数字输入输出,特别适合需要大量IO接口的设计。
Mega2560的处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。
单片机最小系统电路图如图3-1所示。
图3-1单片机最小系统
Arduinomega2560的主要参数:
处理器ATmega2560,工作电压5V,输入电压(推荐)7-12V,输入电压(范围)6-20V,数字IO脚54(其中16路作为PWM输出),模拟输入脚16,IO脚直流电流40mA,脚直流电流50mA,FlashMemory256K,(ATmega328,其中8KB用于bootloader),SRAM8KB,EEPROM4KB,工作时钟16MHz。
存储器:
ATmega2560包括了片上256KBFlash,其中8KB用于Bootloader。
同时还有8KBSRAM和4KBEEPROM。
输入输出:
一共有数字输入输出口,4路串口信号,6路外部中断,14路脉冲宽度调制PWM(0--13),SPI(53(SS),51(MOSI),50(MISO),52(SCK)):
SPI通信接口,16路模拟输入,特别LED(13号):
Arduino专门用于测试LED的保留接口,和TWI接口(专门支持通信)。
3.1.2灰度传感器模块
灰度传感器是利用黑线对红外线不同的反射能力通过光敏二极管或光敏三极管,接收反射回的不同光强信号,把不同光强转换为电流信号,最后通过电阻,转换为单片机可识别的高低电平。
灰度传感器实现循迹的基本电路如3-2所示。
图3-2灰度传感器电路图
(1)灰度传感器工作原理
传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;而当红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。
小车行驶过程中向地面发射红外光,当红外光遇到绿色路线,地板发生漫反射,安装在小型车的反射光接收器会接收;如果是遇到黑色路线,红外光将被黑线吸收,安装在小车上的接收管没有收到红外光。
控制器会根据是否收到反射的红外光为判断依据来确定的黑线的位置和小车的路线。
这种探测方法,即利用红外线在不同颜色的表面特征,具有不同的反射性能。
红外发射和接收红外线感应器,可以直接使用集成的红外探头,选择宽度为3-5厘米的黑线。
该传感器的灵敏度是可调的,传感器有时遇到黑线却不能送出相应的信号,通过调节传感器上的可调电阻,适当的增大或减小可改变灵敏度。
(2)传感器分布
传感器通过信号采集,向单片机提供信息。
因此传感器合理的布局很重要,传感器布局需要考虑小车行驶过程中信息检测的准确度和前瞻性,能使在相同数量的传感器下,获得更多的数据。
而由于考虑到我们改造车的车座较窄、不平整,且车身较请,适合放多的传感器,最终决定选用对6个传感器来进行布局,即在车子底座前端放6个传感器。
这种布局是目前最适合我们改造车的布局方法。
3.1.3电机驱动电路
本设计采用L298N电机专用驱动芯片带动两个5V的直流电动机。
L298N是一个内部有两个H桥的高电压大电流全桥式驱动芯片,可以用来驱动直流电动机、步进电动机。
使用标准逻辑电平信号控制,直接连接单片机管脚,具有两个使能控制端,使能端在不受输入信号影响的情况下不允许器件工作。
L298N有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作。
(1)L298N引脚结构如表3-1
图3-3L298N驱动芯片
表3-1L298N引脚编号与功能:
引脚编号
名称
功能
1
电流传感器A
在该引脚和地之间接小阻值电阻可用来检测电流
2
输出引脚1
内置驱动器A的输出端1,接至电机A
3
输出引脚2
内置驱动器A的输出端2,接至电机A
4
电机电源端
电机供电输入端,电压可达46V
5
输入引脚1
内置驱动器A的逻辑控制输入端1
6
使能端A
内置驱动器A的使能端
7
输入引脚2
内置驱动器A的逻辑控制输入端2
8
逻辑地
逻辑地
9
逻辑电源端
逻辑控制电路的电源输入端为5V
10
输入引脚3
内置驱动器B的逻辑控制输入端1
11
使能端B
内置驱动器B的使能端
12
输入引脚4
内置驱动器B的逻辑控制输入端2
13
输出引脚3
内置驱动器B的输出端1,接至电机B
14
输出引脚4
内置驱动器B的输出端2,接至电机B
15
电流传感器B
在该引脚和地之间接小阻值电阻可用来检测电流
(2)电机驱动原理
电路的形状很像字母H。
四个三极管就是H桥的四条垂直线,而电机就是H中的横线,如图3-4所示。
图3-4L298N内部H桥驱动电路
H桥电机驱动电路包含四个三极管和一个电机。
电机运转,必须遵循导通对角线上的一对三极管。
基于不同三极管对的导通情况可以控制电机的转向,电流可可以从左至右流过电机,也可以从右至左流过电机。
当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右流过电机,然后再经Q4回到电源负极,该流向的电流将驱动电机顺时针转动。
下面分析另一对三极管Q2和Q3,当两个三极管同时导通的情况下,电流将从右至左流过电机。
从而驱动电机沿逆时针方向转动。
电机控制逻辑如下:
以电机A为例,当使能端ENA为高电平时,如果输入引脚IN1为低电平而输入引脚IN2为高电平,电机A反转;如果输入引脚IN1为高电平而输入引脚IN2为低电平,电机A正转。
图3-5L298N驱动芯片和直流电机接线图
软件设计
本设计的目的是以Arduino单片机为控制核心,将红外光电传感器输出的电信号送至单片机电路,再由单片机向L298N电机驱动模块发送指令,控制后轮电机驱动小车行进,控制前轮电机驱动小车转向,从而自动循迹。
3.2.1系统主程序
在主程序模块中,需要完成对各参量和接口的初始化、检测黑线、前进或转向判断等工作。
当小车探测到黑线后,根据检测到黑线的传感器的编号不同,小车要做出相应的动作。
当小车左边的传感器检测到黑线时,说明小车车头向右边偏移,这时主控芯片控制前轮电机反转,车体向左边修正;同理当小车的右边传感器检测到黑线时,主控芯片控制前轮电机正转,车体向右边修正;当黑线在车体的中间,中间的传感器一直检测到黑线,这样小车就会沿着黑线自动循迹。
主程序流程如图3-6所示。
图3-6循迹车程序流程图
3.2.2本系统编译器
本设计采用C语言来编译程序。
模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。
因此,软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,ARDUINOIDE软件是目前Arduino专用开发的软件,界面清晰整洁,编程简便。
.
ARDUINOIDE开发系统可用于编辑C。
由编译器编译可以生成目标文件(.ino)。
3.2.3实物展示
图3-7小车全景图
部分程序展示
unsignedintp_1=22;
unsignedintp_2=24;
unsignedintp_3=26;
unsignedintp_4=28;
unsignedintp_5=30;
unsignedintp_6=32;
#definel1
#definer2
#definerl3
unsignedintnum,co,c=0,mum,d=0;
intt;
voidsetup()
{
pinMode(2,OUTPUT);[5]杨素行,模拟电子技术基础简明教程(第三版),北京:
高等教育出版社,2005
[6]阎石,数字电子技术(第五版),北京:
高等教育出版社,2006
[7]孙余凯,传感器应用电路300例[M],北京:
电子工业出版社,2008.
[8]陈晓莉,张俊涛,KEILC51单片机仿真器的设计第二版,陕西科技大学出版社,2006:
19-20
[9]张一斌,余建坤,单片机原理课程设计,长沙:
中南大学出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arduino 小车 毕业论文