基于M0的智能寻迹小车.docx

上传人:b****2 文档编号:24337173 上传时间:2023-05-26 格式:DOCX 页数:28 大小:929.73KB
下载 相关 举报
基于M0的智能寻迹小车.docx_第1页
第1页 / 共28页
基于M0的智能寻迹小车.docx_第2页
第2页 / 共28页
基于M0的智能寻迹小车.docx_第3页
第3页 / 共28页
基于M0的智能寻迹小车.docx_第4页
第4页 / 共28页
基于M0的智能寻迹小车.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于M0的智能寻迹小车.docx

《基于M0的智能寻迹小车.docx》由会员分享,可在线阅读,更多相关《基于M0的智能寻迹小车.docx(28页珍藏版)》请在冰豆网上搜索。

基于M0的智能寻迹小车.docx

基于M0的智能寻迹小车

江西理工大学

嵌入式课程设计设计报告

 

题目:

基于Cortex-M0智能寻迹小车

 

学院:

机电工程学院

专业:

自动化

班级:

082

学生:

谭先锋

学号:

37

指导教师:

王祖麟职称:

教授

指导教师:

温如春职称:

副教授

 

 

目录

第1章绪论1

1.1引言1

1.2课题的来源及现状1

1.2.1课题的来源1

1.2.2智能汽车国外发展情况1

1.2.3智能汽车国内发展情况1

1.3本论文研究的内容2

第2章系统总体设计3

2.1小车的机械特性3

2.2智能小车寻迹基本原理3

第3章系统硬件设计5

3.1控制器的选择5

3.1.1概述5

3.1.2TinyM0开发工具特点5

3.2硬件电路设计6

3.2.1系统电源电路6

3.2.2电机驱动模块7

3.2.3光电编码器9

3.2.4红外线检测电路10

3.2.5键盘显示设计10

第4章系统软件设计12

4.1编译环境12

4.2模块的驱动12

4.2.1红外线传感器模块12

4.2.2M0脉宽调制(PWM)概述12

4.2.3电机模块的驱动13

4.2.4转速捕获15

4.2.5键盘显示模块16

4.2.6按键模块17

第5章系统调试分析19

5.1系统设计中的注意事项19

5.1.1外部因素19

5.1.2内部因素19

5.2硬软件总体调试19

第6章结束语21

致谢22

参考文献23

附录Ⅰ系统电路图24

第1章绪论

1.1引言

我们所处的这个时代是信息革命的时代,各种新技术、新思想层出不穷,纵观世界范围内智能汽车技术的发展,每一次新的进步无不是受新技术新思想的推动。

随着汽车工业的迅速发展,传统的汽车的发展逐渐趋于饱和。

伴随着电子技术和嵌入式技术的迅猛发展,这使得汽车日渐走向智能化。

智能汽车由原先的驾驶更加简单更加安全更加舒适,逐渐的向智能驾驶系统方向发展。

智能驾驶系统相当于智能机器人,能代替人驾驶汽车。

它主要是通过安装在前后保险杠及两侧的红外线摄像机,对汽车前后左右一定区域进行不停地扫描和监视。

计算机、电子地图和光化学传感器等对红外线摄像机传来的信号进行分析计算,并根据道路交通信息管理系统传来的交通信息,代替人的大脑发出指令,指挥执行系统操作汽车。

1.2课题的来源及现状

1.2.1课题的来源

汽车的智能化是21世纪汽车产业的核心竞争力之一。

汽车的智能化是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技。

1.2.2智能汽车国外发展情况

从20世纪70年代开始,美国、英国、德国等发达国家开始进行无人驾驶汽车的研究,目前在可行性和实用化方面都取得了突破性的进展。

在无人驾驶技术研究方面位于世界前列的德国汉堡Ibeo公司研制的无人驾驶汽车,2007年4月11日在英国伦敦科学博物馆与公众见面。

这辆无人驾驶智能汽车经德国大众汽车公司生产的帕萨特2.0改装而成,外表看来与普通家庭汽车并无差别,但却可以在错综复杂的城市公路系统中无人驾驶。

1.2.3智能汽车国内发展情况

目前日本、欧美已有企业取得实用化成果。

与国外相比,国内在智能车辆方面的研究起步较晚,规模较小,开展这方面研究工作的单位主要是一些大学和研究所,如国防科技大学、清华大学、吉林大学、北京理工大学、长安大学、沈阳自动化所等。

