《单片机课程设计-基于单片机的循迹小车(共20页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计-基于单片机的循迹小车(共20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上黄山学院单片机课程设计说明书专 业: 自动化班 级: 14自动化2班学生姓名: 指导老师:成绩: 目 录 3.3 附加功能10 3.3.1 蓝牙小车1029附录30第1章 绪论1.1 引言我们所处的这个时代是信息革命的时代,各种新技术、新思想层出不穷,纵观世界范围内智能汽车技术的发展,每一次新的进步无不是受新技术新思想的推动。随着汽车工业的迅速发展,传统的汽车的发展逐渐趋于饱和。伴随着电子技术和嵌入式技术的迅猛发展,这使得汽车日渐走向智能化。智能汽车由原先的驾驶更加简单更加安全更加舒适,逐渐的向智能驾驶系统方向发展。智能驾驶系统相当于智能机器人,能代替人驾驶汽车。它主
2、要是通过安装在前后保险杠及两侧的红外线摄像机,对汽车前后左右一定区 域进行不停地扫描和监视。计算机、电子地图和光化学传感器等对红外线摄像 机传来的信号进行分析计算,并根据道路交通信息管理系统传来的交通信息,代替人的大脑发出指令,指挥执行系统操作汽车。1.2 课题任务要求 应用STC89C51微控制器中的端口、外部中断、定时器等基本模块,实现核心控制,再结合电源板、电机驱动板来控制电机的转向,最后加上传感检测模块,实现小车的智能寻迹。 这次课程实践要求每一同学都要动手都制作出一辆循迹小车,真正实现从听中学到做中学,提高同学们的动手能力。这次实践最基本的功能底线就是能够实现循迹和壁障。 1.3 本
3、论文研究的内容本论文是基于STC89C51单片机开发,主要是研究4轮小车的路径识别。第2章 系统总体设计2.1 小车的机械特性小车采用的是一辆三轮车车模。后轮控件前进或转弯,前轮根据后轮驱动左右摆动即可以实现左右转。该种车模控制简单。小车可通过PWM控制后轮电机转动的速度来控制前轮电机的转动幅度从而控制小车的转弯幅度,实现小车的前进与转弯操作。小车可通过对DIR控制后退。2.2 寻迹小车基本原理探测路面黑线的基本原理:光线照射到路面并反射,由于黑线和白纸对光的反射系数不同,可以根据接收到的反射光强弱来判断是否是黑线。利用这个原理,可以控制小车行走的路迹。这里的循迹是指小车在白色地板上循黑线行走
4、,通常采取的方法是红外探测法。红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。处理器就根据是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过3cm。智能小车系统以处理器为核心, 为了使智能小车能够快速行驶,处理器必须把路径的迅速判断、相应的转向电机控制以及直流驱动电机的控制精密地结合在一起。如果传感器部分的数据没有正确地采集和识别,转向电机控制的失当,都
5、会造成模型车严重抖动甚至偏离赛道;如果直流电机的驱动控制效果不好,也会造成直线路段速度上不去,弯曲路段入弯速度过快等问题。其系统结构如所Error! Reference source not found.示。本次红外探测采用的是反射式探测。电源板电机驱动STC89C51单片机红外传感图 2.1 系统结构图 89C51处理器通过引脚读出超声波信号管脚89C51处理器向红外线传感器供5V电压,通过采集其高低电平可以控制小车的转弯。89C51处理器通过DATA引脚向键盘显示板发送要显示的数据,还可以通过KEY引脚读取键盘的按键,实现相应的功能。第3章 系统硬件设计3.1 控制器的选择本次设计采用的是
6、89C51单片机。3.1.1 概述 STC89C51是一款由美国NXP半导体公司提供的增强型89C51微控制器,包括16KB Flash程序存储器和1KB数据RAM,且功能上完全覆盖标准89C51单片机系列3.1.2 STC89C51 开发工具特性1.89C51内核,5V工作电压,操作频率040MHZ;2.16KB片内Flash存储器,1KB片内SRAM;3.SPI串行通信接口和增强型UART;4.PCA(可编程计数器列阵),具有PWM和捕获、比较功能;5.4个8位I/O口,含有三个高电流P1口(每个I/O口的电流为16mA);6.8个中断源,4个中断优先级,3个16位定时器/计数器和可编程看
7、门狗定时器(WDT);7.2个DPTR寄存器;3.2 硬件电路设计本次项目采用的电路板从画电路原理图开始,到PCB板的布线以及电路板的焊接与检测一系列工作都是自己在大一下学期课程实践期间制作的。3.2.1 系统电源电路交流电经过全波电路在经过电容滤波,在经过稳压电源芯片做成稳压电路,输出电压5V、7.2V的直流电源。其电源电路原理图如图3.2所示。图 3.2 系统电源电路原理图图3.3 硬件电路1图3.4 硬件电路图2小车的驱动电机的供电电压为7.2V,经过电容滤波后接7805进行稳压,稳压输出5V的电压。提供单片机所需5V电压。3.2.2 电机驱动模块1. 驱动实现与原理本项目驱动两路直流电
8、机,实现电机的正反转与测速和遥控。输入输出逻辑表真值表3.2。表 3.1 L298N输入输出逻辑真值表通道1通道2输入输出控制电机1输入输出控制电机2EnAIn1In2OUT1OUT2转向EnBIn3In4OUT3OUT4转向10000停止10000停止0101反传0101反传1010正转1010正转1100停止1111停止0XX00停止0XX00停止其中“0”为低电平;“1” 为高电平;“X” 为任何状态。图3.5驱动原理图红外线检测电路红外对管电路原理其实很简单,就是利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发
9、生漫反射,反射光被装在小车上的接收管接收,Cortex-M0内核采集到的电压就是高电平;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光,然后89C51内核采集到的电压就是低电平。其基本原理图如图3.6所示。图3.6 红外线检测电路原理图鉴于本项目设计需实现的功能比较简单,故只要两路红外线检测电路即可,分别位于小车中心轴的两测即可。3.3 附加功能3.3.1 蓝牙模块蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。图3.6 蓝牙模块作为取代数据电缆的短距离无线通信技术,蓝牙支持点对点以及点对多点的通信,以无线方式将家庭或办公室中的各种
10、数据和语音设备连成一个微微网(Piconet),几个微微网还可以进一步实现互联,形成一个(scatternet),从而在这些连接设备之间实现快捷而方便的通信。本文介绍蓝牙接口在嵌入式OMAP5910上的实现,DSP对模拟信号进行采样,并对A/D变换后的进行处理,通过蓝牙接口传输到接收端,同样,DSP对蓝牙接收到的数字信号进行D/A变换,成为。蓝牙信号的收发采用蓝牙模块实现。此蓝牙模块是公司最近推出的遵循蓝牙V1.1标准的无线信号收发芯片,主要特性有:具有片内数字无线处理器DRP(DigitalRadioProcessor)、数控振荡器,片内射频收发开关切换,内置ARM7等。接收信号时,收发开关
11、置为收状态,射频信号从天线接收后,经过蓝牙收发器直接传输到基带信号处理器。基带信号处理包括下变频和采样,采用零中频结构。数字信号存储在RAM(容量为32KB)中,供ARM7处理器调用和处理,ARM7将处理后的数据从编码接口输出到其他设备,信号发过程是信号收的逆过程,此外,还包括时钟和电源管理模块以及多个通用I/O口,供不同的外设使用。的主机接口可以提供的通用串口,可以方便地和PC机的RS232通信,也可以和DSP的缓冲串口通信。3.3.2 蓝牙小车1)利用单片机和安卓操作系统的智能手机编制主控界面;2)蓝牙手机与车载的蓝牙装备配对,建立无线通信单,片机的RX 和TX接蓝牙模块,用于实现十米范围
12、内遥控小车;3)自制驱动电机电路,STC89C51的P03接L298N的IN14,控制小车的转向;P2的0和1口接L298N的ENA和ENB,通过控制使能端实现小车轮子的转速控制,实现小车转弯。由于单片机STC89C51没有直接输出的PWM信号,所以利用单片机的两个定时器输出一定周期内的高低电平给L298N控制小车的转速。第4章 系统软件设计4.1 编译环境Keil集成开发环境(又称Keil IDE)是广州致远电子有限公司开发的一个微处理器软件开发平台,是一款具有强大内置编辑器的多内核编译调试环境,支持8051、ARM、AVR等多种微控制器,可以完成从工程建立和管理,编译,链接,目标代码的生成
13、,到软件仿真,硬件仿真(挂接TKS系列仿真器等硬件)等完整的开发流程。Keil集成开发环境包括工程管理器、代码编辑器、编译工具链、源码级调试器和外部工具等。4.2 模块的驱动4.2.1 红外线传感器模块红外线模块只要M0处理器向其供5V电压就能工作,然后通过引脚采集其电平高低就可以根据不同情况做出相应的处理。其具体程序控制见程序清单4.1.程序清单 4.1读取红外传感器的高低电平void Track(void) if(IN1=0&IN2=0)|(IN1=1&IN2=1) Forward(); /调用前进函数 if(IN1=1&IN2=0) Lift(); /调用左转函数 if(IN1=0&IN
14、2=1) Right(); /调用右转函数 4.2.2 电机模块的驱动首先,通过设置L298N芯片的输入方向RIGHT_FANZHUAN,RIGHT_ZHENGZHUAN,RIGHT_STOP,LEFT_ZHENGZHUAN,LEFT_FANZHUAN,LEFT_STOP,从而控制电机的正反转。详见程序清单4.3.程序清单 4.3直流电机驱动与路径识别void Forward() /电机前进 PWM1=1; PWM2=1;void Lift() /电机左转 PWM1=0; PWM2=1;void Right() /电机右转 PWM1=1; PWM2=0 ;void Track(void) if
15、(IN1=0&IN2=0)|(IN1=1&IN2=1) Forward(); /调用前进函数 if(IN1=1&IN2=0) Lift(); /调用左转函数 if(IN1=0&IN2=1) Right(); /调用右转函数 前轮为方向轮,只有在需要转弯的时候才需要后边电机驱动其左右转动,在常态下则由后轮的推力使前轮向前转动。具体实现是通过控制前面产生的两路PWM波的占空比和L298N芯片的In1、In2的方向来实现小车的前进寻迹与后退寻迹,其程序流程图详见图4.1所示。开始读取传感器是否两边都遇到黑线停止是否左遇到且右没遇到是否右遇到且左没遇到左转弯右转弯直行YNYYNN图 4.1直流电机控制
16、流程图根据图4.1可以看到程序一开始就进行读取红外线传感器,如果左右两边都遇到黑线则停止前进;如果左边遇到黑线而且右边没有遇到黑线,小车则左转;如果右边遇到黑线而且左边没有遇到黑线,小车则右转;如果两边都没有遇到黑线小车则直行。4.2.3按键模块按键模块处理流程图如图4.2所示。将预备发送显示的整数的每一位依次存放于一个数组单元发送时间是否到达等待发送时间将存储好的数据发送到键盘显示板上显示查询等待按键按下是否有键按下修改相关程序或数据信息执行程序NYYYN图 4.2 按键处理程序流程图把89V81RB2的P3.5引脚设置为检测引脚,设置为输入,进行扫描键盘。使用变量i作为位码设置变量,由0至
17、7依次循环,例如当按下5号键的时候,当i变成5的时候,会在5号线上出现低电平,p3.5上出现低电平,当89V81RB2上边检测到低电平的时候,将变量i的值赋值给按键号标志变量whichkeydown,当按键松开后,对whichkeydown的值进行处理,也就是相当于对按键的事件进行了处理,处理完成后,将whichkeydown的值赋值为8,说明没有按键按下。按键要定时检测按键是否按键,实时处理即可。这里使用的是前面设置的16位定时器0的定时2.5ms进行检测。其具体详见程序清单4.7程序清单 4.2.5按键检测void Key_Proc(void)uint32 key;if(有按键) /有按键
18、DelayNS(30); /延时去抖if(按键有效0) /按键有效读取按键值 while() /等待释键;switch(key)case按键1:; /按键1处理break;case按键2:; /按键2处理break;case按键3:; /按键3处理break; 第5章 系统调试分析5.1 系统设计中的注意事项5.1.1 外部因素外部因素主要有环境光线、赛道材质等因素。以采用光电寻迹方案的智能车为例,如果接收的信号中有很多噪声成分,或者黑白区分不清晰,就很难识别路线,从而对后续的控制过程造成很大影响。因此,合理的传感器离地间隙和反射角度、较好的滤波电路设计都是需要考虑的。5.1.2 内部因素(1
19、) 重量因素 整车质量的增加,对系统动力性有较大影响。因此,除了智能车工作必须的电路之外,应尽可能减少车重。即使是必备部件,可应该采用轻量化的设计。比如为了测量模型车的速度,需要在驱动轮上加装转速传感器,一般购买的电机编码器重量都较大,有的队伍就利用鼠标上的光电电路设计制作了一个轻量化的转速传感器,从而大大减小了重量。 (2) 过度转向的避免 由于是后轮驱动,在弯曲的路线上加速可能会出现过度转向现象,因此在车辆弯道行驶时需要小心控制车辆的转向速度。(3) 传感器的影响刚开始的时候,我的传感器装的比较高,这样就不能很好的感应到路线,以至于出现乱跑的现象。如果在以后的设计中需要的话,可以采用激光传
20、感器进行探测,这样就会更精准的寻迹。5.2 硬软件总体调试硬件、软件独立调试都有效果之后,下一步就是硬软件总体调试了,在硬软件总体调试之前,应现把各个跳线接后,然后在用贴有黑胶带的白纸来回在红外线发射接收管左右移动,看小车的电机转速是否会发生变化,如果用贴有黑胶带的白纸来回在各个红外线发射接收管左右移动时,电机的转速都会发生改变,则说明总体调试初步有效,最后让小车在赛道上进行行走,在初次调试的时候,小车的速度不能太大。第6章 结束语历经四五天的课余时间,终于把本次嵌入式课程设计完成了,从资料的搜索到最终的调试,在整个课程过程中,感觉自己学到了许多东西,忽然间才明白,原来看起来很难的东西,其实只
21、要努力去做,其实并没有什么。很多时候,真正阻止一个人发展的,还是自己的心。因为在很多时候,我们都被自己吓回去了。于是,这个世界,终究是属于那些敢想敢干,并坚持下去的人的。在这之前,我也曾想做好多东西。然而真正下决心并做成的,其实并没有几个。此次的成功,无疑给予了我很大的决心。关于此次的循迹车,从一幅幅电路图到一个个电子元件,再到一个一个成型的模块,最后到组装并成功实现功能。这其中所花费的精力,也有些让自己动容。然而我想,做每个项目本都应该如此吧!一步步的,品味到了辛酸,才会获得甘甜。十分的信心,十足的恒心。只有这样,才能成事。在本课题的设计中,虽然把实物做出来了,而且都符合课题设计的要求并在此
22、基础上还加了些功能,但是相比“飞思卡尔”智能汽车邀请赛上的智能小车还是存在很大的差距,最主要的问题是速度上的问题,本论文设计的智能小车的行走的速度不能太快,否则会出现寻迹不准确。还有一个问题就是红外线接收头之间存在干扰问题。由于时间的问题,没能用PWM进行调速,这实在是一大遗憾。如果时间允许的话,采用PID精准算法来控制电机的转速。我想,这才算是一个真正的智能的小车吧。一个实验项目的成功,需要的是信心,敢于探索,不屈不挠才会获得成功。真正的智能,我相信,还在不久之后,会在我们的制作之下,在大家面前展现。参考文献1 贾伯年 , 俞朴 , 宋爱国 . 传感器技术(第3版), 东南大学出版社,200
23、7 2 成立 ,杨建宁. 模拟电子技术, 东南大学出版社,2007 3 曾喆昭 . 信号与线性系统, 清华大学出版社,2007 3 成立 , 王振宇 . 数字电子技术(第2版), 机械工业出版社,2010 5 许立梓 ,陈玮 ,何小敏 ,高明琴 . 微型计算机原理及应用 M . 北京:机械工业出版社 ,2011 4 张荣标 微型计算机原理与接口技术 M . 北京: 机械工业出版社 , 2005 5 周立功等. 项目驱动-单片机应用设计基础.北京:北京航空航天大学出版社,20046 周航慈. 单片机程序设计基础. 北京:北京航空航天大学出版社,2003 7 George Lee,Karina N
24、g,Edmond Kwang.Design of ring oscillator based voltage controlled oscillator. Project Final ReportR. 2005 5 T. C. Weigandt,B. Kim,and P. R. Gray.Analysis of Timing Jitter in CMOS Ring Oscillators. IEEE International Symposium on Circuits and Systems. 19948Jonathan Zdziarski ,Hacking and Securing App
25、lications: Stealing Data, Hijacking Software, and How to Prevent It,2012:4329Mourad Debbabi, Mohamed Saleh, Chamseddine Talhi and Sami Zhioua Embedded Java Security: Security for Mobile Devices,2010:221-22310Stephen Arolagon,Clark and David Thiel Mobile Application Security,2012:157-161附 录一、英文原文Appl
26、ication FundamentalsAndroid applications are written in the Java programming language. The compiled Java code along with any data and resource files required by the application is bundled by the aapt tool into an Android package, an archive file marked by an .apk suffix. This file is the vehicle for
27、 distributing the application and installing it on mobile devices; its the file users download to their devices. All the code in a single .apk file is considered to be one application.In many ways, each Android application lives in its own world:1. By default, every application runs in its own Linux
28、 process. Android starts the process when any of the applications code needs to be executed, and shuts down the process when its no longer needed and system resources are required by other applications.2. Each process has its own virtual machine (VM), so application code runs in isolation from the c
29、ode of all other applications.3. By default, each application is assigned a unique Linux user ID. Permissions are set so that the applications files are visible only to that user and only to the application itself although there are ways to export them to other applications as well.Its possible to a
30、rrange for two applications to share the same user ID, in which case they will be able to see each others files. To conserve system resources, applications with the same ID can also arrange to run in the same Linux process, sharing the same VM.Application ComponentsA central feature of Android is th
31、at one application can make use of elements of other applications (provided those applications permit it). For example, if your application needs to display a scrolling list of images and another application has developed a suitable scroller and made it available to others, you can call upon that sc
32、roller to do the work, rather than develop your own. Your application doesnt incorporate the code of the other application or link to it. Rather, it simply starts up that piece of the other application when the need arises.For this to work, the system must be able to start an application process whe
33、n any part of it is needed, and instantiate the Java objects for that part. Therefore, unlike applications on most other systems, Android applications dont have a single entry point for everything in the application (no main() function, for example). Rather, they have essential components that the s
34、ystem can instantiate and run as needed. There are four types of components:ActivitiesAn activity presents a visual user interface for one focused endeavor the user can undertake. For example, an activity might present a list of menu items users can choose from or it might display photographs along
35、with their captions. A text messaging application might have one activity that shows a list of contacts to send messages to, a second activity to write the message to the chosen contact, and other activities to review old messages or change settings. Though they work together to form a cohesive user
36、 interface, each activity is independent of the others. Each one is implemented as a subclass of the Activity base class.An application might consist of just one activity or, like the text messaging application just mentioned, it may contain several. What the activities are, and how many there are d
37、epends, of course, on the application and its design. Typically, one of the activities is marked as the first one that should be presented to the user when the application is launched. Moving from one activity to another is accomplished by having the current activity start the next one.Each activity
38、 is given a default window to draw in. Typically, the window fills the screen, but it might be smaller than the screen and float on top of other windows. An activity can also make use of additional windows for example, a pop-up dialog that calls for a user response in the midst of the activity, or a
39、 window that presents users with vital information when they select a particular item on-screen.The visual content of the window is provided by a hierarchy of views objects derived from the base View class. Each view controls a particular rectangular space within the window. Parent views contain and organize the layout of their children. Leaf views (those at the bottom of the hierarchy) draw in the rectangles they control and respond to user actions directed at that space. Thus, views are where the activitys interaction with the user takes place.专心-专注-专业
限制150内