简易智能电动车毕业设计.docx
- 文档编号:14090535
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:31
- 大小:499.89KB
简易智能电动车毕业设计.docx
《简易智能电动车毕业设计.docx》由会员分享,可在线阅读,更多相关《简易智能电动车毕业设计.docx(31页珍藏版)》请在冰点文库上搜索。
简易智能电动车毕业设计
毕业设计(论文)中文摘要
简易智能电动车
摘要:
本小车以MSP超低功耗单片机系列MSP430F149和MSP430FE425为核心,完成寻迹、检测金属、避障、寻光、测速等功能。
在机械结构上,对普通的小车作了改进,即用一个万用轮来代替两个前轮,使小车的转向更加灵敏。
采用PWM驱动芯片控制电机,红外传感器检测黑线,金属传感器检测铁片,光敏器件检测光强,红外LED和一体化接收头来避障。
基于可靠的硬件设计和稳定的软件算法,实现题目要求。
而且附加实现显示起跑距离、行驶时间、检测金属数目等扩展功能。
关键词:
MSP430寻迹检测金属避障寻光
毕业设计(论文)外文摘要
Title:
SimpleIntelligentCar
Abstract:
ThisdesigniscontrolledwiththeMCU(MSP430F149,MSP430FE425)tocompletethefunctionoffindingtrace,detectingmedal,avoidingbarrier,tendingtolightandmeasurespeed.Byusinginfraredsensortolocatethetrace、photoelectricitysensetomeasurethelight、metalsensortodetectthemetalandultrasonicwavesensortoavoidthebarrier.Basedonthereliablehardwareandsoftwaredesigning,thisdesigniswellfulfilled.Inaddition,suchextendedfunctionsasmeasuringthedistanceandrecordingtherunning-timearecompletedwell.Onthelevelofmachinestructure,weuseaperfectwheeltomakethecarturningmoreconvenience.
Keywords:
MSP430findtracedetectmedalavoidbarrierandtendtolight
目录
1引言5
2系统设计5
2.1设计要求5
2.1.1基本要求5
2.1.2发挥部分5
2.2方案论证与比较6
2.2.1电机驱动方案的选择与论证6
2.2.2路面寻线模块6
2.2.3金属检测模块6
2.2.4寻光模块6
2.2.5避障模块6
3硬件电路设计7
3.1主控制模块7
3.2电机驱动模块9
3.3寻迹模块10
3.4金属检测模块12
3.5寻光避障模块12
3.6测距和显示模块13
3.7电源模块14
4软件设计15
4.1寻迹算法15
4.2寻光,避障算法17
4.3串口通信21
5.系统测试23
5.1测试用仪表:
23
5.2测试数据:
23
结论24
致谢24
参考文献24
附录25
附件1:
使用TI芯片25
附件2:
元器件清单25
附件3:
实物及PCB图片26
1引言
随着素质教育的越来越被重视,很多学校都把制作智能小车作为首选课题,智能小车有趣生动并且还牵扯到机械结构、电子基础、传感器原理、自动控制、单片机、编程等诸多学科知识,学生通过动手实践能大大提高解决实际问题的能力,而且智能小车还是一个很好的硬件平台,只要增加一些控制电路就能完成循迹小车,机器人等课题。
本设计以MSP430单片机为核心使小车实现特定功能要求,设计,制作过程详细,并且充分利用MSP430内部资源,是一个有趣而有意义的过程。
2系统设计
2.1设计要求
2.1.1基本要求
(1)电动车从起跑线出发(车体不得超过起跑线),沿引导线到达B点。
在“直道区”铺设的白纸下沿引导线埋有1~3块宽度为15cm、长度不等的薄铁片。
电动车检测到薄铁片时需立即发出声光指示信息,并实时存储、显示在“直道区”检测到的薄铁片数目。
(2)电动车到达B点以后进入“弯道区”,沿圆弧引导线到达C点(也可脱离圆弧引导线到达C点)。
C点下埋有边长为15cm的正方形薄铁片,要求电动车到达C点检测到薄铁片后在C点处停车5秒,停车期间发出断续的声光信息。
(3)电动车在光源的引导下,通过障碍区进入停车区并到达车库。
电动车必须在两个障碍物之间通过且不得与其接触。
(4)电动车完成上述任务后应立即停车,但全程行驶时间不能大于90秒,行驶时间达到90秒时必须立即自动停车。
2.1.2发挥部分
(1)电动车在“直道区”行驶过程中,存储并显示每个薄铁片(中心线)至起跑线间的距离。
(2)电动车进入停车区域后,能进一步准确驶入车库中,要求电动车的车身完全进入车库。
(3)停车后,能准确显示电动车全程行驶时间。
(4)其它。
2.2方案论证与比较
2.2.1电机驱动方案的选择与论证
方案一:
使用继电器对电机进行开关控制和调制。
但缺点很明显,继电器响应慢而且机械结构容易坏。
方案二:
使用三极管或者达林顿管,结合单片机输出PWM信号实现调速的目的,此方案易于实施,但若控制电机转动方向较为困难。
方案三:
使用PWM控制芯片来实现对电机的控制。
方案选择:
采用方案三。
,该方案电路简单,性能稳定,可以轻松实现对电机方向的控制。
2.2.2路面寻线模块
方案一:
采用光敏传感器,根据白色背景和黑线反光程度的不同来判断传感器是否位于黑线上。
方案二:
采用反射式红外传感器来进行探测。
只要选择数量和探测距离合适的红外传感器,可以准确的判断出黑线的位置。
方案选择:
采用方案二。
方案一受环境光的影响太大,效果不佳。
而红外光不易受到环境光的干扰。
2.2.3金属检测模块
采用金属接近开关来检测铁片,当金属接近时,高频磁场在金属中产生了涡流,使得LC谐振回路的震荡幅度下降到阈值电压,开关输出信号。
2.2.4寻光模块
方案一:
采用单一的光敏电阻,利用其在不同的光强下阻值不同,确定小车的转向,保证其朝着光源最强的角度前进,这样做电路实现简单,但是精度不易控制。
方案二:
采用多个光敏电阻,在小车车头排列成为半圆状结构。
根据矢量合成原理,按照各个传感器测量光强的不同,确定小车相对于光的位置。
方案选择:
采用方案二。
此方案实现较为复杂但能取得良好的效果。
2.2.5避障模块
方案一:
采用一体化红外接收头,在38KHz附近,接收头的灵敏度不同。
依次在38KHz发射频段不同的红外线,在距离障碍物一定距离时测出障碍物。
方案二:
采用超声波测距的方法,利用超声波传感器,监视测量发射脉冲和接受脉冲的时间差,计算超声波和物体之间的距离。
可以将避障和寻光模块一起排列为环状结构。
方案选择:
虽然超声波测距有其性能上的优势,但其价格过高,且通过算法上的优化红外测距完全可以满足设计要求,故采用方案一。
2.2.6测距模块
方案一.采用断续式光电开关测距
方案二.利用磁钢和干簧管,在车轮上均匀粘贴若干磁钢。
每当车轮上磁钢转动至干簧管处,单片机进行一次计数,结合车轮半径就能求出小车行进距离。
方案选择:
考虑到小车的实际机械结构,如果采用方案一必然会对小车结构有较大的改变。
方案二结构简单、市场上的磁钢、干簧管体积小巧,易于在我们的小车上很好的固定安装。
而且软件上也易于实现。
3硬件电路设计
本系统以MSP430F149和MSP430F425为控制核心。
整个硬件框图如下图所示:
图2.1系统硬件框图
3.1主控制模块
MSP430系列单片机是美国TI公司1996年开始推向市场的一种16位的超低功耗的混合信号处理器。
其之所以称之为混合信号处理器,主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。
MSP430单片机更适合于低功耗、高速实时控制以及数据计算,它拥有更多的片上资源供设计使用,是设计的不错选择。
由于本小车实现功能较多,因此我们选择了MSP430F149和MSP430FE425为双核心的系统。
通过编写通信协议,完成其之间的串行通信。
MSP430F149主要完成电机驱动、寻迹、避障、寻光等功能。
如图2.2:
图2.2MSP430F149原理图
MSP430FE425主要完成金属检测、测速、液晶显示等功能。
如图2.3:
图2.3MSP430FE425原理图
3.2电机驱动模块
电机的驱动芯片选用L298N作为驱动芯片。
工作稳定电机驱动信号由单片机提供,信号经过光耦隔离后,传至PWM控制芯片L298N,通过L298N的输出与两个电机相连。
L298N的连接方法如图2.4所示
图2.4L298N的连接方法
芯片控制方法如下图2.5,11脚为高时,当10脚电平高于12脚时,13脚,14脚端电机正转;12脚电平高于10脚时,电机倒转;11脚为低时,电机自由控制。
图2.5L298N控制电机方法
3.3寻迹模块
当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平;当小车行驶到黑线时,红外线信号被黑色吸收后,将输出高电平,从而实现了通过红线检测信号的功能。
将检测到的信号送到单片机的I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑线吸收了,表明小车处在黑色的引线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。
反射式红外传感器ST188采用高发射功率红外广电二极管和高灵敏度光电晶体管组成。
检测距离可调整范围为4-15mm;采用非接触检测方式。
图2.6反射式红外传感器工作原理
图2.6是反射式红外传感器的工作原理图。
封装在矩形壳体中的是发射器LED(由左侧的白色方块表示)和探测器装置(在右侧)。
虚线表示光线从发射器LED中发出并反射回探测器;探测器检测到的光强大小取决于物体表面的反射率,而这一光强就是传感器的输出值。
如图所示,选通信号(高电平)经过三极管扩流后送到传感器的K脚,如果检测到黑线,传感器C脚输出高电平;否则输出为低电平。
图2.7寻迹模块电路原理图
为了提高控制精度,要求传感器排列紧密,越紧越好。
但传感器排列紧密,传感器发射管的光线可能会从地面反射进入临近传感器的接收管。
所以不能同时开启这些传感器。
其分布如图2.8所示:
图2.8传感器安装图
3.4金属检测模块
采用市售的接近开关,无信号时,探头输出高电平。
检测到金属时,电平跳变为低,单片机再进行相应处理。
相应金属传感器型号为LJ18A3型。
3.5寻光避障模块
寻光避障模块均设计为环状传感器结构,共排布若干个传感器组,每个传感器组包含红外收发模块和光敏电阻。
如下图所示,共有五个传感器组:
图2.9传感器的排布
光源检测模块,光敏电阻A组到E组从不同方向采光,每个光敏电阻的电压信号入单片机片内ADC,利用F149系列内置的ADC12模块,实现了对五个方向光强的采集。
由ADC的值,判断光强不同来确定小车的趋光方向;同理,可设定一个阈值比较,得出一开关信号调节最终小车停在车库内。
避障模块,利用单片机定时器发出可调制的38KHz红外线,利用一体化接收头判断,再由小车执行相应的避障动作。
图2.10寻光避障模块原理图
3.6测距和显示模块
利用磁钢和干簧管,在车轮上均匀粘贴若干磁钢。
每当车轮上磁钢转动至干簧管处,单片机进行一次计数,结合车轮半径就能求出小车行进距离。
显示模块采用段码液晶来实现,FE425上有专门的液晶接口,可以很方便地实现电路。
液晶采用4-MUX输入方式的7位半段码液晶。
图2.11液晶显示模块原理图
3.7电源模块
小车采取单电源供电,由于传感器需采用5V供电,主控制芯片采用3.3V供电故电源模块的电路如图2.12,图2.13所示:
图2.12电源模块1
图2.13电源模块2
其中Vin接5节1.5V电池,经TLV1117-5可稳到5V,经TLV1117-3.3稳到3.3V,分别给传感器和控制芯片提供电源。
注意系统在单片机去电机驱动的连接部分要使用光耦进行隔离。
4软件设计
本系统采用“双核”结构,一片采用MSP430F149,一片采用MSP430F425,
功能上主要用F149做运动控制芯片,F425做检测金属,计算距离,液晶显示,
计时等功能。
之所以采用MSP430单片机,主要时因为该系列单片机有许多优
秀的特点,非常适合用于本系统。
首先,MSP430单片机引入了时钟系统的概念,将CPU、外围功能模块、休眠唤醒机制三者相互独立,这就可以通过软件设置时钟分频实现系统不同程度的休眠,让系统以间歇方式工作最大限度的节省电力,我们小车系统的F425就是使用BasicTimer定时唤醒。
其次,MSP430单片机内核时16位RISC处理器,单指令周期,运算能力,处理能力都具有一定的优势,完全可以满足我们小车寻线、避障、寻光等多个功能的实现,CPU可以在1.8-3.3V宽电压供电。
第三,MSP430系列单片机采用模块化的结构,每一种模块(内部资源)都具有独立而完整的结构,在不同型号的结构中,同一种模块的使用方法和寄存器都时相同的。
这为学习和开发MSP430单片机提供了便利。
比如说我们的双核系统内部都用到了TA定时器,UART0串口,这样的话开发时就可以只对底层程序稍作修改用于不同型号的MSP430单片机。
第四,MSP430内置资源非常地强大,它不仅仅只是一个微处理器系统,还包含了模拟电路、模数/数模转换电路、显示接口等丰富的外设。
要完成对小车的巡线,寻光,避障,显示距离,计时等功能,除了必要的传感器和电机驱动芯片以外,一个完整系统所需的所有外设都集成在了430芯片上。
两片MEP430单片机几乎提供小车的SOC解决方案。
4.1寻迹算法
采用PID(PD)控制算法,如果某时刻检测到黑线偏左,就要向左转弯;如果检测到黑线偏右,就要向右转。
偏得越多,就要向黑线方向打越大的转角。
这就是比例控制(P)。
遗憾的是,因为小车有惯性。
假设黑线偏左,说明小车偏右了,需要左传舵,等到小车回到中心的时候,停止转舵,可是小车的惯性会使车身继续左转,直到冲过黑线,黑线又偏右。
然后控制过程反复,车身是在左右摇摆中向前行走的。
这种摇摆叫做“超调”,超调越大,控制越不稳定,容易出轨。
为了克服惯性,我们除了位置信息之外,还需要知道轨迹的变化趋势。
我们可以用黑线位置的微分值来提前得到变化趋势。
用本次位置减去前次位置求出差值,就大致知道偏移量的变化趋势。
将该差值和比例相加后一起作为控制量,即可实现提前控制。
这就叫做比例微分控制(PD控制)
/*PID(PD)控制算法*/
intPID_Control(signedcharPosition)
{
intTemp_P,Temp_D,Temp_PID,Temp_I,k;//声明三个变量,用于存放P、ID量的运算结果三量的运算结果(I没用上)
if(Position==-128)return(No_black);//错误处理(值得改进的地方)
Else
{
Temp_I=Position;
for(k=0;k<5;k++)Temp_I+=Last_Position[k];
Temp_I*=I_coefficient;
Temp_P=P_coefficient*Position;//计算比例分量(P)=比例系数*本次位置差
Temp_D=D_coefficient*(Position-Last_Position[5]);//计算微分量(D)=数微分系*(本次位置差-前3次的位置差)
//注意由于采样比较快,用本次位置前三次的位置才有足够大的控制量
Last_Position[6]=Last_Position[5];
Last_Position[4]=Last_Position[3];
Last_Position[3]=Last_Position[2];
Last_Position[2]=Last_Position[1];
Last_Position[1]=Last_Position[0];
Last_Position[0]=Position;/*保存前5次的位置,以备用。
Temp_PID=Temp_P+Temp_D+Temp_I;//P分量和D分量相加,得到控制量。
if(Temp_PID>5000)Temp_PID=5000;//防止控制量溢出
if(Temp_PID<-5000)Temp_PID=-5000;//控制量-5000~5000作为左右满舵
Temp_PID=Temp_PID*1/5;//-1000~+1000以是左右满舵的输出,因此需要除0.5
/*
单片机浮点运算非常慢,所以用乘2除5点运算来替代定点数要先乘后除,才能保证精度同时要防止溢出,用起来比较麻两烦次,但定CPU和内存开销小。
*/
return(Temp_PID);}
}
4.2寻光,避障算法
题目要求小车到达C点之后,在光源引导下避开障碍物进入车库,这就要求小车同时完成寻光和避障的功能。
如果只进行寻光,小车会撞上障碍物,如果只进行避障,小车也许会离光源越来越远。
理论上避障的优先级是要高于寻光的,因为一旦接触上障碍便宣告失败。
所以一旦检测到障碍物,小车会立刻执行避障动作,一旦传感器环路没有检测到障碍小车就向光源靠拢,这样能够保证小车在成功避障的条件下逐渐逼近光源,直到走出障碍区之后就能直奔光源而去。
这种算法小车执行寻光避障整体采用了状态机的切换,
voidFSM()
{switch(Status)
{
caseLight_Status:
Find_Light();break;//没有障碍物就进入寻光模式
caseBarrier_Status:
Avoid_Obstacle();break;//检测到障碍进入避障状态
default:
break;
}
}
具体的寻光采用了149内部的ADC12模块,通过AD读出的光敏电阻的值
进行处理。
根据传感器环路的结构,以小车前后方向作为Y轴,左右方向作为
X轴,五个光敏电阻分别位于0度,45度,90度,135度,180度的位置。
先
对采回的各个光强进行归一化的处理,然后根据矢量合成的原则,计算出小车
应该行进的方向,其中X为两个轮的速度差,Y为共同速度。
代码如下:
//矢量合成,X,Y两个轴,
x=0;y=0;
//1号光敏电阻,无Y轴,X为负
x=x-Intensity*Light[0];
//2号光敏电阻,X为-0.707,Y为0.707,45度
x=x-(Intensity*Light[1]*707)/1000;
y=y+(Intensity*Light[1]*707)/1000;
//3号光敏电阻,X为0,Y为正
y=y+Intensity*Light[2];
//4号光敏电阻,X,Y都为+0.707,45度
x=x+(Intensity*Light[3]*707)/1000;
y=y+(Intensity*Light[3]*707)/1000;
//5号光敏电阻,Y为0,X为正
x=x+Intensity*Light[4];
y=y;
由于小车采用左右两轮的差动控制,在小车测试时,,若X和Y的差距太小,会导致趋光性并不明显,若Y的值太小又会使小车前进速度很慢。
所以要仔细调制X和Y参数归一到占空比CCRx的系数。
或许采用舵机控制后轮或者利用汽车结构的前轮转向小车系统能够更高效的解决寻光灵敏度的问题。
在寻光小车设计中,还要考虑实际环境对小车的影响。
如何滤除环境光的影响时设计的一个难点,引导小车的光源时200W的灯泡,在实际测试时,由于白天和晚上环境光的不同,小车的实际AD采样值也有差异,会造成小车运行的不稳定。
不过即使环境光再强烈,在题目要求的场地里也不及灯泡的亮度,该问题解决方法是先大概感知周围环境的光强,再根据预设的值调整光强系数,自适应调整电机转速,这样就能保证只要是200W的灯泡作为引导光源,无论周围环境光的强弱,小车都能稳定地、以大概相同的速度寻光进入车库。
这个问题要是深究下去还有很多值得研究的地方:
比如同时有若干个强光源,小车现在的算法是朝着这些光源合成的几何中心进行,如果要实现朝着光最强的那个光源行进该采用什么样的算法。
避障算法采用了检测发射红外LED,读一体化接收头的数据判断障碍物的位置。
这里采用38Khz敏感的接收头。
为了使小车的检测距离适中,还需调整通过红外LED的电流为5mA左右。
采用了TA0来发生红外线,不干扰CPU的运行:
voidTimerAInit()
{//设置数组,对应频率分别为38,41,44,48,54,60,67
TACTL|=TASSEL_2+TACLR+MC_1;//TIMER_A时钟源选为SMCLK,清TAR
TACCR0=44;//产生约38KHZ的PWM输出,SMCLK=4M,105周期个时钟
TACCTL0|=OUTMOD_4;//翻转模式产生占空比为50%的PWM
}
避障底层程序:
避障底层程序:
voidMeasure_Distance()
{
unsignedcharflag_1=0,flag_2=0,flag_3=0,flag_4=0,flag_0=0;
//unsignedchari,Frequency[5]={29,36,44,47,51};//66,54,44,42,38
//1
if(flag_0==0)
{
Delay(34);
PIRE1_H;//打开1号传感器
Delay(34);//延迟,等待数据稳定
if(IRE1_IN==0)//如果接收到的信号为低电平,表明前方有障碍物
{flag_0=1;BarrierData[0]=1;}
elseBarrierData[0]=0;
PIRE1_L;
}
//2
if(flag_1==0)
{
Delay(34);
PIRE2_H;//打开2号传感器
Delay(34);//延迟,等待数据稳定
if(IRE2_IN==0)//如果接收到的信号为低电平,表明前方有障碍物
{flag_1=1;BarrierData[1]=1;}
elseBarrierData[1]=0;
PIRE2_L;
}
//3
if(flag_2==0)
{
PIRE3_H;//打开3号传感器
Delay(34);//延迟,等待数据稳定
if(IRE3_IN==0)//如果接收到的信号为低电平,表明右前方有障碍物
{flag_2=1;BarrierData[2]=1;}
else{BarrierData[2]=0;}
PIRE3_L;
//关闭3号传感器
}
//4
if(flag_3==0)
{
PIRE4_H;//打开4号传感器
Delay(34);//延迟,等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易智能电动车 毕业设计 简易 智能 电动车