我国从20世纪80年代开始进行无人驾驶汽车的研究,国防科技大学在1992年成功研制出我国第一辆真正意义上的无人驾驶汽车。

先后研制出四代无人驾驶汽车。

第四代全自主无人驾驶汽车于2000年6月在长沙市绕城高速公路上进行了全自主无人驾驶试验,试验最高时速达到75.6Km/h。

在2004年10月12日的第六届高交会上,红旗无人驾驶汽车就引起了极大的轰动。

它在高速公路上最高稳定无人驾驶速度为130公里/小时;峰值无人驾驶速度为170公里/小时。

并同时具备安全超车和系统小型化两个主要指标。

为如此,他们把它称为“中国汽车界的神舟五号”。

2005年,首辆城市无人驾驶汽车在上海交通大学研制成功,该车有望于两年之内率先在上海世纪公园进行示范运营,并在2010年世博会上一展身手。

到时游客只需在公园的入口处按下一个按钮,一辆没有司机的四座敞篷汽车就会从远处开过来缓缓停下,然后搭载着乘客前往他们想去的景点。

1.3本论文研究的内容

本论文是以飞思卡尔智能车大赛的比赛规则为参考,主要是研究3轮小车的路径识别及其控制算法。

第2章系统总体设计

2.1小车的机械特性

小车采用的是一辆三轮车车模。

后轮控件前进或转弯,前轮根据后轮驱动左右摆即可以实现左右转。

这种车模控制简单。

小车可通过PWM控制后轮电机转动的速度来控制前轮电机的转动幅度从而控制小车的转弯幅度,实现小车的前进与转弯操作。

2.2智能小车寻迹基本原理

探测路面黑线的基本原理:

光线照射到路面并反射,由于黑线和白纸对光的反射系数不同,可以根据接收到的反射光强弱来判断是否是黑线。

利用这个原理,可以控制小车行走的路迹。

这里的循迹是指小车在白色地板上循黑线行走,通常采取的方法是红外探测法。

红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。

处理器就根据是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。

红外探测器探测距离有限,一般最大不应超过3cm。

智能小车系统以处理器为核心,为了使智能小车能够快速行驶,处理器必须把路径的迅速判断、相应的转向电机控制以及直流驱动电机的控制精密地结合在一起。

如果传感器部分的数据没有正确地采集和识别,转向电机控制的失当,都会造成模型车严重抖动甚至偏离赛道;如果直流电机的驱动控制效果不好,也会造成直线路段速度上不去,弯曲路段入弯速度过快等问题。

其系统结构如所图2.2示。

图2.2系统结构图

M0核处理器根据控制PWM波的占空比来驱动直流电机的转动,采集直流电机上光码盘的电平高低可以计算出直流电机的转速。

M0处理器向红外线传感器供5V电压,通过采集其高低电平可以控制小车的转弯。

M0处理器通过DATA引脚向键盘显示板发送要显示的数据,还可以通过KEY引脚读取键盘的按键,实现相应的功能。

第3章系统硬件设计

3.1控制器的选择

本设计核心微控制器采用的NXP公司最新推出的LPC1100系列Cortex-M0内核芯片。

3.1.1概述

TinyM0是广州致远电子有限公司为企业用户和高校师生设计的一款开发工具。

LPC1100系列微控制器采用了ARM公司最新发布的Cortex-M0内核,工作频率高达50MHz,功耗低至150μA/MHz,性能卓越、应用简单,更突出的是,它能够显著降低所有8/16位应用的代码长度,并且具有极低的市场定价,其价值和易用性比现有的8/16位微控制器更胜一筹,为追求ARM架构的8/16位用户提供了一种全新的32位解决方案。

TinyM0开发板实物如图3.1所示,由TKScopeCK100仿真器和TinyM0核心板两部分组,中间通过邮票孔连接。

TinyM0可以整体使用,也可断开独立使用,应用简单灵活。

图3.1TinyM0开发工具实物图

3.1.2TinyM0开发工具特点

1.板载仿真器

TinyM0板载TKScopeCK100仿真器,支持目前市场上的KEIL、IAR和TKStudio等主流集成开发环境。

2.配套核心板

TinyM0核心板电路为LPC111×芯片的最小系统,硬件支持2.54mm间距的标准排针。

TinyM0核心板断开后,可配套用户自行设计的底板,直接进行产品开发。

3.支持多款芯片

TinyM0核心板全面支持NXPLPC1100和LPC1300系列LQFP48引脚封装的芯片,用户可以根据设计要求随时更换核心控制器。

4.配套资料

