C智能小车电子设计大赛C题论文 智能小车C8051F320单片机控制C语言.docx
《C智能小车电子设计大赛C题论文 智能小车C8051F320单片机控制C语言.docx》由会员分享,可在线阅读,更多相关《C智能小车电子设计大赛C题论文 智能小车C8051F320单片机控制C语言.docx(14页珍藏版)》请在冰豆网上搜索。
C智能小车电子设计大赛C题论文智能小车C8051F320单片机控制C语言
2011年全国大学生电子设计竞赛
智能小车(C题)
智能小车(C题)
摘要
本系统以单片机C8051F320为控制核心,使甲、乙两辆智能小车按题目要求行使,即首先两车在行车道同向而行跑一圈,接着实现两车交替超车领跑的功能。
小车在行车道时,利用灰度传感器检测转弯标志线来实现转弯,通过红外光电开关来检测跑道边界线,并且利用光电开关实现避障。
当小车检测到超车标志后,计算两车之间的距离,根据由测速码盘传回的小车速度,计算超车时间及规划行走路线。
两车之间利用无线通信模块进行协调,避免发生碰撞,同时液晶模块可以显示出小车速度、运行状态、电池电压等信息,增强了人机交流的友好性。
关键词:
智能小车超车避障通信
一、方案设计与论证··················································································1
1.控制器模块·········································································································1
2.边界检测模块·····································································································1
3.测距模块·············································································································2
4.无线通信模块·····································································································2
二、理论分析与计算··················································································2
三、硬件电路设计······················································································5
1.电源模块·················································································································6
2.电机驱动模块·········································································································6
3.标志线检测模块·····································································································7
4.障碍物检测模块·····································································································8
5.边界检测模块·········································································································9
6.测速模块·················································································································9
7.超声波测距模块···································································································10
8.液晶显示模块·······································································································11
9.无线通信模块·······································································································12
10.主控电路·············································································································13
四、软件设计····························································································13
五、测试和测试结果················································································14
六、参考文献····························································································15
一、方案设计与论证
1.控制器模块
智能小车的交替领跑功能要求小车的“感觉器官”,即传感器的数量及种类较多,并且两车之间的无线通信至关重要,诸多的信号要进行准确、快速处理,因此选择合适的控制器是满足系统快速反应和精确控制设计要求的基础。
方案一:
采用传统的51系列单片机。
传统的51单片机为8位机,价格便宜,控制简单,但是运算速度慢,片内资源少,存储容量小,受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。
方案二:
采用单片机C8051F320。
它的微控制器内核采用流水线结构,片内集成10位ADC、温度传感器、USB功能控制器、可编程计数器阵列和非侵入式的在系统调试接口等,不仅能提高精度、减小外围电路体积,而且可以提高系统的可靠性。
与其他型号芯片相比,C8051F320带有USB接口,片内的USB功能控制模块符合USB2.0规范,可在全速或低速下运行,并具有1KBUSB缓存、集成收发器,无需外部电阻。
可以与PC机即插即用。
根据题目要求,性能比较,我们选择方案二,采用单片机C8051F320作为控制器。
2.边界检测模块
在小车行驶过程中不可避免会接近边界,为了防止出边界掉到地面,边界检测电路的选择也至关重要。
方案一:
采用红外对管进行边界黑线检测。
在白色跑道上,红外接收管接收到红外光,输出为低电平;当检测到黑线时,黑线吸收大部分红外线,从而使接收管接收不到反射回来的红外线,输出变为高电平。
这种电路可以检测到黑线,但是在跑道上还有转弯和超车标志线,使得他们之间会有干扰,产生误动作。
方案二:
采用光电开关检测跑道与地面的高度差,来判断是否接近边界。
光电开关是一种集发射器和接收器于一体的传感器,当有被检测物体经过时,物体将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号,它不受黑线的干扰。
根据实际测试,我们选择方案二,采用光电开关检测边界。
3.测距模块
方案一:
采用红外传感器测距。
红外测距传感器利用红外信号遇到障碍物距离的不同,反射的强度也不同的原理,进行障碍物远近的检测。
红外光方向性差,当反射光较弱时,需要使用棱镜,而一面棱镜也要1000元以上,价格昂贵。
方案二:
采用超声波传感器测距。
超声波对色彩、光照度不敏感,可适用于识别透明、半透明及漫反射差的物体。
超声波传感器结构简单、体积小、费用低、信息处理简单可靠,并且可以进行实时控制。
根据经济性及适用性,我们选择方案二,采用超声波传感器检测距离。
4.无线通信模块
无线通信模块担负着在两辆小车超车时的信息通信任务,防止相互碰撞,该模块稳定快速运行是系统的关键。
方案一:
采用基于RF芯片的自制无线传输模块。
自制的无线传输模块是以RF芯片为核心的无线传输电路,此电路搭接较为简单,但是性能不够稳定,抗干扰能力差。
方案二:
采用CC100无线传输模块。
它具有传输距离远,灵敏度高,可靠稳定,低功耗等优点,但是使用编程较为复杂,且价格较高。
方案三:
采用GW100L无线传输模块。
它支持TTL接口,具有64个频道,可以通过软件修改频道和波特率。
低功耗、小体积、抗干扰能力强。
考虑稳定性和性价比,我们选择方案三,采用GW100L无线传输模块。
二、理论分析与计算
智能小车在超车过程中的路径选择问题,是本设计中一个至关重要的问题。
超车过程如图l所示。
图1超车示意图
假定被超车以速度v靠车道右侧行驶,以被超车横向方向与车道线的交点为相对坐标原点,车道线为相对坐标的纵坐标,且规定被超车行驶方向为纵坐标的正方向,以被超车横向方向为相对坐标的横坐标,且右为正方向。
赶超车可以超车时的安全超车范围为:
(1)
赶超车开始进入非超车车道的安全范围为:
(2)
区间–b→b为超车范围。
赶超车与车道线之间的距离为D。
超车过程的思路是,被超车以速度v靠车道右侧匀速行驶,赶超车以的相对速度vx(相对于被超车)追赶被超车。
当赶超车未进入超车安全距离之前,是以一定的速度靠右行驶,从进入超车安全距离开始,赶超车左转向,逐渐靠近车道线。
赶超车靠近车道线后继续以追赶速度在车道线稍右侧行驶。
当赶超车超过被超车进入可以靠右行驶的安全距离后,右转向,直到靠右行驶。
1.动态目标位置
动态目标位置定义:
被控车辆在跟踪或超越或避让运动障碍物过程中,随着时间和运动障碍物位置的变化而改变的预期到达位置。
它是一个由动态位置坐标和方向组成的向量:
,其中
,
为动态目标位置在t时刻的坐标,
为动态目标位置的车头方向与水平方向的夹角。
动态目标位置是用来表达驾驶员根据当前的交通环境确定下一步将要到达的安全位置的决策过程。
一般意义上说,可能存在多个目标位置供驾驶员决策,这将是复杂的多目标决策问题。
2.运动学模型
式(3)是一个简化的四轮车辆运动模型:
(3)
其中:
是车辆的方向,
是转向角,v是速度,l是轴距,
是估计取样时间,k是仿真步骤。
3.动态路线产生
本设计选择三次样条曲线作为动态路径拟合曲线,三次样条曲线是由分段三次多项式并接而成,在连接点上要求二阶导数连续,因此可以很好地拟合车道变换的路径。
为了减少路线产生的工作量,并证明本研究的有效性,车道变换的路线通过如下三次多项式定义:
(4)
其中
假设由车辆当前位置(x,y)、动态目标位置(
,
)以及两个位置的车头方向与水平方向的夹角θ和θt动态地决定车道变换的路线。
4.动态路径追踪
本设计中的路径是从车辆的当前位置到动态目标位置过程中产生的。
为了计算被控车辆到达动态目标位置的转向角,作如下推理:
车辆运动微分方程如下所示:
(5)
由方程(4)可得到:
(6)
然后得到:
(7)
现在利用方程(5),可将以上方程写为:
(8)
可推理得:
(9)
因为参考车辆的局部坐标系,所以有x=0和
=0,于是得到:
(10)
最后得到:
(11)
三、硬件电路设计
智能小车系统整体框图如图2所示,主要由电源模块、电机驱动模块、标志线探测模块、边界检测模块、测速模块、测距模块、液晶显示模块、无线通信模块等组成。
图2硬件框图
1.电源模块
电源模块使用两块3.7V/1350mAh的锂电池供电,经过7805三端稳压芯片,使输出电压稳定在5V,如图3所示。
电源模块采用单电源供电模式,为所有模块供电,供电简单,方便灵活,减小了车载质量和摩擦阻力。
图3电源稳压电路
2.电机驱动模块
电机驱动一般采用H桥式驱动电路,L293内部集成了H桥式驱动电路,从而可以采用L293电路来驱动电机。
L293通过内部逻辑生成使能信号。
H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。
另外,L293将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。
电机驱动模块如图4所示,功能表见表1。
图4电机驱动模块
表1电机驱动模块功能表
EN1/PWM1
IN1
IN2
M1、M2状态
EN2/PWM2
IN3
IN4
M3、M4状态
1
0
0
停止
1
0
0
停止
0
1
正转
0
1
正转
1
0
反转
1
0
反转
1
1
——
1
1
——
0
1/0
1/0
停止
0
1/0
1/0
停止
3.标志线检测模块
标志线检测模块利用红外对管来检测黑线,由于黑色和白色对光线的反射系数不同,如光线照射在白色物体上时,由于白色物体对光线的反射率高,反射回的光线强,接收管可以容易地接收到反射光线信号;相反的,光线照射到黑色物体上时,由于黑色物体的反射率较低,既有吸收光线的特性,反射光线很弱,在相同的距离上接收管无法接收到反射回来的微弱光信号。
电路如图5所示,当接收到光信号时,光电管道通,输出低电平;接收不到时,光电管不导通,输出低电平。
小车在贴有黑线的白色跑道上行驶,当检测到白色时,输出低电平;检测到黑线时,输出高电平。
图5黑线检测电路
只有多个红外光电管并联才能够起到良好的检测效果,在实际应用中光电管的排列方式,排列间距是有讲究的,为此采用“一”字型排列。
将四只红外对管分别置于小车底盘的前端,它们之间采用四输入或门4072连接,只要有一只检测到高电平,输出就为高电平,电路如图6所示。
使用红外对管检测黑线后,修正行车线路。
图6标志线检测电路
4.障碍物检测模块
障碍物检测电路采用E3F-DS30C4型漫反射型NPN常开光电开关,实物如图7所示,其工作原理如图8所示。
它把发射端和接收端之间光的强弱变化转化为电流的变化以达到探测的目的。
利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体有无的。
物体不限于金属,所有能反射光线的物体均可被检测。
当没有障碍物时,没有光线反射到接收器上,输出高电平;当有障碍物时,物体将光电开关发射器发射的足够量的光线反射到接收器,输出低电平,于是光电开关就产生了开关信号。
图7E3F-DS30C4型光电开关(a)发射器
图8光电开关工作示意图
(b)接收器
图8光电开关工作示意图
5.边界检测模块
边界线与跑道标志线都是黑线,若是使用黑线检测电路来检测边界,就会与标志线产生混淆,导致系统误判断。
由于跑道与地面有一定的高度差,考虑利用这个高度差来检测边界,自然而然想到了光电开关,它不会受到黑线的干扰。
通过调整光电开关后端的旋钮,把它的电平跳变距离调整到合适的高度。
用光电开关做边界检测电路实际上就是反用了避障的原理,当小车在跑道上行使时,输出低电平,而靠近边界时,输出高电平。
本设计在小车的前部左右两端各架出两个支架固定光电开关,当左侧光电开关检测到边界时,小车向右转;当右侧光电开关检测到边界时,小车向左转,以保证小车不超边界而掉到地面。
6.测速模块
测速模块对于实时监测小车速度,掌握小车位置有着至关重要的作用。
本设计在小车后轮的内侧及外侧电机输出轴上安装码盘,它的分辨率为1/6,如图9所示。
小车电机是经过两级齿轮减速的,第一级减速比是8/50,第二级减速比是10/50,整个减速比是8/250,即电机转动250转,车轮只转过8圈。
转换到终极输出就是,电机转动一转,车轮只转动了8/(250*6),即2/375圈,所以测量出来的转速精度是非常高的。
在测速码盘的两侧加装槽型对射式光电开关,其发射器和接收器分别位于U型槽的两边,并形成一光轴,当被检测物体经过U型槽且阻断光轴时,光电开关就产生了开关量信号,电路如图10所示。
图10测速电路
通过单片机控制,检测1秒内开关量信号的个数,则小车的速度计算公式为:
(12)
其中,v为小车速度;n为1秒内开关量信号的个数;C为小车车轮周长,等于12cm。
7.超声波测距模块
超声波测距的基本工作原理是测量超声波在空气中的传播时间,由超声波传播时间和传播速度来确定距离障碍物的距离,即所谓的脉冲——回波方式。
该模块由超声波发射头、发射电路、接收头、接收放大电路、回波信号处理电路和单片机控制电路等几部分组成。
超声波发射电路如图11所示,通过单片机产生一个40kHz的脉冲信号,经非门CD4049驱动超声波的发射头发出40kHz的脉冲超声波,持续发射200ms。
图11超声波发射电路
超声波接收部分电路如图12所示。
超声波接收头接收到的回波,首先经过由两级NE555构成的10000倍放大电路放大,然后采用LM311比较器对接收信号进行调整,送给单片机来处理。
图12超声波接收电路
假设室温下声波在空气中的传播速度是335.5m/s,测量得到的声波从声源到达目标然后返回声源的时间是t秒,则距离s可以由公式计算:
(13)
8.液晶显示模块
液晶显示模块使用MzLH04-12864,它为一块128×64点阵的LCD显示模组,模组自带两种字号的汉字库以及两种字号的ASCII码西文字库;并且自带基本绘图功能,包括画点、画直线、矩形、圆形等;此外该模块特色的地方就是还自带有直接数字显示。
模组为串行SPI接口,接口简单、操作方便;与各种MCU均可进行方便简单的接口操作。
液晶显示模块可以显示小车的速度、状态,还可以把监测到的电源电压数值显示出来,便于实时掌握系统的运行状态。
它与单片机连接如图13所示。
图13液晶显示模块图14无线通信模块
9.无线通信模块
无线通信模块采用GW100L无线传输模块,它支持TTL接口,具有64个频道,可以通过软件修改频道和波特率。
GW100L模块如图14所示,引脚说明见表2。
表2GW100L引脚说明
PIN
I/O
引脚说明
1
GND
I
公共地
2
TX
O
从GW100L输出到串口,2.8V/3.6V兼容TTL逻辑电平
3
RX
I
串口输入到GW100L,2.8V/3.6V兼容TTL逻辑电平
4
/RST
O
复位信号输入,低电平将使GW100L复位,复位脉冲低电平宽度至少需要10μs
5
Vcc(+3.3V)
I/O
MCU电源输入,DC2.8~3.6V
10.主控电路
小车的控制由单片机完成。
单片机要完成电机控制、避障控制、防撞控制、超车控制等工作。
考虑到电机的控制要用刀PWM波形,并且涉及到多传感器信号要进行准确检测、快速处理,因此选用了一款自带PWM模块的单片机——C8051F320。
主控电路如图15所示。
图15主控电路图
四、软件设计
系统的软件设计采用C语言,对单片机进行编程实现各项功能。
程序是在WindowsXP环境下编写的,可以实现小车对传感器的检测,输出脉冲占空比的设定、电机方向的确定等。
主程序主要起到一个导向和决策功能,决定什么时候小车该做什么。