arduino循迹小车毕业论文.doc

上传人:小** 文档编号:13303824 上传时间:2020-06-14 格式:DOC 页数:22 大小:1.45MB
返回 下载 相关 举报
arduino循迹小车毕业论文.doc_第1页
第1页 / 共22页
arduino循迹小车毕业论文.doc_第2页
第2页 / 共22页
arduino循迹小车毕业论文.doc_第3页
第3页 / 共22页
点击查看更多>>
资源描述
福建船政交通学院 目录摘要2引 言21 Arduino智能小车设计方案与参数31.1 Arduino智能小车设计方案简介 31.1.1 功能要求3 1.1.2 基本原理3 1.2 循迹小车参数42 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更好的地方73 循迹小车设计8 3.1 硬件设计8 3.1.1 单片机最小系统8 3.1.2 灰度传感器模块 9 3.1.3 电机驱动电路10 3.2 软件设计12 3.2.1 系统主程序13 3.2.2 本系统编译器13 3.3 实物展示14 3.4 部分程序展示15结 论20致 谢21参考文献22Arduino循迹小车设计与实现摘要:循迹小车是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智能小车方案简介依据所需功能的要求,设计计价器系统的结构图和硬件电路,绘制出智能小车的电路图,再绘制程序框图,之后编程并烧录到单片机;将各模块组合进行调试。1.1.1功能要求小车以Arduino 为控制核心, 用单片机产生PWM波,控制小车速度。利用灰度传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机内。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。1.1.2基本原理智能小车系统主要由四部分组成:大脑-微控制器Arduino、眼睛-灰度传感器、手脚-电机驱动模块、能源-电源模块, 智能车循迹行驶过程是:首先灰度传感器将检测到黑线的信号传送给单片机最小系统,然后通过单片机最小系统的控制算法对信号进行计算处理,将此信号在通过控制算法驱动电机,最后实现对智能车运动轨迹进行实时控制。微控制器-Arduino为内部核心处理处理单元,将外部给予的电平信号通过以植入的c语言程序为主进行处理。灰度传感器为智能小车的眼睛,通过辨别地面的黑色线条的物理信号,灰度再将之转换为单片机能够处理的电平信号。单片机将信号传输给电机驱动模块,即我们小车结构的手脚接受指令运行。智能车总体模块设计图如图1-1所示。 L298N 驱动模块 Arduino 单片机 电源模块灰度传感器模块 直流电机 小车 路径 图1-1 循迹车总体模块设计图 1.2 循迹小车参数系统参数如下表所示:微控制器Arduino路径检测模块灰度传感器俩轮驱动车模配套直流电机直流电机驱动模块芯片:LM298N电机电源9V 3A参数2 Arduino与51单片机的区别2.1 Arduino单片机2.1.1 Arduino单片机的介绍 Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于互动有兴趣的朋友们。是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。2.1.2 Arduino单片机的特色 开放源代码的电路图设计,程序开发接口可以免费下载,也可依个人需求自己修改。而且低价格的微处理控制器 (AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。Arduino支持ISP在线烧,可以将新的bootloader固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to RS232线更新固件。也可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,等)支持多种互动程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。应用方面:利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。2.1.3 Arduino单片机的功能在功能上可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, 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位CPU4kbytes程序存储器(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:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为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 header和一个复位按钮。单片机最小系统电路图如图3-1所示。图3-1 单片机最小系统Arduino mega2560的主要参数:处理器 ATmega2560,工作电压 5V,输入电压(推荐) 7-12V,输入电压(范围) 6-20V,数字IO脚 54 (其中16路作为PWM输出),模拟输入脚 16,IO脚直流电流 40 mA,3.3V脚直流电流 50 mA,Flash Memory 256 K,(ATmega328,其中8 KB 用于 bootloader),SRAM 8 KB,EEPROM 4 KB,工作时钟 16 MHz。存储器:ATmega2560包括了片上256KB Flash,其中8KB用于Bootloader。同时还有8KB SRAM和4KB EEPROM。输入输出:一共有数字输入输出口,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-3 L298N 驱动芯片表3-1 L298N引脚编号与功能:引脚编号名称功能1电流传感器A在该引脚和地之间接小阻值电阻可用来检测电流2输出引脚1内置驱动器A的输出端1,接至电机A3输出引脚2内置驱动器A的输出端2,接至电机A4电机电源端电机供电输入端,电压可达46V5输入引脚1内置驱动器A的逻辑控制输入端16使能端A内置驱动器A的使能端7输入引脚2内置驱动器A的逻辑控制输入端28逻辑地逻辑地9逻辑电源端逻辑控制电路的电源输入端为5V10输入引脚3内置驱动器B的逻辑控制输入端111使能端B内置驱动器B的使能端12输入引脚4内置驱动器B的逻辑控制输入端213输出引脚3内置驱动器B的输出端1,接至电机B14输出引脚4内置驱动器B的输出端2,接至电机B15电流传感器B在该引脚和地之间接小阻值电阻可用来检测电流(2) 电机驱动原理电路的形状很像字母H。四个三极管就是H桥的四条垂直线,而电机就是H中的横线,如图3-4所示。图3-4 L298N内部H桥驱动电路H桥电机驱动电路包含四个三极管和一个电机。电机运转,必须遵循导通对角线上的一对三极管。基于不同三极管对的导通情况可以控制电机的转向,电流可可以从左至右流过电机,也可以从右至左流过电机。当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右流过电机,然后再经Q4回到电源负极,该流向的电流将驱动电机顺时针转动。下面分析另一对三极管Q2和Q3,当两个三极管同时导通的情况下,电流将从右至左流过电机。从而驱动电机沿逆时针方向转动。电机控制逻辑如下:以电机A为例,当使能端ENA为高电平时,如果输入引脚IN1为低电平而输入引脚IN2为高电平,电机A反转;如果输入引脚IN1为高电平而输入引脚IN2为低电平,电机A正转。电机A电机B图3-5 L298N驱动芯片和直流电机接线图3.2 软件设计本设计的目的是以Arduino单片机为控制核心,将红外光电传感器输出的电信号送至单片机电路,再由单片机向L298N电机驱动模块发送指令,控制后轮电机驱动小车行进,控制前轮电机驱动小车转向,从而自动循迹。3.2.1 系统主程序在主程序模块中,需要完成对各参量和接口的初始化、检测黑线、前进或转向判断等工作。当小车探测到黑线后,根据检测到黑线的传感器的编号不同,小车要做出相应的动作。当小车左边的传感器检测到黑线时,说明小车车头向右边偏移,这时主控芯片控制前轮电机反转,车体向左边修正;同理当小车的右边传感器检测到黑线时,主控芯片控制前轮电机正转,车体向右边修正;当黑线在车体的中间,中间的传感器一直检测到黑线,这样小车就会沿着黑线自动循迹。主程序流程如图3-6所示。图3-6 循迹车程序流程图3.2.2 本系统编译器本设计采用C语言来编译程序。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。因此,软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,ARDUINO IDE软件是目前Arduino专用开发的软件,界面清晰整洁,编程简便。.ARDUINO IDE开发系统可用于编辑C。由编译器编译可以生成目标文件(.ino)。3.2.3 实物展示 图3-7 小车全景图193.4 部分程序展示unsigned int p_1=22; unsigned int p_2=24;unsigned int p_3=26;unsigned int p_4=28;unsigned int p_5=30;unsigned int p_6=32;#define l 1 #define r 2 #define rl 3unsigned int num,co,c=0,mum,d=0;int t;void setup() pinMode(2,OUTPUT);/lift back pinMode(3,OUTPUT);/lift go pinMode(4,OUTPUT);/right back pinMode(5,OUTPUT);/right go for(t=22;t3) /for(co=0;co3) c=c+1; if(c=ti) analogWrite(2,0); analogWrite(4,0); analogWrite(3,40); analogWrite(5,40); delay(350); return; 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); 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); 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循迹小车设计与实现实务专题的毕业设计终于接近尾声。较好地实现了小车自动循迹行驶功能。但是仍旧有许多不足的地方,循迹车部分由于是遥控车改造所以无法进行大幅度的拐弯,循迹行驶的灵敏度不高,循迹部分的这两个问题造成拍摄视频时难度加大。以为学的知识已经很完善,但是通过这次对Arduino智能小车实务专题的毕业设计,让我认识到自己所学的东西不过是冰山一角,认识到理论和实践相合的重要性。之后,我会更加勤奋地去学习。如果说完成毕业设计是我们这几个月艰苦奋斗的“硬件”成果,那么能够激起我对知识的不断渴求则是这几月不懈努力的“软件”成果。通过这“最后一次的大学作业”,我深刻理解了理论和实践相结合的重要性,理论与实践相结合不仅可以巩固我们所学的的知识,还加深与巩固了原有的知识,更重要的是还拓宽了我们的知识面,学到了更多更深的东西,与此同时,自己的动手能力也大大的提高。在说明文的编写过程中,查阅了不少的相关资料,使我Arduino单片机、L298N驱动芯片、灰度传感器、光电传感器等电子元器件有了更进一步的了解和掌握,同时也衬托出自己专业知识学得还不扎实。特别是在电路制作过程中,由于缺少实际经验,对单片机的很多功能还不能熟练的掌握。所以在今后的工作和学习过程中,应加强专业知识的学习,不段以理论和实践相结合,锻炼出具有突出的专业技能,不段完善自己,拓宽知识面,最终成为复合型人才,适应社会的挑战,实现人生的自我价值。 致 谢在此次设计中,童晓薇老师作为我的指导老师,至始至终都给予我了不少帮助,从下任务书开始,就帮我制定规划,提醒我应注意的问题;借给我资料,帮我联系硬件;和我一起调程序,并提出了很多的修改意见以及完善方案;此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心;可以说我的每一点进展都与童老师的付出是分不开的。当然在此,我还要向身边关心我的老师、同学致以诚挚的谢意!最后感谢母校对我这几年的辛勤培养。还有其他老师和同学,都帮了我不少忙,在此不再一一陈述。谨祝老师们工作顺利,万事如意,桃李满天下;同学们学业有成,前程似锦! 参考文献1基于Arduino的趣味电子制作 Simon Monk、张宝玲、吴兰臻、 郑海昕 科学出版社(2011-07出版)2 (英)Simon Monk,ARDUINO 编程从零开始, 科学出版社3 单成祥,牛彦文,传感器设计基础,北京: 国防工业出版社,20074 窦振中,单片机外围部件实用手册输出通道器件分册,北京:北京航空航天大学出版社,2003.5 杨素行,模拟电子技术基础简明教程(第三版),北京:高等教育出版社,20056 阎石,数字电子技术(第五版),北京:高等教育出版社,20067 孙余凯,传感器应用电路300例M,北京: 电子工业出版社,2008.8 陈晓莉,张俊涛,KEIL C51单片机仿真器的设计第二版,陕西科技大学出版社,2006:19209 张一斌,余建坤,单片机原理课程设计,长沙:中南大学出版社,2008 21
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!