基于ARM的无线遥控和激光循迹小车论文.docx
《基于ARM的无线遥控和激光循迹小车论文.docx》由会员分享,可在线阅读,更多相关《基于ARM的无线遥控和激光循迹小车论文.docx(43页珍藏版)》请在冰点文库上搜索。
基于ARM的无线遥控和激光循迹小车论文
江西理工大学
课程设计
题目:
基于ARM的无线遥控及激光寻迹小车设计
学院:
机电工程学院
专业:
自动化
班级:
3+1创新教育实验班班
学生:
朱兆祺、邓云
指导教师:
王祖麟职称:
教授
指导教师:
温如春职称:
副教授
目录
第1章开题报告1
1.1课程设计概述1
1.2课程设计小车要求1
1.3课程设计安排1
第2章无线遥控&自动寻迹小车硬件设计2
2.1主控芯片及接口电路2
2.1.1ARM处理器系列2
2.1.2ARM7TDMI处理器3
2.1.3LPC21383
2.1.4LPC2138最小系统4
2.2基于ARM2103遥控器的硬件设计7
2.3基于ARM2103无线遥控接收信号8
2.4基于ARM2138核心控制平台8
2.5H桥控制直流电机8
2.6激光传感器9
2.7nRF2401无线电传感器10
2.8金属探测器LJ12A3-4-Z/BX传感器12
第3章无线遥控&自动寻迹小车软件设计13
3.1基于ARM2103无线电发送模块程序的调试13
3.2基于ARM2103无线电接收模块程序的调试14
3.3通过ARM2138接收ARM2103信号控制小车无线遥控控制16
3.4捕获测速16
3.5数字显示与键盘扫描电路设计20
3.6寻迹程序调试22
3.7无线电&激光寻迹模式选择程序24
第4章调试25
4.1PID控制理论概述25
4.1.1PID控制理论概述25
4.1.2PID控制主程序29
阶段性总结33
参考文献34
致谢35
第1章开题报告
1.1课程设计概述
本个课程设计是基于ARM2103、2138的集无线遥控、激光自动寻迹、扫雷为一体的多功能小车。
在嵌入式高速发展,ARM独占一席的今天,熟练运用ARM对于电科大学生至为重要。
ARM2103实验板2块,主要用于无线电nRF2401的发送和接受;ARM2138实验板1块,主要用于直流电机驱动、寻迹控制等;激光FS2-60传感器4个用于小车寻迹功能使用;金属探测器LJ12A3-4-Z/BX传感器用于金属探测。
1.2课程设计小车要求
由无线电nRF2401、ARM2103控制的遥控器向主体小车发送信息,控制小车的运行。
由无线电nRF2401、ARM2103、ARM2138、激光FS2-60传感器、直流电机、金属探测器LJ12A3-4-Z/BX传感器组合的智能小车接受遥控器信息。
无线遥控模式、自动寻迹模式取决于遥控器的信息。
无线遥控模式的前进、停止、左转、右转也是来源于遥控器的控制;自动寻迹模式的控制依靠FS2-60传感器的信息。
1.3课程设计安排
第17周,硬件外围电路设计
第18周,硬件电路调试
第19周,软件程序逐个调试成功,移植并且完成软件的融合
第20周,小车整体设计修改、完善。
第2章无线遥控&自动寻迹小车硬件设计
2.1主控芯片及接口电路
本次课程设计采用的MUC为LPC2138,LPC2138是以ARM7为内核的微控制器,具有运算频率高,功能强,I/O口丰富等优点,下面简单介绍一下基于ARM7为内核的LPC2138MCU。
首先介绍一下ARM,ARM是AdvancedRISCMachines的缩写。
是微处理器行业的一家知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。
技术具有性能高、成本低和能耗省的特点。
适用于多种领域,比如嵌入控制、消费、教育类多媒体、DSP和移动式应用等。
ARM将其技术授权给世界上许多著名的半导体、软件厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。
利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
ARM不仅是一个公司的名字,也是一种微处理器内核的名字。
ARM微处理器资源丰富,具有很好的通用性,以其高速度,高性能、低价格、低功耗,可以广泛的应用于各个领域。
ARM的嵌入式系统其优良的性能,良好的移植性,广泛应用与各个行业。
可以说,用单片机和DSP实现的系统,ARM都可以实现。
ARM集成了丰富的片内外设资源,利用自身资源不必增加外围器件就可实现控制要求的功能。
同时使得机器人控制板的结构尺寸可以做得更小。
另外,利用ARM处理器设计的车载嵌入式系统还具有非常好的移植性,能够使得技术真正用于生活,这是其他型处理器所不具备的特点。
2.1.1ARM处理器系列
ARM处理器目前包括下面几个系列:
(1)ARM7系列
(2)ARM9系列
(3)ARM9E系列
(4)ARMIOE系列
(5)SecurCore系列
(6)Intel的Xscale系列
(7)Intel的StrongARM系列
其中,ARM7,ARM9,ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。
2.1.2ARM7TDMI处理器
ARM7系列处理器包括以下几种类型的核:
ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。
其中,ARM7TDMI是目前使用最广泛的32位嵌入式RISC处理器。
TDMI的基本含义是:
T:
支持16位压缩指令集Thumb;D:
支持片上DebugM:
内嵌硬件乘法器(Multiplier);I:
嵌入式ICE,支持片上断点和调试点。
ARM7系列微处理器为低功耗的32位RISC处理器,ARM7处理器具有如下的特点:
(1)具有嵌入式ICE-RT逻辑,调试开发方便;
(2)极低的功耗,适合对功耗要求较高的应用,如移动机器人产品;
(3)能够提供0.9MIPS/Mfiz的三级流水线结构;
(4)代码密度高,并兼容16位的Thumb指令;
(5)对操作系统的支持广泛;
(6)指令系统与ARM9,ARM9E和ARM10E系列兼容,便于产品升级;
(7)主频最高可达130MIPS高速的运算处理能力能胜任绝大多数的应用场合。
2.1.3LPC2138
本系统和MCU选用的是LPC2138,它具有如下特点:
(1)16/32位ARM7TDMI-S核,超小LQFP64封装;
(2)8/16/32kB的片内静态RAM和32/64/512kB的片内Flash程序存储器,128位宽度接口/加速器可实现高达60MHz工作频率;
(3)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP),单扇区或整片擦除时间为400ms,256字节行编程时间为1ms;
(4)EmbeddedICE®RT和嵌入式跟踪接口通过片内RealMonitorTM软件对代码进行实时调试和高速跟踪;
(5)1个(LPC2131/2132)或2个(LPC2138)8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us;
(6)1个10位的D/A转换器,可产生不同的模拟输出。
(仅适用于LPC2132/2138);
(7)2个32位定时器/计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗;
(8)实时时钟具有独立的电源和时钟,可在节电模式中极大地降低功耗;
(9)多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口(400kbit/s)、SPITM和具有缓冲作用和数据长度可变功能的SSP;
(10)向量中断控制器可配置优先级和向量地址;
(11)小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压);
(12)多达9个边沿或电平触发的外部中断管脚;
(13)通过片内PLL(100us的设置时间)可实现最大为60MHz的CPU操作频率;
(14)片内晶振频率范围:
1~30MHz;
(15)低功耗模式:
空闲和掉电;
(16)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗;
(17)通过外部中断将处理器从掉电模式中唤醒;
(18)单电源,具有上电复位(POR)和掉电检测(BOD)电路:
CPU操作电压范围:
3.0V~3.6V(3.3V±10﹪),I/O口可承受5V的电压。
2.1.4LPC2138最小系统
嵌入式系统的最小系统主要由以下几个方面组成:
(1)电源
(2)复位电路
(3)系统时钟,一般由晶振提供此时钟
(4)底板
下面以LPC2138为微处理器为中心详细介绍最小系统的组成与设计思路
电源电路
任何电子系统都少不了电源的支持。
电源可以看成是电子系统的心脏。
电源只有给系统的电路提供持续的、稳定的能量,这样电子系统才能正常的工作。
在一个电子系统中电源的好坏直接影响到整个系统的稳定性,并在一定程度上影响整个系统的功耗。
常用的集成稳压芯片有78XX系列和79XX系列。
它们是利用串联负反馈来稳定输出电压的,性能较好。
如图3–所示为本系统的一级电源电路。
图3–3系统电源1
本系统主要靠市电经过变压器降压,桥式整流以及78XX系列和79XX系列芯片稳压供电。
LPC2138芯片供电电源为3.3V,内核供电电源为1.8V,因此系统设计为3.3V应用系统。
电源经78M05稳压至5V,再经过SPXIl17-3.3将电源稳压至3.3V。
当正确连接电源后,LED作为电源指示灯点亮。
其特点为输出电流大,精度高,稳定性高,功耗低。
电路原理图如图3–所示。
图3–4系统电源电路
由于LPC2138对供电系统和AD参考电压等要求比较高,所以得加强滤波电路的设计。
图3–5电源和参考电压滤波电路
复位电路
由于ARM芯片的高速、低功耗和低工作电压导致其噪声容限低,对电源的纹波、瞬态响应性能、时钟源监控和电源监控可靠性等诸多也提供了更高的要求,因此复位电路使用带I2C存储器的电源监控芯片CAT1025JI-30,提高了系统的可靠性。
其电路原理图如图3–所示。
图3–6系统复位电路
系统时钟电路
考虑到串口通信时的波特率能够正确的设定,本系统选用11.0592MHz外部晶振是为了使用PLL和ISP下载功能。
原理图如图3–1所示。
图3–1系统时钟电路
LPC2138的RTC需要独立的时钟源,时钟频率为32.768KHz,电路如图3–所示。
图3–8RTC时钟电路
JTAG调试下载程序接口电路
ARM公司ARM7内核采用了JATG联盟提供的标准20脚JTAG仿真调试接口。
RTCK引脚接一个4.7K下拉电阻,使系统复位后LPC2138内部JTAG接口使能,直接进入JTAG调试。
原理图如图3–所示。
图3–9JTAG接口电路
标准20脚JTAG仿真调试接口的详细定义如表3–1所示。
表3–120-pinJTAGheader管脚定义
管脚
定义
管脚
定义
1
Vref(目标板参考电压,接电源)
11
RTCK
2
Vdd(+3.3V)
12
Vss(Ground)
3
nTRST
13
TDO
管脚
定义
管脚
定义
4
Vss(Ground)
14
Vss(Ground)
5
TDI
15
nRESET(目标板复位信号)
6
Vss(Ground)
16
Vss(Ground)
7
TMS
17
NC(未接)
8
Vss(Ground)
18
Vss(Ground)
9
TCK
19
NC(未接)
10
Vss(Ground)
20
Vss(Ground)
2.2基于ARM2103遥控器的硬件设计
根据软件设计要求,无线电nRF2401传感器和ARM2103实验板引脚连接如下:
CE和P0.1,PWR和P0.3,DR1和P0.5,DATA和P0.7,CLK1和P0.9,CS和P0.11,GND和GND,VCC和3.3V连接。
按键和ARM2103实验板的引脚连接,KEY1—KEY6和P0.16—P0.21依次连接。
KEY1控制小车无线遥控模式前进,KEY2控制小车无线遥控模式停止,KEY3控制小车无线遥控模式左转,KEY4控制小车无线遥控模式右转,KEY5控制小车启动寻迹模式,KEY6控制小车启动无线遥控模式。
2.3基于ARM2103无线遥控接收信号
根据软件设计要求,无线电nRF2401传感器和ARM2103实验板引脚连接如下:
CE和P0.1,PWR和P0.3,DR1和P0.5,DATA和P0.7,CLK1和P0.9,CS和P0.11,GND和GND,VCC和3.3V连接。
ARM2103实验板P0.17和ARM2138实验板P0.21,ARM2103实验板P0.19和ARM2138实验板P0.22,ARM2103实验板P0.21和ARM2138实验板P0.23,ARM2103实验板P0.23和ARM2138实验板P0.24,ARM2103实验板P0.25和ARM2138实验板P0.25,ARM2103实验板P0.27和ARM2138实验板P0.26.以上引脚的连接用于ARM2103实验板接收到信号之后用于控制ARM2138的无线电模块控制和无线遥控模式&寻迹模式的切换使用。
2.4基于ARM2138核心控制平台
ARM2138实验板P0.17—P0.20作为激光FS2—60传感器的信号输入,P0.0、P0.1、P0.8、P0.9作为PWM输出通过H桥控制直流电机的转动。
ARM2138实验板P0.21—P0.26作为接受ARM2103实验板的控制进行无线电遥控模式&寻迹模式的切换和控制。
2.5H桥控制直流电机
L298H桥驱动如下图所示:
引脚1、8、15是接地,引脚9(Vss)接5V电压,引脚6(EnableA)、引脚11(EnableB)接高点平5V,对应引脚5(Input1)、引脚7(Input2)、引脚10(Input3)、引脚12(Input4)的输出引脚2(Output1)、引脚3(Output2)、引脚13(Output3)、引脚14(Output4)。
剩下引脚4(Vs),这个引脚的外加电压根据其一H桥的耐压范围,其二你所要加给H桥的电压,这个电压将决定驱动电机转速的大小。
引脚5(Input1)、引脚7(Input2)输入PWM控制小车左电机的转速,当X=Input1-Input2>0时,左电机正向转动,并且X越大,正向转速越大;
X=Input1-Input2<0时,左电机反向转动,并且X越大,反向转速越大;
X=Input1-Input2=0时,左电机停止。
Y=Input3-Input4>0时,右电机正向转动,并且Y越大,正向转速越大;
Y=Input3-Input4<0时,右电机反向转动,并且Y越大,反向转速越大;
Y=Input3-Input4=0时,右电机停止。
、
通过PWM的输入控制左右电机的转动,从而控制小车的行走。
图2-1H桥控制电机示意图
2.6激光传感器
本课程设计运用的寻迹传感器是FS2—60激光传感器。
图2-2FS2—60示意图
图2-3FS2—60激光传感器规格图
图2-4FS2—60外部电路连接图
FS2—60激光传感器的棕色线路连接5V电压正极,蓝色线路连接GND。
黑色线路为信号输出。
为了保护FS2—60激光传感器,因此外加电压为5V。
2.7nRF2401无线电传感器
nRF2401是单片射频收发芯片,工作于2.4~2.5GHzISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。
芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。
其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。
nRF2401有工作模式有四种:
收发模式、配置模式、空闲模式和关机模式。
nRF2401的工作模式由PWR_UP、CE、TX_EN和CS三个引脚决定。
图2—5nRF无线电传感器
在本课程设计中,只用了一个频道传输。
无线电nRF2401传感器和ARM2103实验板引脚连接如下:
CE和P0.1,PWR和P0.3,DR1和P0.5,DATA和P0.7,CLK1和P0.9,CS和P0.11,GND和GND,VCC和3.3V连接。
2.8金属探测器LJ12A3-4-Z/BX传感器
图2—6LJ12A3-4-Z/BX
这个传感器和激光传感器FS2_60有点相似,棕色线接5V正极,蓝色线接GND,黑色线为信号线输出。
当探测到金属块时,输出信号为低电平;否则为高电平。
第3章无线遥控&自动寻迹小车软件设计
3.1基于ARM2103无线电发送模块程序的调试
#include"config.h"
#include"nRF2410.h"
#include"nRF2410Conf.h"
//====================================================================
//功能描述:
nRF2401无线模组配套演示程序发送端程序,
//运行程序后,按下KEY1—KEY6发送信号量
//=====================================================================//按键的宏定义
#defineKEY1(1<<16)
#defineKEY2(1<<17)
#defineKEY3(1<<18)
#defineKEY4(1<<19)
#defineKEY5(1<<20)
#defineKEY6(1<<21)
//接收端地址:
0000000001
INT8UAddress[5]={0x00,0x00,0x00,0x00,0x01};
/*************************************************************************
**函数名称:
main()主函数
**函数功能:
按下KEY1—KEY6,发送信号
**入口参数:
无
**出口参数:
无
***************************************************************************/
intmain()
{
nRF2401Initial();//初始化nRF2401A
nRF2401Mode
(1);//设置nRF2401A工作方式:
发送
nRF2401SetAddress(Address,5);//设置接收端地址0000000001
while
(1)
{
if((IO0PIN&KEY1)==0)
{
nRF2401SendByte(0x01);//发送键号"1"
DelayUs(1000000);
}
if((IO0PIN&KEY2)==0)
{
nRF2401SendByte(0x02);//发送键号"2"
DelayUs(1000000);
}
if((IO0PIN&KEY3)==0)
{
nRF2401SendByte(0x03);//发送键号"3"
DelayUs(1000000);
}
if((IO0PIN&KEY4)==0)
{
nRF2401SendByte(0x04);//发送键号"4"
DelayUs(1000000);
}
if((IO0PIN&KEY5)==0)
{
nRF2401SendByte(0x05);//发送键号"5"
DelayUs(1000000);
}
if((IO0PIN&KEY6)==0)
{
nRF2401SendByte(0x06);//发送键号"6"
DelayUs(1000000);
}
}
return0;
}
/*********************************************************************************************************
**EndOfFile
********************************************************************************************************/
3.2基于ARM2103无线电接收模块程序的调试
nRF2401Initial();//nRF2401A初始化
nRF2401Mode(0);//设置nRF2401A工作方式:
接收
PINSEL1&=~(0X33333333<<2);
IO0DIR|=(0X01<<17)|(0X01<<19)|(0X01<<21)|(0X01<<23);
IO0DIR|=(0X01<<25)|(0X01<<27)|(0X01<<29)|(0X01<<31);
IO0CLR=(0X01<<17)|(0X01<<19)|(0X01<<21)|(0X01<<23);
IO0CLR=(0X01<<25)|(0X01<<27)|(0X01<<29)|(0X01<<31);
if((nRF2401RxStatus())==1)//nRF2401A有数据请求
{
nRF2401ReceiveByte(RxBuf);//接收数据
switch(RxBuf[0])
{
case0x01:
IO0SET=(0x01<<17);
DelayUs(10000000/3);
break;
case0x02:
IO0SET=(0x01<<19);
DelayUs(10000000/3);
break;
case0x03:
IO0SET=(0x01<<21);
DelayUs(10000000/3);
break;
case0x04:
IO0SET=(0x01<<23);
DelayUs(10000000/3);
break;
case0x05:
IO0SET=(0x01<<25);
DelayUs(10000000/3);
break;
case0x06:
IO0CLR=(0x0