循迹避障小车毕业设计.docx
《循迹避障小车毕业设计.docx》由会员分享,可在线阅读,更多相关《循迹避障小车毕业设计.docx(66页珍藏版)》请在冰豆网上搜索。
循迹避障小车毕业设计
摘要
自循迹避障小车是行走机器人的一种,这种小车可以适应不同环境,不受温度、湿度、磁场辐射、重力等条件的影响,在人类无法进入或生存的环境中完成人类无法完成的探测任务,适用于国防及民用等多个领域。
本设计的主要任务是设计和实现基于ATMega128单片机的寻迹避障小车,包括硬件和软件两个部分。
硬件电路部分主要包括控制器、循迹电路、避障电路、电机驱动电路、显示电路、电源电路等。
自循迹避障小车的软件平台为ICCAVR开发环境。
软件系统包含系统初始化程序、红外传感器循迹程序、超声波避障程序与显示程序等。
车前部安装的红外传感器负责釆集道路信号,作为小车的循迹依据;超声波传感器负责测量障碍物和小车之间的距离,作为避障依据。
微控制器读取传感器当前状态,从而控制相应的电路,进而控制小车行进的速度和角度,最后实现小车在实验环境中自动循迹避障行驶的功能。
在本设计中,系统硬件和软件都采用了模块化结构,整个系统的电路结构简单,可靠性高,并可按需求增加或删除功能。
在实际的调试过程中,小车能自适应直道、弯道、交叉线等路况,并且能够避开跑道上的障碍物。
关键词:
ATMega128;循迹;避障;ICCAVR
Abstract
Self-tracingandobstacleavoidanceelectricvehicleisakindofmobilerobot,whichisabletoadaptvariousenvironments,humidity,magneticradiationandgravity.Consequentlythevehicletaketheplaceofhumantoimplementmanytasksintheenvironmentwherehumancannotsetfoot,whichisapplicableinmanyfieldsinthenationaldefenceandcivilian.
ThemainjobofthisprojectistodesignandimplementbasedonATMega128single-chipmicrocomputerself-tracingandobstacleavoidancecar,includingitshardwareandsoftwareintwoparts.Thehardwarecircuitpartmainlycomprisesacontroller,asignaldetectioncircuit,obstacleavoidancecircuit,motordrivecircuit,displaycircuitandpowersupplycircuit.thesoftwareplatformisICCAVR.Thesoftwareincludeinitializationprogram,self-tracingprogram,obstacleavoidanceprogramanddisplayprogram.Theroadinformationisacquiredfornavigationbyredsensorinthefrontofthevehicle.Theredsensorrecognizestheblackline.Theultrasonictransducerrecognizesthebarriers.Themicrocontrolleracquirescurrentstatetocontrolcorrespondingcircuitandthenthevehicle’sspeedandangle.Inthiswaytheself-tracingdrivingfunctionisrealizedintheexperimentalenvironment.
Thehardwareandsoftwareofthisprojectareallthemodularithas.Thecircuitissimpleinstructureandthefunctioncanbeaddedordeletedaccordingtorequirement.Intheexperiment,thevehiclecanautonomouslyadaptstraightroad,cornersandcrossesline.Thetargetoftheself-tracingandobstacleavoidancevehiclearemet.
Keywords:
ATMega128;infraredsensor;obstacleavoidance;ICCAVR
0前言……………………………………………………………………………1
1方案设计与论证………………………………………………………………2
1.1整体硬件方案论证…………………………………………………………2
1.2整体软件控制方案…………………………………………………………3
2系统硬件设计…………………………………………………………………4
2.1单片机最小系统……………………………………………………………4
2.2电源模块……………………………………………………………………8
2.3循迹模块……………………………………………………………………9
2.4超声波避障模块……………………………………………………………20
2.5步进电机模块………………………………………………………………23
2.6液晶显示模块………………………………………………………………24
2.7DS1302时钟模块……………………………………………………………25
3系统软件设计…………………………………………………………………27
3.1AVR单片机C语言设计……………………………………………………27
3.2ICCAVR编程器软件………………………………………………………27
3.3系统程序流程图……………………………………………………………31
4系统总体调试…………………………………………………………………32
4.1硬件调试……………………………………………………………………32
4.2软件调试……………………………………………………………………32
5系统抗干扰设计………………………………………………………………33
6技术经济分析…………………………………………………………………35
7结论……………………………………………………………………………36
致谢……………………………………………………………………………37
参考文献………………………………………………………………………38
附录A译文……………………………………………………………………39附录B外文文献………………………………………………………………43
附录C设计程序………………………………………………………………49
0前言
人们一直都想拥有一种能够自动驾驶,并且能够适应各种复杂路面情况和沿着指定道路(轨迹)行驶的车辆。
多年来,随着企业生产技术不断提髙,自动化技术不断加深,电子智能控制技术在汽车工业上的应用越来越普遍,人们的这一梦想终于有望得到实现。
现在,世界上许多国家都在对智能车辆进行研究和设计。
循迹避障小车的研究是移动机器人的一个分支,是一项涉及到计算机技术,传感技术,通讯技术,自动控制技术,人工智能技术等相关技术的综合系统。
当今的循迹避障小车技术的发展主要有两个特点:
第一,应用的领域不断扩大;第二,智能化程度越来越高。
它的主要功能是能够自动识别路径,自动控制车速,自动转向等[1]。
循迹避障小车是一个具有环境感知能力,规划决策能力的综合体,其主要特点是在复杂的道路情况下能自动的驾驶车辆并沿着预定道路行驶,特别适用于在人类无法工作的环境中工作。
作为智能交通系统(ITS)[2]中的一部分,循迹避障小车技术已经渗透到社会各个领域并且成为该领域中的研究热点。
对于循迹避障小车系统来说,它主要由路径识别、角度控制及车速控制等功能模块组成,它是一个集环境感知、规划决策等功能于一体的综合系统。
本循迹避障小车由模型小车、传感器、单片机以及所需的硬件电路组成。
其核心是自动控制系统,它是一个由传感器和处理器组成的网络,可以对路径识别并做出反应,能够自动调节行驶方向和速度,而无须遥控。
本课题有助于解决现实问题,有很强的研究价值。
1方案设计与论证
1.1整体硬件设计方案
根据设计任务的要求,确定如下方案:
通过高发射功率红外光电二极管和高灵敏度光电晶体管组成的传感器循迹模块判断黑线路径,通过超声波模块测量出障碍物和小车之间的距离,并将测量数据传送至单片机进行处理,然后由单片机通过IO口控制L298N驱动模块改变两个直流电机的工作状态,实现对小车的控制。
1.1.1系统基本组成
小车主要由ATMega128单片机电路、TCRT5000循迹模块、超声波模块、液晶显示模块、L298N驱动模块、直流减速电机、小车底板、电源模块、DS1302模块等组成。
图1-1单片机控制系统原理框图
Fig.1-1single-chipmicrocomputercontrolsystemprinciple
1)单片机电路:
采用ATMega128芯片作为控制单元。
ATMega128是ATMEL公司的8位系列单片机,稳定性高,应用广泛。
所有I/O端口都具有真正的读-修改-写功能;具有两个独立的预分频器和比较器功能的8位定时器/计数器;具有两个预分频器、比较功能和捕捉功能的16位定时器/计数器;具有独立预分频器的实时时钟计数器;能够产生两路8位PWM、6路分辨率可编程(1到16位)的PWM;可以通过SPI实现系统内编程[3]。
2)TCRT5000循迹模块:
采用反射式红外发射接收器作为循迹传感器,由红外传感器完成黑线识别并产生高、低电平信号,经过LM324整形后传送到单片机,单片机通过程序控制驱动模块来控制两个直流电机的工作状态,完成自动循迹[3]。
3)电机驱动模块:
采用L298N作为电机驱动芯片。
L298N具有高电压、大电流、响应频率高的全桥驱动芯片,一片L298N可以控制两个直流电机,并且带有控制使能端。
该电机驱动芯片驱动能力强、操作方便,稳定性好,性能优良。
L298N的使能端可以外接电平控制,也可以利用单片机进行软件控制,满足各种复杂电路的需要。
另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够的问题。
4)直流电机:
采用ASLONGJGA25-370直流减速电机。
直流减速电机,即齿轮减速电机,是在普通直流电机的基础上,加上配套齿轮减速箱。
齿轮减速箱的作用是提供较低的转速,较大的力矩。
同时,齿轮箱不同的减速比可以提供不同的转速和力矩。
5)超声波避障模块:
采用超声波测距模块(HC-SR04),利用单片机PC6控制HC-SR04的Trig引脚产生一个10us以上的高电平,用单片机外部中断6(INT6)检测接收口Echo高电平输出。
一有输出则引起外部中断,在外部中断内开定时器0计时,当Echo端口变为低电平时再次触发外部中断6,在中断内停止定时器0计数。
最后读出定时器的值,该时间值÷2×超声波传播速度=障碍物和小车的距离。
当障碍物与小车的距离小于规定值时,小车在行进中会绕开障碍物,沿着另一条跑道前进。
6)液晶显示模块:
采用HG12232带中文字库的液晶显示屏显示小车运行状态。
主要显示小车运行时间,实时运行状况。
该液晶屏可以并行传输,也可以串行传输。
在这个设计中,考虑到ATMega128有足够的引脚,故采用并行传输。
7)DS1302时钟模块:
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用DS1302对小车运行时间计时。
8)电源模块:
电机电源由四个串联的1.5V碱性电池作为电源。
单片机系统由四个串联的1.5V碱性电池,然后串接一个IN4007,最后用0.1uF电容进行滤波。
电机电源和单片机系统电源分开供电,提高了系统供电稳定性。
1.2整体软件控制方案
黑线是小车跟踪的目标,检测系统检测车的相对路径,然后将此信息输入到单片机,单片机处理此信息后,将控制命令输出到驱动模块,以控制小车的直流减速电机,保证小车平稳地沿预先设定好的路线行驶。
同时,超声波模块实时监测跑道上障碍物和小车之间的距离,当距离小于规定值时,小车进入岔道,然后继续沿着黑线前进。
2系统的硬件设计
2.1单片机最小系统设计
2.1.1单片机的功能特性描述
本设计采用ATMega128A单片机,该单片机是ATMEL公司的8位系列单片机,稳定性高,应用广泛。
1)主要特性
高性能、低功耗的AVR8位微处理器;先进的RISC结构;133条指令大多数可以在一个时钟周期内完成;32x8通用工作寄存器;芯片工作于16MHz时性能高达16MIPS;只需两个时钟周期的硬件乘法器;非易失性的程序和数据存储器;128K字节的系统内可编程Flash(寿命:
10000次写/擦除周期);具有独立锁定位、可选择的启动代码区;通过片内的启动程序实现系统内编程;真正的读-修改-写操作;4K字节的EEPROM(寿命:
100000次写/擦除周期);4K字节的内部SRAM;多达64K字节的优化的外部存储器空间;可以对锁定位进行编程以实现软件加密;可以通过ISP实现系统内编程;JTAG接口(与IEEE1149.1标准兼容);遵循JTAG标准的边界扫描功能;支持扩展的片内调试;通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程。
2)外设特点
两个具有独立的预分频器和比较器功能的8位定时器/计数器;两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器;具有独立预分频器的实时时钟计数器;两路8位PWM;6路分辨率可编程(1到16位)的PWM;输出比较调制器;8路10位ADC;8个单端通道;7个差分通道;两个可编程的串行USART;可工作于主机/从机模式的SPI串行接口;具有独立片内振荡器的可编程看门狗定时器;片内模拟比较器。
3)特殊的处理器特点
上电复位以及可编程的掉电检测;片内经过标定的RC振荡器;片内/片外中断源;6种睡眠模式:
空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式;可以通过软件进行选择的时钟频率;通过熔丝位可以选择ATmega103兼容模式;全局上拉禁止功能。
2.1.2ATMega128各引脚功能
1)Vcc:
数字电路的电源。
2)GND:
地。
3)端口A(PA7~PA0)、端口B(PB7~PB0)、端口C(PC7~PC0)、端口D(PD7~PD0)、端口E(PE7~PE0)、端口F(PFT~PF0)、端口G(PG4~PG0):
这些端口均为双向I/O口并具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。
复位发生时端口为三态。
端口也可以用作其他不同的特殊功能。
4)RESET:
复位输入引脚。
超过最小门限时间的低电平将引起系统复位。
低于此时间的脉冲不能保证可靠复位。
5)XTAL1:
反向振荡器放大器及片内时钟操作电路的输入。
6)XTAL2:
反向振荡器放大器的输出。
7)AVCC:
AVCC为端口F以及ADC转换器的电源。
需要与Vcc相连接,即使没有使用ADC也应该如此。
使用ADC时应该通过一个低通滤波器与Vcc连接。
8)AREF:
AREF为ADC的模拟基准输入引脚。
9)PEN:
PEN是SPI串行下载的使能引脚。
在上电复位时保持为低电平将使器件进入SPI串行下载模式。
在正常工作过程中PEN引脚没有其他功能。
2.1.3ATmega128的中断向量
表2-1复位和中断向量
Tab.2-1resetandinterruptvectors
向量号
程序地址
中断源
中断定义
1
$0000
RESET
外部引脚、上电复位、掉电检测复位、看门狗复位
2
$0002
INT0
外部中断请求0
3
$0004
INT1
外部中断请求1
4
$0006
INT2
外部中断请求2
5
$0008
INT3
外部中断请求3
6
$000A
INT4
外部中断请求4
7
$000C
INT5
外部中断请求5
8
$000E
INT6
外部中断请求6
9
$0010
INT7
外部中断请求7
10
$0012
TIMER2COMP
定时器/计数器2比较匹配
11
$0014
TIMER2OVF
定时器/计数器2溢出
12
$0016
TIMER1CAPT
定时器/计数器1捕捉事件
13
$0018
TIMER1COMPA
定时器/计数器1比较匹配A
14
$001A
TIMER1COMPB
定时器/计数器比较匹配B
15
$001C
TIMER1OVF
定时器/计数器1溢出
16
$001E
TIMER0COMP
定时器/计数器0比较匹配
17
$0020
TIMER0OVF
定时器/计数器0溢出
18
$0022
SPI,STC
SPI串行传输结束
19
$0024
USART0,RX
USART0,RX结束
20
$0026
USART0,UDRE
USART0数据寄存器空
21
$0028
USART0,UDRE
USART0,TX结束
22
$002A
ADC
ADC转换结束
23
$002C
EEREADY
EEPROM就绪
24
$002E
ANALOGCOMP
模拟比较器
25
$0030
TIMER1COMPC
定时器/计数器1比较匹配C
26
$0032
TIMER3CAPT
定时器/计数器3捕捉事件
27
$0034
TIMER3COMPA
定时器/计数器3比较匹配A
28
$0036
TIMER3COMPB
定时器/计数器3比较匹配B
29
$0038
TIMER3COMPC
定时器/计数器3比较匹配C
30
$003A
TIMER3OVF
定时器/计数器3溢出
31
$003C
USART1,RX
USART1,RX结束
2.1.4系统时钟
ATMega128单片机的XTAL1和XTAL2分别为用作片内振荡器的反向放大器的输入和输出,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。
熔丝位CKOPT用来选择这两种放大器模式的其中之一。
当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。
这种模式适合于噪声环境,而且这种模式的频率范围比较宽。
当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。
其优点是大大降低了功耗,但是频率范围比较窄。
图2-1晶体振荡器连接图
Fig.2-1crystaloscillatorconnections
2.1.5复位电路
复位是单片机芯片本身的硬件初始化操作,以便CPU以及其他内部功能部件都处于一个确定的初始状态,并从这个初始状态开始工作。
AVR单片机复位操作的主要功能是把程序计数器PC初始化为$0000,使单片机从$0000单元开始执行程序。
同时绝大部分的寄存器(通用寄存器和I/O寄存器)也被复位操作清零。
外部复位:
当外部引脚/RESET为低电平时且低电平持续一定的时间时,单片机复位。
图2-2外部复位
Fig.2-2externalreset
2.1.6串行编程方式(ISP)
串行编程方式是通过AVR芯片本身的SPI串行口来实现的,由于编程时只需要占用比较少的外围引脚,所以可以实现芯片的在线编程,不需要将芯片从PCB板上取下来。
当RESET位低电平时,可以通过串行SPI总线对Flash行编程。
串行接口包括SCK、MOSI(输入)及MISO(输出)。
RESET为低之后,应在执行编程/擦除操作之前执行编程允许指令。
尽管SPI编程接口重用SPII/O模块,但其中有一点不同:
MOSI/MISO引脚映射到SPI的I/O模块的PB2与PB3在编程接口并不使用,而PE0与PE1用来传递数据。
图2-3SPI系统内编程
Fig.2-3SPIinterfaceforin-systemprogramming
2.1.7ATmega128的熔丝位
在AVR内部有多组与器件配置和运行环境相关的熔丝位,可以通过设定和配置熔丝位,使AVR具备不同的特性,以更加适合实际的需要。
在AVR的器件手册中使用已编程(Programmed)和未编程(Unprogrammed)定义加密位和熔丝位的状态。
Unprogrammed表示熔丝位的状态为“1”(禁止),Programmed表示熔丝位的状态为“0”(使能)[4]。
需要从新下载程序时,或芯片被加密锁定后,或发现熔丝位配置不正确时,都必须先在编程状态下使用芯片擦除命令,然后重新下载运行代码和数据,修改和配置相关的熔丝位。
ATMega128在出厂时M103C默认状态为“0”,即默认以ATmega103兼容方式工作。
当用户系统设计使芯片以ATmega128方式工作时,应首先将M103C的状态配置为“1”。
表2-2晶体振荡器工作模式
Tab.2-2crystaloscillatoroperatingmodes
熔丝位
工作频率范围/MHz
C1、C2容量/pF
(仅适用于石英晶振)
CKOPT
CKSEL[3:
0]
1
101x
0.4-0.9
仅适用于陶瓷振荡器
1
110x
0.9-3.0
12-22
1
111x
3.0-8.0
12-22
0
101x,110x,111x
≥1.0
12-22
图2-4ATMega128单片机最小应用系统
Fig.2-4theleastapplicationsystemaboutATMega128
2.2电源模块
为了确保供电的稳定性和提高系统的抗干扰能力,电机电源和单片机系统电源分开供电。
电机电源由四个串联的1.5V碱性电池作为电源。
单片机系统由四个串联的1.5V碱性电池,利用IN4007导通压降0.7V左右的性质,在电路中串接一个IN4007,使得输出电压5至5.5V。
最后用0.1uF电容进行滤波。
为了得到3.3V电压,用AMS1117稳压模块将5V电压降为3.3V。
为了确保AMS1117的稳定性,输出端需要连接一个至少22μF的电容。
图2-5电源模块
Fig.2-5powermodule
2.3循迹模块系统结构
循迹模块是由传感器阵列检测到小车的位置状态,然后将相应的信息传送给单片机,单片机通过