TinyM0开发板配套提供《深入浅出Cortex-M0——LPC1100》电子版教材和丰富的实验例程,是工程师学习、开发Cortex-M0微控制器的不二之选。

3.2硬件电路设计

本次项目采用的电路板从画电路原理图开始,到PCB板的布线以及电路板的焊接与检测一系列工作都是自己在暑假制作的。

3.2.1系统电源电路

交流电经过全桥电路在经过电容滤波,在经过稳压电源芯片做成稳压电路,输出电压3.3V、5V、12V的直流电源。

其电源电路原理图如图3.2所示。

图3.2系统电源电路原理图

小车的驱动电机的供电电压为8V,经过电容滤波后接7805进行稳压,稳压输出5V的电压。

输出的电压经滤波后为L298N提供电源。

最后经SPX1117M3–3.3输出3.3V的电压为系统的处理器提供电压。

3.2.2电机驱动模块

1.驱动实现与原理

本项目采用L298N芯片驱动两路直流电机,实现电机的正反转与调速。

2.L298N简介

L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。

用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

其内部结构原理图如图3.3所示。

图3.3L298N内部逻辑框图

各引脚功能描述如表3.1所示:

表3.1L298N引脚功能

引脚

符号

功能

1

SENS1NGA

1,15两脚用来与地之间连接电流检测电阻,将检测量反馈给直流电机控制芯片.可以实现恒流驱动直流电机。

15

SENSINGB

2

OUT1

2,3两脚是全桥式驱动器A的输出端,用来连接负载。

本设计是用来驱动一路直流电机。

3

OUT2

4

Vs

4脚为驱动电源输人端,需与地连接高低频率耦合电容。

5

IN1

5,7两脚为输入标准TTL逻辑电平信号,用来控制全桥式驱动器A的开与关。

7

IN2

6

ENA

6,11两脚为使能控制端,输人标准ITL逻辑电平信号;分别控制驱动器A与B的工作状态。

11

ENB

8

GND

8脚为接地端。

芯片本身散热片与8脚相通。

9

Vss

9脚为逻辑控制部分的电源输入端。

10

IN3

10,12两脚是输入标准TTL逻辑电平信号,用来控制全桥式驱动器B的开与关。

12

IN4

13

OUT3

13,14两脚是全桥式驱动器B的输出端,用来连接负载。

本设计是用来驱动一路直流电机。

14

OUT4

根据图3.3L298N内部结构原理图可得到以下L298N输入输出逻辑表真值表3.2。

表3.2L298N输入输出逻辑真值表

通道1

通道2

输入

输出控制电机1

输入

输出控制电机2

EnA

In1

In2

OUT1

OUT2

转向

EnB

In3

In4

OUT3

OUT4

转向

1

0

0

0

0

停止

1

0

0

0

0

停止

0

1

0

1

反传

0

1

0

1

反传

1

0

1

0

正转

1

0

1

0

正转

1

1

0

0

停止

1

1

1

1

停止

0

X

X

0

0

停止

0

X

X

0

0

停止

其中“0”为低电平;“1”为高电平;“X”为任何状态。

L298N驱动电机原理图如图3.4所示。

8个二极管为续流二极管,防止反电势烧坏芯片。

图3.4L298N驱动电机原理图

3.2.3光电编码器

3.光电编码器原理

光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。

这是目前应用最多的传感器,光电编码器是由光栅盘和光电检测装置组成。

光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。

由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。

4.光电编码器的实现

光电编码器的发光装置一般由发光二极管来实现。

光敏元件则由光敏三极管接上拉电阻来完成。

光电式旋转编码器是转速或转角的检测元件,旋转的编码器与电动机相连,当电机转动时,带动码盘旋转,便发出转速或转角信号。

其示意图如图3.5所示。

图3.5光电编码器的实现示意图

当电机旋转时,码盘随之一起转动。

通过光栅的作用,使得光敏三极管随着光栅透出的光而导通。

接收的频率和转速成正比。

在接收端可以输出一系列的方波,Cortex-M0内核可以通过采集方波的频率从而可以计算出电机的速度。

3.2.4红外线检测电路

红外线检测电路原理其实很简单,就是利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收,Cortex-M0内核采集到的电压就是高电平;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光,然后Cortex-M0内核采集到的电压就是低电平。

其基本原理图如图3.6所示。

图3.6红外线检测电路原理图

鉴于本项目设计需实现的功能比较简单,故只要两路红外线检测电路即可,分别位于小车中心轴的两测即可。

