《毕业设计(论文)自动泊车系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)自动泊车系统.doc(28页珍藏版)》请在三一办公上搜索。
1、自动泊车系统摘要对于许多驾驶员而言,顺列式驻车是一种痛苦的经历,大城市停车空间有限,将汽车驶入狭小的空间已成为一项必备技能。 很少有不费一番周折就停好车的情况,停车可能导致交通阻塞、神经疲惫和保险杠被撞弯。 幸运的是,技术的发展为之提供了解决之道,这就是自动泊车功能。 设想一下,您找到了一个理想的停车地点,不必再来回折腾,而只需轻轻启动按钮、坐定、放松,其他一切即可自动完成。 自动泊车技术同样适用于主动避撞系统,并最终实现汽车的自动驾驶。不同的自动泊车系统采用不同的方法来检测汽车周围的物体。有些在汽车前后保险杠四周装上了感应器,它们既可以充当发送器,也可以充当接收器。这些感应器会发送信号,当信
2、号碰到车身周边的障碍物时会反射回来。然后,车上的计算机会利用其接收信号所需的时间来确定障碍物的位置。其他一些系统则使用安装在保险杠上的摄像头或雷达来检测障碍物。但最终结果都是一样的:汽车会检测到已停好的车辆、停车位的大小以及与路边的距离,然后将车子驶入停车位。汽车自动泊车系统为很多不熟悉倒车停车入位的新手提供了便利,随着未来科技的发展,相信不久的将来汽车自动泊车系统一定会进入一个全新时代。关键词: 自动泊车;传感器;单片机;C语言Automatic parking systemAbstractFor many drivers, along the column parking is a pai
3、nful experience, big city parking space is limited, and the car into a small space has become an essential skill.Rarely does not cost a lot of trouble parked car, parking may lead to traffic congestion, nervous exhaustion and bumper knocked bend. Fortunately, the development of technology to provide
4、 them a solution, which is the automatic parking feature. Imagine you find a parking place, do not have to toss back and forth, with just the start button, sit down, relax, everything else can be done automatically. Automatic parking technology is equally applicable to the collision avoidance system
5、, and, ultimately, the cars autopilot.Automatic parking system takes a different approach to detect objects around the car. Some around the front and rear bumper fitted with sensors, they can either act as a transmitter, and can also act as a receiver. These sensors send a signal when the signal enc
6、ountered the body around the obstacles will be reflected back. Then, the cars computer will use the time needed to receive signals to determine the location of obstructions. Some other system is installed in the bumper on the camera or radar to detect obstacles. But the end result is the same: the c
7、ar will detect stop good vehicle, the size of the parking spaces, as well as the distance of the roadside, and then the car into parking spaces.Automatic car parking system for many novice not familiar with reverse parking into place provides a convenient, with the development of technologies of the
8、 future, I believe the near future automobile automatic parking system will enter a new era.Keywords: automatic parking; sensor; microcontroller; the C language目 录第0章 前言1第1章 软件开发工具31.1 keil软件简介31.1.1简介31.2 STC_ISP软件介绍51.2.1 软件简介5第2章 硬件元器件介绍82.1红外线传感器82.2超声波传感器82.3无线电遥控模块92.3电机驱动模块92.3 51单片机9第3章 软、硬件
9、的各部分功能测试103.1 硬件检测103.1.1 遥控模块的检测113.1.2 超声波模块的检测123.1.3 红外线模块的检测123.1.4 电机驱动模块的检测123.1.5 蜂鸣器的检测123.2 软件调试113.2.1 遥控模块的测试(是否同时按多个键)113.2.2 超声波模块的测试(不同距离)123.2.3 电机驱动模块的测试(转速)123.2.4 蜂鸣器的测试(不同频率)12第4章 遇到的问题及解决方案184.1 如何连接电路板与底盘电路184.2 为什么在开关关闭状态下单片机仍有电184.3 为什么在左右转时会出现“卡顿”现象194.4 如何解决小车高转速的问题204.5 为什
10、么前轮电机会被烧204.6 如何用超声波进行测距204.7 如何用红外线传感器测空挡车位的长度204.8 泊车程序的设计20第5章 后期作品185.1 硬件185.2.1 硬件电路185.2.2 电路说明195.2 软件195.3.1 主程序部分195.3.2 泊进车位操作205.3.2 泊出车位操作20参考文献23致谢23附录23第0章 前言 自动泊车系统,可以使汽车自动地以正确的停靠位泊车,该系统包括一环境数据采集系统、一中央处理器和一车辆策略控制系统,所述的环境数据采集系统包括一图像采集系统和一车载距离探测系统,可采集图像数据及周围物体距车身的距离数据,并通过数据线传输给中央处理器;所述
11、的中央处理器可将采集到的数据分析处理后,得出汽车的当前位置、目标位置以及周围的环境参数,依据上述参数作出自动泊车策略,并将其转换成电信号;所述的车辆策略控制系统接受电信号后,依据指令作出汽车的行驶如角度、方向及动力支援方面的操控。第1章 软件开发工具1.1 keil软件简介基础Keil C51开发系统基本知识Keil C51开发系统基本知识1. 系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件
12、时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或
13、tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。* 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。优点1.Keil C51生成的目标代码效率非常之高,多数语句生成
14、的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2.与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。1.2 STC_ISP软件介绍STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。第2章 硬件元器件2.1红外线传感器规格参数:1.工作电压:DC 3.3V-5V2.工作电流:10M
15、A3.工作温度:10504.检测距离:2-80CM5.IO接口:3线制接口(+/-/S)6.输出信号:TTL电平(有障碍物低电平,无障碍物高电平)7.调节方式:多圈电阻式调节8.有效角度:357.尺寸大小:24mm20mm8.安装孔径:3.3MM一些说明:数字信号输出,传感器含必要的调制和解调,逻辑处理.工作原理:传感器主动发射红外线,根据反射光探测,如果探测到障碍,OUT脚输出0,否则1.工作电压:3.3v-5.5v工作电流(5V时):典型电流10MA输入输出信号(4线):VCC (+)。GND(-) OUT(sig)GND,VCC是电源,VCC的范围是3.3V-5.5v。OUT为信号输出引
16、脚,接于控制器。EN为使能端,可以通过控制器控制,低电平有效,也可以直接插上跳线帽使用。板上有多圈精密可调电位器,可根据使用环境调节.调节范围从3cm-80cm.因为是反射原理,跟具体的反射目标相关,可根据情况调节.电路板上有一个发光LED,探测到障碍时发光.OUT输出持续低电平.无障碍是OUT输出持续高电平.传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键,其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大.2.2超声波传感器主要技术参数: 1:使用电压:DC5V 2:静态电流:小于2mA 3:电平输出:高5V 4:电平输出:底0V 5:感应角度:不大于15度 6
17、:探测距离:2cm-450cm 7:高精度:可达0.3cm接线方式,VCC、trig(控制端)、 echo(接收端)、 GND使用方法:一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了 模块工作原理: (1)采用IO触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间测试距离=(高电平时间*声
18、速(340M/S)/2;2.3无线电遥控模块四键遥控器和超再生固定码接收模块可以组成四路无线发射接收电路,遥控器的四位数据码对应模块的四路输出,可以方便的组成无线遥控发射接收电路,该产品广泛适用于广大电子爱好者的家庭、工业遥控类电子产品的设计和开发,可很好的作为单片机的信号输入源,特别适合大中院校学生电子电路设计、毕业设计中的遥控电路部分。超再生带解码四路遥控接收模块可以和发射器组成四路无线发射接收电路。该模块广泛适用于广大电子爱好者对家庭、工业遥控类电子产品的设计和开发,可很好的作为单片机的信号输入源,特别适合大中院校学生电子电路设计、毕业设计中的遥控电路部分。接收模块有自锁、非锁、互锁三种
19、型号。非锁、自锁、互锁三种工作方式说明非锁型输出又称点动输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制,有遥控信号时数据脚是高电平,遥控信号消失时数据脚立即恢复为低电平,适用于如电动门、电动门锁、与单片机对接等只需要一个高电平的电路等电路等。 自锁型输出的数据脚能实现触发翻转工作逻辑,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。自锁型四路相互独立互不影响,可同时遥控四路,如灯具的控制等。 互锁型输出就是任意一路收到信号则该路就能一直保持对应的高电平状态,接收到任意其它路的数据则恢复到原始状态,四路互锁只能有一路接通,实际应用如电
20、风扇档位开关电路等。接收板主要参数 工作频率:315M 工作电压:DC5V 工作电流:3mA(5.0VDC) 工作原理:超再生 调制方式:ASK 编码芯片:SC2272(PT2272、PT2294),芯片兼容 灵敏度:优于-105dBm(50) 输出信号:互锁(L)或非锁(M)或自锁(T),卖家在订货前要说明选择哪款 遥控距离:2050米以上(开阔地)接收模块的七根引脚分别为D3、D2、D1、D0、GND、VT、VCC,其中VCC为DC5V的供电端,GND为接地端,VT端为解码有效输出端,只要发射器的数据码有输出,VT都能同步输出高电平;D3、D2、D1、D0是2262解码芯片的四位数据输出端
21、,有信号时能输出5V左右的高电平,驱动电流约2mA,与发射器的四位数据码输出一一对应。接收模块不焊天线也能接收信号,为提高接收灵敏度,可以用一根长度约为23厘米的软导线直接焊接到天线孔处,图中RC所指的是振荡电阻,接收模块和发射器的震荡电阻需要匹配才能工作,我店接收模块用的是270K或者820K电阻,可以分别和1.5M或者4.7M振荡电阻的发射器配套使用。发射器可以用我店固定码四键遥控器或者带编码四路发射模块,如与其他发射器配套,则必须提供发射器相关参数。 下图是带解码的超再生接收模块等效电路图固定编码接收模块测试图(此图为原理图,以模块上的管脚位置为准,10、11、12、13即为上图中的D3
22、、D2、D1、D0引脚)注:发光二极管后加个1K左右的限流电阻2.4电机驱动模块产品参数:1.驱动芯片:L298N双H桥直流电机驱动芯片2.驱动部分端子供电范围Vs:5V35V;如需要板内取电,则供电范围Vs:+7V+35V3.驱动部分峰值电流Io:2A4.逻辑部分端子供电范围Vss:5V7V(可板内取电5V)5.逻辑部分工作电流范围:036mA6.控制信号输入电压范围:低电平:0.3VVin1.5V高电平:2.3VVinVss7.使能信号输入电压范围:低电平:0.3Vin1.5V(控制信号无效)高电平:2.3VVinVss(控制信号有效)8.最大功耗:20W(温度T75时)9.存储温度:25
23、13010.驱动板尺寸:55mm*49mm*33mm(带固定铜柱和散热片高度)11.驱动板重量:33g12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。使用说明:步进电机的驱动:板上的ENA与ENB为高电平时有效,这里的电平指的是TTL电平。ENA为A1和A2的使能端,ENB为B1和IB2的使能端。BJ接步进电机公共端。步进电机控制逻辑如下所示,其中A、B、C、D为步进电机的四个线圈,为1表示有电流通过,为0表示没有电流流过。线圈连线图如下图所示(以四相步进电机为例)。2.5 51单片机51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8
24、031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。8位CPU4kbytes 程序存储器(ROM) (52为8K)256bytes的数据存储器(RAM) (52有384bytes的RAM)32条I/O口线111条指令,大部分为单字节指令21个专用寄存器2个可编程定时/
25、计数器5个中断源,2个优先级(52有6个)一个全双工串行通信口外部数据存储器寻址空间为64kB外部程序存储器寻址空间为64kB逻辑操作位寻址功能双列直插40PinDIP封装单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实
26、现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,目前的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。单片机是一种可通过编程控制的微处理
27、器,单片机芯片自身不能单独应用与某项工程或产品上,它必须要靠外围数字器件或者是模拟器件的协调才能发挥其自身的强大功能。单片机属于控制类数字芯片,目前其应用于领域已非常广泛。主要如下:1.工业自动化。如数据采集,测控技术等2.智能仪器仪表。如数字示波器,数字信号源,数字万用表,感应电流表等3.消费类电子产品。如洗衣机,电冰箱,空调,电视机,微波炉,IC卡,汽车电子设备4.通信方面。如调制协调器,程控交换技术,手机,小灵通等5.武器装备。如飞机,军舰,坦克,导弹,航天飞机等第3章 软、硬件的各部分功能测试3.1 硬件检测3.1.1 遥控模块的检测3.1.2 超声波模块的检测3.1.3 红外线模块的
28、检测3.1.4 电机驱动模块的检测3.1.5 蜂鸣器的检测3.2 软件调试3.2.1 遥控模块的测试(是否同时按多个键)3.2.2 超声波模块的测试(不同距离)3.2.3 电机驱动模块的测试(转速)3.2.4 蜂鸣器的测试(不同频率)第4章 遇到的问题及解决方案4.1 如何连接电路板与底盘电路4.2 为什么在开关关闭状态下单片机仍有电4.3 为什么在左右转时会出现“卡顿”现象4.4 如何解决小车高转速的问题4.5 为什么前轮电机会被烧4.6 如何用超声波进行测距4.7 如何用红外线传感器测空挡车位的长度4.8 泊车程序的设计思路第5章 最终5.1 硬件部分 5.1.1 5.2.2 5.2 软件
29、部分5.2.1 主程序部分main() P2_1=0; /* 由于若不对P2_1置位,它的初始值便为1,这会使buzzer一直工作,所以一开始应对P2_1置0 */ while(1) if(P2_2=0) /* 进行泊车操作 */ P0_4=0; /* 开泊车模式提示灯 */ while(P2_2=0) int mark=0; if(P1_0=1) mark=1; if(P1_1=1) mark=2; switch(mark) case 1: PrepareCarParkingIn(); /* 泊车进车位操作 */ break; case 2: PrepareCarParkingOut();
30、break; else /* 进行遥控操作 */ while(P2_2!=0) /* 当拨码开关断开(即为遥控模式)时,循环 */ P0_4=1; /* 关泊车提示灯 */ if(P1_0=1) Goahead(); /* 对于前进的程序,其实就是对P2.4、P2.5进行赋值 */ if(P1_1=1) Backoff(); /*后退同样为对P2.4、P2.5进行赋值,但要注意的是:前进、后退按键不能同时按!*/ if(P1_2=1) Turnleft(); /* 和前进、后退一样,左转、右转为对P2.6、P2.7进行赋值 */ if(P1_3=1) Turnright(); MeasureA
31、ndAlarm(); /* 因为这是在遥控模式中,所以这个测量只测后面的雷达,同时也只是报警,而不制止运动 */ /* else的结束 */ /* 最大的while循环的结束 */ /* main函数的结束 */5.2.2 泊进车位操作void PrepareCarParkingIn() /* 泊车进车位 */ long int i,j; int m=0; /* m用来存放泊车位所测得距离 */ int A=4; /* A的值为符合泊进操作条件的距离 */ int n; /* 用来存放泊进结束条件距离 */ for(i=0;i3;i+) /* 泊车提示灯闪烁,表示进入准备进入泊进模式 */ f
32、or(j=0;j10000;j+) P0_4=0; for(j=0;j=A) break; if(m=A) /* 若所测得的距离m大于泊车要求距离A,则开始泊车 */ for(i=0;i100;i+) /* 等待一段时间 */ for(j=0;j200;j+) _nop_(); for(i=0;i5;i+) P2_4=0; /* 泊进操作一(右转,后退) */ P2_5=1; backslowly(); P2_4=0; P2_5=0; for(i=0;i4;i+) P2_4=1; /* 泊进操作二(左转,前进) */ P2_5=0; Goslowly(); P2_4=0; P2_5=0; fo
33、r(i=0;i40) P2_4=1; /* 泊进操作四(左转,后退) */ P2_5=0; n= measure(); backslowly(); P2_4=0; P2_5=0; for(i=0;i30) n= measure(); P2_4=1; P2_5=0; backslowly(); P2_4=0; P2_5=0; else /* 此时条件不符合泊车条件,buzzer响,提示无法泊车 */ for(i=0;i10;i+) /* 这个for语句用于buzzer的发声时间长短控制 */ for(j=0;j10000;j+) P2_1=1; for(j=0;j10000;j+) P2_1=0
34、; 5.2.3 泊出车位操作void PrepareCarParkingOut() /* 泊车出车位 */ int i,j; int B=50; /* 这里的B用来表示符合泊出条件的距离,50对应15cm左右 */ long int m; for(i=0;i5;i+) /* 泊车提示灯闪烁,表示进入准备进入泊出模式 */ for(j=0;j10000;j+) P0_4=0; for(j=0;jB) /* 符合条件,进行泊出操作 */ for(i=0;i100;i+) /* 等待一段时间 */ for(j=0;j200;j+) _nop_(); for(i=0;i3;i+) while(P2_0
35、=0) _nop_(); P0_6=0; /* 左边有障碍物时,开提示灯 */ P2_4=1; /* 泊进操作一(左转,前进) */ P2_5=0; Goslowly(); P2_4=0; P2_5=0; P0_6=1; /* 无障碍物时,提示灯关闭 */ for(i=0;i2;i+) while(P2_0=0) _nop_(); P0_6=0; /* 左边有障碍物时,开提示灯 */ P2_4=0; /* 泊进操作二(右转,后退) */ P2_5=1; backslowly(); P2_4=0; P2_5=0; P0_6=1; /* 无障碍物时,提示灯关闭 */ for(i=0;i7;i+) P2_4=1; /* 泊进操作三(左转,前进) */ P2_5=0; Gosl