完整版基于51单片机的智能车设计与实现.docx
《完整版基于51单片机的智能车设计与实现.docx》由会员分享,可在线阅读,更多相关《完整版基于51单片机的智能车设计与实现.docx(23页珍藏版)》请在冰点文库上搜索。
完整版基于51单片机的智能车设计与实现
1.引言
1.1选题背景
智能机器人是能够在道路和野外连续地实时自主运动的机器人,是当今科技研究领域的热点,体现了信息科学与人工智能技术的最新成果。
现代机器人己经不仅仅在工业制造方面,而且在军事、民用、科学研究等许多方面得到了广泛的应用。
全国电子大赛和省内电子大赛几乎每次都有智能小车、机器人这方面的题目,全国各高校也都很重视该题目的研究。
可见其研究意义很大。
本设计就是在这样的背景下提出的,指导教师和设计者都已经有充分的准备。
1.2设计目标
本设计是在不影响系统功能实现的前提下以经济实用的角度出发,采用MCS-51系列中的STC89C51单片机,以STC89C51为控制核心,结合PT2262和PT2272无线数据传输模块,L298N电机驱动模块以及其他传感器模块而设计出的智能小车控制系统。
该系统由硬件部分与软件部分组成。
其中硬件部分由电源输入模块、直流电机动力模块、电机驱动模块、单片机控制系统模块、显示系统模块、以及两个障碍检测传感器、两个循迹传感器、两个测速传感器组成。
软件部分由遥控部分和车载部分组成,遥控部分主要为车载部分发送数据命令,车载部分接收遥控命令做出相应的动作,同时根据不同命令分别实现自动避障、循迹、测速,状态显示功能。
系统从控制角度分为半自动和全自动。
全自动控制和半自动控制功能由遥控器功能键切换,所有动作将由状态显示LCD1602显示。
全自动控制:
车载部分根据无线数据传输模块传输的数据进入遥控模式、避障模式或者循迹模式,各种模式下LCD1602显示系统会显示当前状态以及当前智能小车行驶速度。
系统如果进入避障模式或者循迹模式便进入了全自动控制模式,系统会根据现实中遇到的情形与系统预设的情形对应,情形匹配后自动做出对应的动作。
半自动控制:
遥控系统由按键动作对应发出无线数据,车载系统接收数据,根据数据以及约定好的数据对应命令实现智能车的前进、后退、原地左转、原地右转动作,这样便实现了半自动控制功能。
半自动控制功能能够增强系统的适应性,并且能够处理紧急危险情况。
本设计结构简单,较容易实现,但具有高度的智能化、人性化,在一定程度体现了智能。
2.设计方案
2.1电机驱动方案
方案一:
三极管控制直流电机
采用传统的功率三极管作为功率放大器的输出控制直流电机。
线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热厉害,损耗大。
方案二:
继电器控制直流电机
采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。
此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
方案三:
采用专用芯片L298N作为电机驱动芯片。
恒压恒流桥式2A驱动芯片L298N,L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部包含4通道逻辑驱动电路。
可以方便的驱动两个直流电机,或一个两相步进电机。
L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压范围VIH为+2.5~46V。
输出电流可达2.5A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,EnA,EnB接控制使能端,控制电机的停转。
综述,方案三的调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转,根据需要此次设计采用此方案。
2.2遥控控制方案
方案一:
红外遥控方案
通常要根据编码方案来进行软件解码,红外遥控器将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去。
二进制脉冲码的形式有多种,其中最为常用的是PWM码(脉冲宽度调制码)。
前者以宽脉冲表示1,窄脉冲表示0。
后者脉冲宽度一样,但是码位的宽度不一样,码位宽的代表1,码位窄的代表0。
以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”如图2-1所示。
图2-1指令脉冲图
遥控编码脉冲信号由引导码、系统码、系统反码、功能码、功能反码等信号组成。
引导码也叫起始码,由宽度为9ms的低电平和宽度为4.5ms的高电平组成(不同的红外家用设备在高低电平的宽度上有一定区别),用来标志遥控编码脉冲信号的开始。
如图2-2所示。
图2-2信号引导码图
系统码也叫识别码,它用来指示遥控系统的种类,以区别其它遥控系统,防止各遥控系统的误动作功能码也叫指令码,它代表了相应的控制功能,接收机中的可根据功能码的数值完成各种功能操作。
系统反码与功能反码分别是系统码与功能码的反码反码的加入是为了能在接收端校对传输过程中数据是否产生差错。
脉冲位置表示的“0”和“1”组成的32位二进制码前16位控制指令,控制不同的红外遥控设备。
而不同的红外家用电器又有不同的脉冲调控方式,后16位分别是8位的功能码和8位的功能反码。
串行数据码时序图如2-3所示。
图2-3串行数据码时序图
将要发送的指令脉冲编码信号调制在38KHz的载波上,可以增加信号的抗干扰能力,提高信号传输效率。
信号调制时序如2-4所示。
图2-4信号调制图
红外解码就与编码反操作,由红外遥控接收头检测到红外信号到来时,进行延时等待引导码9ms的高电平通过,并同时判断在9ms中是否有低电平出现,如果有则退出解码程序认为这可能不是要接收的编码。
9ms如果正常通过则再等待4.5ms的低电平,并同时判断在4.5ms中是否有高电平出现,如果有则退出解码程序认为这可能不是要接收的编码。
紧接着将根据以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”和以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”的编码规则来接收系统码、系统反码,当系统码、系统反码接收完成后将其进行或操作,如果为0xff则认为是正确接收,否则退出解码程序,如果正确则与遥控器的系统码进行比较,如果相同则表示正确接收到指定遥控器信号,否则认为接收到的可能是别的遥控器信号。
最后接收功能码、功能反码,接收完成后将其进行或操作,如果为0xff则认为是正确接收,否则退出解码程序,如果正确则执行遥控器的中断处理程序,判断进行何种后续指令操作。
使用此方案编写遥控器解码程序,并通过实验板的数码管对功能码进行显示,获得遥控器的各按键对应的键值,在本设计中遥控处理程序通过可以比较是
否接收到相应键值进行判断执行遥控指令。
方案二:
无线数据传输
本系统无线数据传输采用PT2262和PT2272收发模块实现。
PT2262/2272芯片说明如下:
PT2262/2272是一种COMS工艺制造的低功耗低价位通用编解码电路,PT2261/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址吗,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。
编码芯片PT2262发出的编码信号由:
地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也是输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。
当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHZ的高频发射电路不工作,当有按键按下时,PT2262得电工作,其17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低电频期间315MHz的高频发射电路停止震荡,所以高频发射电路完全受控于PT2262的17
脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
PT2262/2272引脚图如图2-5图2-6所示:
图2-5PT2262引脚图图2-6PT2272引脚图
PT2262/2272引脚说明表2-1和表2-2所示:
表2-1PT2262引脚说明
名称
引脚
说明
A0-A11
1-810-13
地址管脚
D0-D5
7-810-13
数据输出端
TE
14
编码启动端
OSC1
16
振荡电路输入端
Dout
17
编码输出端
VCC
18
电源正极
VSS
9
电源负极
表2-2PT2272引脚说明
名称
引脚
说明
A0-A11
1-810-13
地址管脚
D0-D5
7-810-13
数据或地址管脚
DIN
14
数据信号输入端
OSC2
15
振荡电阻振荡器输出端
OSC1
16
振荡电路输入端
VT
17
编码有效确认
VCC
18
电源正端
VSS
9
电源负端
PT2272解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6之分,其中L表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。
M表示非锁存输出,数据脚输出的电平是瞬间时的而且和发射端是否发射相对应,可以用于类似电动的控制。
后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时(PT2272-M4),对应的地址编码应该是8位,如果采用6路的并行数据时(PT2272-M6),对应的地址编码应该是6位。
PT2262/2272无线数据收发组合理论上讲可以达到531441种组合,但是16种数据组合就可以满足本系统需求,所以我们采用市场上常见的T1000BSI无线发射模块和R03DS无线接收模块。
该模块可配合收发16种任意组合4位二进制数据,无线发射和无线接收模块经典电路如图2-7和图2-8所示:
图2-7T1000BSI无线发射模块经典电路
图2-8无线接收模块经典电路
红外无线数据传输的优点是成本低,38KHZ载波容易实现调试,硬件设计简单,但是有发射端和接收端之间不能有障碍物相隔,遥控距离短等缺点。
而无线数据传输距理论上在300米左右,发射接收频率固定在315MHZ,在隔墙的情况下也可以正常收发数据,但是315MHZ发射接收频率载波不容易调试实现,但是市场上315MHZ无线收发模块早已成熟,成本低廉。
所以综合方案一方案二我们选择无线收发模块作为实现本系统的数据传输功能。
2.3主控芯片的选择
STC89C51系列单片机是从引脚到内核都完全兼容标准8051的单片机。
STC89C系列单片机是高速/低功耗的新一代8051单片机,最高工作频率可分别达到25MHz~50MHz。
STC89C系列单片机有较宽的工作电压,5V型号的可工作于3.4V~6.0V。
此外,STC89C系列单片机在完全兼容8052芯片(在标准8051基础上增加了T2定时器和128字节内部RAM)的基础上,新增了许多实用功能。
STC89C51可以代替AT89C51,功能更强,速度更快,寿命更长,价格更低。
外型:
40个引脚,双列直插DIP-40。
STC89C51可以完成ISP在线编程功能,而AT89C51则不能。
将AT89C51中的程序直接烧录到STC89C51中后,STC89C51就可以代替AT89C51直接工作(一般都不需要做任何改动即可正常工作)。
STC推出的系列51单片机芯片是全面兼容其它51单片机的,而且51单片机是主流大军,每一个高等院校、普通学校、网站、业余单片机培训都是以51单片机为入门教材的,所以,教材最多,例子最多。
STC89C51内部有EEPROM,可以在程序中修改,断电不丢失。
还增加了两级中断优先级等等。
综述选择STC89C51作为主控芯片。
3.系统硬件构成
3.1设计原理
本设计由遥控和车载两部分组成,遥控部分和车载部分都是以STC89C51作为主控芯片。
由PT2262/2272无线数据传输模块和外围传感器来实现半智能和全智能小车数据命令收集系统。
遥控主要实现对智能小车的远距离控制目的,用LCD1602显示系统作为人机交换,显示当前智能小车的状态。
车载部分由单片机控制核心、电机驱动模块、红外避障传感器、循迹传感器、测速传感器、减速电机动力输出装置组成和LCD1602显示系统组成,达到遥控控制、全智能控制以及人机交换目的。
由PT2262和PT2272调制解调数据,使遥控部分和车载部分进行数据命令传输,遥控可以发送模式选择遥控模式、避障模式、循迹模式的模式切换命令,在遥控模式下可以发送前、后、左转、右转命令,车载控制核心根据接到的数据进行简单协议逻辑分析后发送命令使智能小车做出相应动作。
避障传感器和循迹传感器都是利用红外对管发射红外线经过反射之后检测接收发射光来实现检测障碍物和路线轨迹,而测速传感器是根据红外对射思想实现的,即红外发射管和接收管在同一直线上。
根据硬件电路设计,避障传感器可以通过调节电位器来调节检测距离,避障传感器发射红外线功率比较大,发射条件要求不高,发射距离远,检测距离在5cm到150cm之间;循迹传感器发射功率相对较小,检测距离只有1-3cm之间,循迹传感器根据不同颜色发射光线不同的原理来检测障路线的轨迹;测速传感器根据对射管之间有没有空洞可以让红外线穿过,同时在单位时间内累计出现空洞数量来计算智能车行驶速度。
本系统分为遥控子系统和车载子系统两部分,对应的设计框架图分别如图3-1,图3-2所示:
图3-1遥控系统框架图
图3-2车载子系统硬件框架图
3.2系统电源电路
稳定的系统电源在整个系统中有着举足轻重的作用。
本系统采用两种电源供电方式,一种是5-6V直流电源直接供电,另一种是7-9V直流电供电方式。
两种供电方式提高系统的环境的适应性能。
电源电路原理如图3-3所示:
图3-3系统电源电路原理图
3.3单片机最小系统电路
STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
用STC89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,最小应用系统是单片机能够正常工作的最小电路单元。
其应用特点是它有可供用户使用的大量I/O口线但内部存储器容量有限,应用系统开发具有特殊性。
3.3.1复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。
地址锁存信号ALE也为高电平。
根据实际情况选择如图3-4所示的复位电路。
图3-4复位电路原理图
该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。
增加手动复位按键是为了避免死机时无法可靠复位。
当复位按键按下后电容C1通过R5放电。
当电容C1放电结束后,RST端的电位由R5与R6分压比决定。
由于R5<R5的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。
3.3.2震荡电路
AT89C52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图3-5所示方式连接。
晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间。
根据本系统需求,这里中采用11.0592MHZ做系统的外部晶振。
电容为20pF的独石电容。
图3-5震荡电路原理图
3.4系统显示电路
为了在遥控和车体上都能更直观的观察系统当前运行状态以及系统当前行驶速度,系统采用了两块市场上技术非常成熟的LCD1602液晶显示屏分别安装在遥控和车体上,该液晶显示屏成本低廉,功耗低,控制简单,显示效果佳。
LCD1602液晶显示屏一屏能够显示2行16列共32个字符,能够满足系统需求。
LCD1602与51单片机电路连接图如图3-6所示:
图3-6LCD1602电路原理图
3.5外围传感器电路
外围传感器可以从两方面来分类。
从电路根据原理可以分为两大类,避障传感器检测距离可调,而循迹传感器和测速传感器是检测距离不可调传感器;从检测原理和效果来说都相同,都是根据红外线发射管发射红外线之后接收管能否接收到红外来判断是否检测到相应的情形,检测到对应的情形之后都会在对应的引脚输出低电平,对于主控制芯片来说只需要检测对应引脚时候出现低电平来做出对用的动作。
测速传感器和循迹传感器硬件实现原理相同,这里以循迹传感器为例阐述其硬件实现。
测速传感器主要由红外对管和74HC14反相器组成。
模块工作时由红外发射管连续发射红外线,如果在设置范围内遇到物体红外线就会按原路反射回来,这时接收端电路就会与地导通,经过74HC14方向器后就会把对应的引脚输出高电平。
74HC14是一款高速CMOS器件,可将缓慢变化的输入信号转换成清晰、无抖动的输出信号,主要用应在波形、脉冲的整形。
电路原理图如图3-7所示:
图3-7循迹传感器电路原理图
3.6按键电路设计与实现
根据需求,按键电路只在遥控子系统上加以实现。
遥控子系统中定义了八个用户按键和一个复位按键,复位按键是纯硬件实现,不需要编程控制。
八个用户按键框图如图3-8所示,按键由圆形表示,按键编号用长方形表示。
图3-8按键布局框图
4.系统软件设计
在进行系统设计时,除了系统硬件设计外,大量的工作就是如何根据实际需要设计应用程序。
在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块或过程。
所谓“模块化”,实质上就是把完成一个完整功能,相对独立的程序段封装在一个函数或者文件内,模块化编程风格风格提高了程序的可维护性和可阅读性。
4.1主程序控制流程
由于本系统由遥控子系统和车载子系统两部分组成,所以我们的控制程序也有两部分组成。
遥控子系统根据用户按下的按键发出对应的数据,并把当前的状态通过LCD1602显示给用户。
车载子系统根据发来的数据进入不同的模式,执行对应的动作,并通过LCD1602显示当前的状态以及行驶速度。
遥控子系统主控流程图和车载子系统主控流程图如图4-1,图4-2所示:
图4-1遥控子系统主控流程图
图4-2车载子系统主控流程图
4.2无线遥控控制实现
本系统软件设计分为遥控部分和车体部分,这两个在硬件上完全独立的子系统在通过无线模块就行数据通信时就要遵循一定的协议,比如遥控子系统发送二进制数据0000时,车载子系统如果处在模式一时控制程序应该知道是停止一切动作,而车载子系统处在模式二是不采取任何操作。
表4-1,表4-2分别给出了遥控子系统发出不同数据时整个系统应该切入的模式,以及在不同模式下遥控子系统发送不同数据时所对应的功能。
表4-1发送数据与模式对应关系
按键
发送数据
系统切入模式
系统状态切换至
KEY1
0001
模式一
遥控状态
KEY2
0010
模式二
避障状态
KEY3
0011
模式三
循迹状态
KEY6
1000
空闲模式
空闲状态
表4-2在不同模式下发送数据系统对应动作
按键
发送数据
系统对应动作
系统所处状态
遥控模式
避障模式
循迹模式
0000
停止一切动作
—
—
KEY4
0100
前行
—
—
KEY5
0101
后退
—
—
KEY7
0110
左转
—
—
KEY8
0111
右转
—
—
KEY6
1000
停止一切动作
停止一切动作
停止一切动作
4.3智能避障、智能循迹的实现
车载子系统安装两个避障传感器和两个循迹传感器。
两个避障传感器分别安装在智能车头部底盘两侧,发射红外线方向水平向前,检测不同方向的障碍物。
两个循迹传感器都安装在智能车底盘头部,红外线发射方向垂直向下,两只传感器之间距离3厘米,能够循迹宽度1到2.5厘米宽的深颜色轨道。
智能避障模式下,两个避障传感器会遇到四种不同情况。
分别是左右两边都没有障碍物,左边有障碍右边没有障碍物,左边没有障碍物右边有,左右两边都有障碍物。
这四种情况对应的动作如表4-3所示,表4-3中动作部分1代表检测到障碍物,0代表没有检测到障碍物:
表4-3避障算法
情形
智能车对应动作
左
右
0
0
前行
1
0
向右转弯,直到左边没有障碍物之后继续前行
0
1
向左转弯,直到右边没有障碍物之后继续前行
1
1
向右到0.6秒,向右转弯0.6秒,如果没有障碍物继续前行
智能循迹模式下也会遇到四种不同的情形。
分别是左边右边都没有检测到黑色预定轨迹,左边检测到黑色轨迹右边没有检测到,左边没有检测到黑色轨迹左边检测到,左右两边都检测到黑色轨迹。
这四种情况对应动作如表4-4所示,表4-4中1代表检测到黑色轨迹,0代表没有检测到黑色轨迹:
表4-4循迹算法
情形
智能车对应动作
左
右
0
0
前行
1
0
向右转弯,直到左边检测不到黑色轨迹之后继续前行
0
1
向左转弯,直到右边检测不到黑色轨迹之后继续前行
1
1
向右到0.6秒,向右转弯0.6秒,如果没有检测到黑色障碍物继续前行
4.4测速功能实现
速度测量显示是现实生活中很常见的,传统的速度测量是机械式的。
本系统采用数字测速思想实现更为精确实时的测速系统。
系统在电机输出主轴上固定有圆形镂空圆盘,镂空圆盘上有20个圆形过孔均匀分布在半径一定的圆周上,车轮的周长是20cm,所以单位时间内检测到的过孔数量既是智能车行驶速度,单位是cm/s。
测速传感器没有检测到过孔时会输出低电平,为了系统测速精确我们采用外部中断方式来计数检测到过孔数量,外部中断0触发方式设置为下降沿触发方式。
5.系统组装调试
一个简单的项目开发流程大概可以分为四大步骤。
第一步是需求分析,第二步是根据需求分析设计系统硬件电路,第三步是软件的设计与开发,第四步是系统的软硬件统筹调试。
在现实开发过程中系统开发流程尤为重要,如果需求分析没有做好等项目到交付时可能就会造成全盘否认的情况,造成的人力、财力和时间损失往往是很严重的。
有时在硬件设计阶段也需要考虑到软件实现的难易程度,根据软件控制的难易程度来适当调整电路设计。
本系统硬件设计用protel99se硬件电路设计开发平台来实现,keil4作为软件开发平台,电路板制作用传统的热转印和氨水的腐刻工艺实现。
5.1硬