3.2.5键盘显示设计

图3.7为暑假电子工艺实习制作的键盘显示板原理图,主要部件为两个74LS164芯片级联,通过这两个移位芯片进行送到数码管上显示。

其中8个按键分别和8个数码显示管进行连接,检测按键时通过KEY引脚对其进行扫描;CLK为164芯片移位的时钟,每来一次时钟,就进行移位处理;数码显示的数据是DATA引脚输送的数据。

图3.7键盘显示板原理图

其基本原理为:

首先通过DATA引脚发送要显示数据的断码,然后再通过DATA引脚发送显示数据在哪一位(即位码)。

两个74LS164芯片是分开工作的,其中右边164芯片是负责传送断码的,左边164芯片是负责传送位码的。

这也是为什么要先传送断码,后传送位码的原因所在。

检测按键是通过KEY引脚来检测,其中8个按键分别跟8个数码显示管连在一起。

在按键的过程中,通过扫描哪一位为低电平就可以确定是哪个按键按下,然后再通过是哪个按键按下做出相应的功能操作。

第4章系统软件设计

4.1编译环境

TKStudio集成开发环境(又称TKStudioIDE)是广州致远电子有限公司开发的一个微处理器软件开发平台,是一款具有强大内置编辑器的多内核编译调试环境,支持8051、ARM、AVR等多种微控制器,可以完成从工程建立和管理,编译,链接,目标代码的生成,到软件仿真,硬件仿真(挂接TKS系列仿真器等硬件)等完整的开发流程。

TKStudio集成开发环境包括工程管理器、代码编辑器、编译工具链、源码级调试器和外部工具等。

4.2模块的驱动

4.2.1红外线传感器模块

红外线模块只要M0处理器向其供5V电压就能工作,然后通过引脚采集其电平高低就可以根据不同情况做出相应的处理。

其具体程序控制见程序清单4.1.

程序清单4.1读取红外传感器的高低电平

GPIO3DATA&(0X01<<0);//P3.0引脚读取电平。

GPIO0DATA&(0X01<<2);//P0.2引脚读取电平。

4.2.2M0脉宽调制(PWM)概述

M0的脉宽调制器(PWM,PulseWidthModulator)建立在标准定时器0/1之上。

应用可在PWM和匹配功能当中进行选择。

匹配寄存器可用控制单边沿PWM输出和双边沿PWM输出。

PWMMR0控制PWM周期率,另一个匹配寄存器(PWMMR1~PWMMR3)控制PWM边沿的位置。

每个额外的单边沿PWM输出只需要一个匹配寄存器,因为所有PWM输出的重复率速率是相同的。

多个单边沿控制PWM输出在每个PWM周期的开始,当PWMMR0发生匹配时,都有一个上升沿。

使用双边沿控制PWM输出时,指定的匹配寄存器控制输出的上升和下降沿。

这样就产生了正脉冲(当上升沿先于下降沿时)和负脉冲(当下降沿先于上升沿时)。

本项目通过控制32位定时器0产生两路PWM驱动两路电机进行转动。

具体程序操作见程序清单4.2.

程序清单4.2.PWM脉冲产生程序

voidtimer0INit(void)

{

SYSAHBCLKCTRL|=(1<<9);

TMR32B0TCR=0X02;

TMR32B0PWMC=0X03;

TMR32B0MCR=0X02<<6;//设置TMR32B0MR2为匹配周期。

TMR32B0PR=99;//定时器100分频。

TMR32B0MR2=FAHBCLK/CS[0];//设置匹配周期时间。

TMR32B0MR0=TMR32B0MR2*(1000-CS[1])/1000;//设置MAT0.0占空比。

TMR32B0MR1=TMR32B0MR2*(1000-CS[2])/1000;//设置MAT0.1占空比。

TMR32B0TCR=0X01;//启动定时器。

}

引脚描述:

32位定时器0PWM引脚描述如表4.1所示。

表4.1PWM引脚描述

引脚名称

引脚方向

引脚描述

引脚

PWM1

输出

PWM通道1输出

P1.6

PWM2

输出

PWM通道1输出

P1.7

4.2.3电机模块的驱动

首先,通过设置L298N芯片的输入方向RIGHT_FANZHUAN,RIGHT_ZHENGZHUAN,RIGHT_STOP,LEFT_ZHENGZHUAN,LEFT_FANZHUAN,LEFT_STOP,从而控制电机的正反转。

详见程序清单4.3.

程序清单4.3L298N芯片方向宏定义

#defineRIGHT_FANZHUAN(GPIO2DATA&(~(0X01))|0X08)//让右边电机反向转动。

#defineRIGHT_ZHENGZHUAN(GPIO2DATA&(~(0X08))|0X01)//让右边边电机正向转动。

#defineRIGHT_STOP(GPIO2DATA|(0X08)|0X01)//让右边电机停止转动。

#defineLEFT_ZHENGZHUAN(GPIO2DATA&(~(0X04))|0X02)//让左边电机正向转动。

#defineLEFT_FANZHUAN(GPIO2DATA&(~(0X02))|0X04)//让左边电机反向转动。

#defineLEFT_STOP(GPIO2DATA|(0X04)|0X02)//让左边电机停止转动。

前轮为方向轮,只有在需要转弯的时候才需要后边电机驱动其左右转动,在常态下则由后轮的推力使前轮向前转动。

具体实现是通过控制前面产生的两路PWM波的占空比和L298N芯片的In1、In2、In3、In4的方向来实现小车的前进寻迹与后退寻迹,其程序流程图详见图4.1所示。

图4.1直流电机控制流程图

根据图4.1可以看到程序一开始就进行读取红外线传感器,如果左右两边都遇到黑线则停止前进;如果左边遇到黑线而且右边没有遇到黑线,小车则左转;如果右边遇到黑线而且左边没有遇到黑线,小车则右转;如果两边都没有遇到黑线小车则直行。

具体程序控制详见程序清单4.4。

 

程序清单4.4直流电机驱动与路径识别

voidZHENGXIANGTurn(void)

{

if(GPIO3DATA&(0X01<<0)&&GPIO0DATA&(0X01<<2))//若红外传感器两边都碰到黑线则停止。

{

Stop();

}

elseif(GPIO3DATA&(0X01<<0)&&(GPIO0DATA&(0X01<<2)!

=0))//若右边碰到黑线则右转弯。

{

GPIO2DATA=RIGHT_ZHENGZHUAN;

GPIO2DATA=LEFT_FANZHUAN;

CS[1]=1000;

CS[2]=1000;

}

elseif(GPIO0DATA&(0X01<<2))//若红外传感器左边碰到黑线则左转弯。

{

GPIO2DATA=RIGHT_FANZHUAN;

GPIO2DATA=LEFT_ZHENGZHUAN;

CS[1]=1000;

CS[2]=1000;

}

else//若红外传感器两边都没有碰到黑线则直行。

{

GPIO2DATA=RIGHT_ZHENGZHUAN;

GPIO2DATA=LEFT_ZHENGZHUAN;

CS[1]=1000;

CS[2]=1000;

}

timer0INit();

}

4.2.4转速捕获

本项目采用16位定时器1和32位定时器1的捕获功能来实现两直流电机的转速捕获。

由于主轮与后面光码盘扇叶转速的比例是1:

80,而且有两片扇叶。

所以测主轮的转速公式为:

转速=((FAHBCLK/((CAP1_2-CAP1_1)/(N2-1))))*3/8/TMR16B1PR,程序控制详见程序清单4.5.

程序清单4.5直流电机转速的测量

voidtimer1Isr(void)

{

if((TMR16B1IR&0X01)!

=0)//如果到了结账周期则进行转速的计算。

{

TMR16B1CCR=0;

if(CAP0_2>CAP0_1)

{

CS[3]=((FAHBCLK/((CAP0_2-CAP0_1)/(N1-1))))*3/8/100;//进行左边电机的转速捕获计算。

}

H1=0;

N1=0;

CAP0_1=0;

CAP0_2=0;

TMR16B1TC=0;

TMR16B1IR=0X01;

TMR16B1CCR=0X05;

}

else//如果没有到结账周期则进行捕获寄存。

{

if(H1==0)

{

CAP0_1=TMR16B1CR0;

H1=1;

}

else

{

CAP0_2=TMR16B1CR0;

}

N1++;

TMR16B1IR|=0X10;

}

}

4.2.5键盘显示模块

键盘显示用处理器的SPI模块实现,设置键盘显示为从机。

具体初始化详见程序清单4.6所示。

程序清单4.6SPI初始化

voidSSP_Init(void)

{

PRESETCTRL|=0x01;//禁止SPI0复位。

IOCON_SCKLOC=0x02;//P0.6配置为SCK。

SYSAHBCLKCTRL|=(1ul<<11);//打开SPI0外设。

SSP0CLKDIV=0x01;//SSP时钟分频。

SSP0CR0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1