基于蓝牙无线遥控的玩具赛车直流电机控制设计_第1页
基于蓝牙无线遥控的玩具赛车直流电机控制设计_第2页
基于蓝牙无线遥控的玩具赛车直流电机控制设计_第3页
基于蓝牙无线遥控的玩具赛车直流电机控制设计_第4页
基于蓝牙无线遥控的玩具赛车直流电机控制设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计Word课程实践考核报告项目名称:基于蓝牙无线遥控的玩具赛车直流电机控制设计目录一、设计课题分析 11.1设计背景简介 11.2设计方案对比 11.3设计目的及要求 11.2课程设计任务及工作量的要求 1二、方案设计 32.1总体方案设计 32.2KL25选用优势 42.3KL25芯片串行通信与中断 52.3.1异步通信简介 52.3.2UART模块功能概述及编程结构 52.3.3UART驱动构件封装 62.3.4KL25的中断机制 7三、硬件电路设计 93.1KL25硬件最小系统 93.2蓝牙通信模块 123.3电机驱动模块与直流电机 143.4硬件电路总体设计 17四、系统软件设计 184.1软件烧写编译介绍 184.2系统软件流程图 224.3程序清单 22五、实物验证调试 235.1实物制作硬件清单 235.2硬件调试 23六、总结 25七、参考文献 26附录 27附录一:源程序 27附录二:系统硬件原理图 30绪论在日常生活中,常见的玩具赛车绝大部分是由红外遥控控制的,一方面红外遥控器易丢失损坏,对于玩具赛车而言如果红外遥控器损毁,那么玩具赛车也就失去了其价值,采用蓝牙遥控可以极大延长了玩具赛车的使用周期;另一方面由于红外遥控需要干电池当作电源,而且耗电量较高,采用手机蓝牙控制的话可以节能环保。本课题设计是基于蓝牙无线遥控直流电机的控制系统设计,系统主要包括KL25硬件最小系统、bluetooth通信模块、L298N电机驱动模块、直流电机。系统采用KL25芯片对手机蓝牙指令的接收处理,使得直流电机完成相应的操作。预先完成软件仿真,在完成相应的实物制作。经实验表明:本系统具有成本低,兼容性好和节能环保等特点。关键字:遥控;直流电机;蓝牙;环保

毕业设计一、设计课题分析1.1设计背景简介在日常生活中,常见的玩具赛车绝大部分是由红外遥控控制的,一方面红外遥控器易丢失损坏,对于玩具赛车而言如果红外遥控器损毁,那么玩具赛车也就失去了其价值,采用蓝牙遥控可以极大延长了玩具赛车的使用周期;另一方面由于红外遥控需要干电池当作电源,而且耗电量较高,采用手机蓝牙控制的话可以节能环保。1.2设计方案对比本次课程设计的重点在于结合KL25芯片实现对直流电机的正转、反转、停止、调速等功能。直流电机的功能不易于变化,所以可以从输入的控制信号入手加以改变。可选方案有很多,譬如独立按钮控制,红外线控制等。本次选用蓝牙模块与KL25芯片进行串行通信进行无线控制;可以相对与独立按键而言节约KL25芯片的IO口的使用,而且芯片有配置好的串行通信端口,也简化了设计的工作量。1.3设计目的及要求本设计以MKL25Z128VLK4为主控芯片的基于蓝牙无线遥控的直流电机设计,目的是解决一方面红外遥控器易丢失损坏,对于玩具赛车而言如果红外遥控器损毁,那么玩具赛车也就失去了其价值;另一方面由于红外遥控需要干电池当作电源,而且耗电量较高且废旧干电池污染环境的问题。通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。使学生进一步掌握嵌入式系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的嵌入式应用系统。针对课堂重点讲授内容使学生加深对嵌入式硬件原理的理解及提高C语言程序设计的能力,为以后的毕业设计搭建了嵌入式系统应用平台,提高学生的开发创新能力。1.2课程设计任务及工作量的要求每一学生在教师指导下,独立完成一个嵌入式系统设计。工作量如下:(1)进行系统方案总体设计。(2)硬件部分设计。将整个硬件系统划分为若干功能单元电路,画出每个单元电路原理图,绘出整个系统电路原理图。(3)软件部分设计。画出程序流程图,编写系统源程序(有必要的注释)并调试;(4)软硬件联调,完成系统工作调试;在以上工作基础上完成课程设计报告,包括设计任务与要求,总体方案说明,电路原理图与说明,软件流程图和源程序清单,问题分析与解决方案,结论与体会,参考资料等。

二、方案设计2.1总体方案设计方案设计要求基于蓝牙无线遥控的玩具赛车中的直流电机能够实现:正转及其正转加速、反转及其反转加速、电机停止转动。具体的方案设计中要求:手机发送“0”正转,再次发送“0”加速,再发“0”再次加速,一直能加到最快的速度。发送“1”反转,再次发送“1”的效果与正转类似。发送“2”时可以停止转动。配置KL25主控芯片的UART1端口中的RX端口作为接收手机端的指令;配置UART1中的TX作为回馈当前接收指令的端口;配置KL25主控芯片的C1端口为正转控制端口、C2作为反转控制端口。控制速度的实现是由PWM波控制的,发送命令改变占空比即可使得玩具赛车中的直流电机速度得以改变。手机端的控制软件选用现成的蓝牙调试SPP软件,蓝牙模块选用HC-05,在蓝牙的使用之前要对蓝牙相关进行AT指令配置,更改其默认的参数:譬如蓝牙名称、连接初始密码、通信波特率等,本课题设计采用的波特率为9600bps。在设计中要求实现如下控制要求:基于蓝牙所控制的玩具赛车可以实现前进及其前进加速、后退及其后退加速、玩具赛车运动停止。系统框图如下图1:图1系统框图2.2KL25选用优势本次课题选用KL25作为主控芯片的原因及其优势主要有下列几点:2.2.1KinetisL系列MCU有统一的SystickKinetisL系列MCU的内核ARMCoretex-M0+含有的Systick,为基本定时系统提供了便利。(1)一般来说,一个嵌入式系统产品的开发,总要有一个基本定时系统与基本定时中断。若使用RTOS,一定要有一个时钟滴答。(2)Systick处于内核中,基本定时系统在L系列MCU中被统一了,方便了复用与移植。(3)若使用RTOS,时钟滴答使用Systick产生,大大简化了RTOS在L系列MCU中的移植。2.2.2KinetisL系列MCU的引脚分布、配置与GPIOKinetisL系列MCU的引脚分布、配置与GPIO具有鲜明特点,方便应用:(1)各边有电源与地引脚引出,有利于电流平衡,提高稳定性。(2)引脚复用冗余分布,方便了硬件设计,引脚配置模块实现引脚的自定义配置。例如,UART0,可在LQFP封装的三边引脚中任选一个,为硬件布线提供便利。(3)大部分GPIO引脚具有上拉、下拉、不拉、中断使能设置,部分GPIO引脚还可设置成高驱动能力(18mA)输出。2.2.3Flash模块解决了擦写不稳定性问题,擦写期间允许中断KinetisL系列MCU的Flash模块解决了以前Flash模块擦写期间读Flash不稳定问题,可不需要把擦写代码移入RAM区,方便了编程。同时,擦写Flash期间,通过设置,可允许中断,使得Flash存储器可以作为EEPROM使用。这些特点,在以前的MCU及其他一些类似MCU是没有做到的,为实际应用提供了很大便利。2.2.4内置温度传感器及16位A/D内置温度传感器可以作为测定芯片温度使用。16位A/D可设置具有硬件滤波功能,为一些应用提供便利。2.2.5低功耗、时钟源选择、内置时钟源等,为应用提供了更多选择,简化外部电路设计多种时钟源选择、多种低功耗模式、32.768Khz时钟源等,为实际应用提供更多选择。若需掉电的时间仍然运行,可直接使用内部RTC模块(外接电池供电),可省去外接时钟芯片。L系列MCU(M0+内核)可以达到nA级低功耗,是目前业内最低的。2.2.6Kinetis系列选择丰富,为软件复用提供基础E系列面向5V应用、W系列面向传感网应用、V系列面向电机控制、M系列面向仪表(有24位快速A/D)等,若用过其中一种,积累了构件,软件复用变得容易。2.3KL25芯片串行通信与中断2.3.1异步通信简介实现异步串行通信功能的模块称为通用异步收发器(UART),或串行通信接口(SCI)。用正、负电平表示二进制值,不使用零电平,逻辑名称记为“1/0”。下图给出了8位数据、无校验情况的传送格式。图2串行通信数据格式从基本原理角度看,串行通信接口UART的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。图3UART编程模型2.3.2UART模块功能概述及编程结构1)UART模块功能概述①外部引脚MKL25Z128VLK4芯片共有三个串口,分别标记为UART0、UART1、UART2。它们并不是固定在哪几个引脚上,可以通过引脚配置寄存器配置。②基本结构与特点KL25中共有3个UART模块,分别为UART0、UART1和UART2。可编程为8位、9位或10位数据模式,UART1与UART2只支持8位与9位数据模式,UART0支持全部的数据模式。每个UART模块都有13位模数分频器,都可以独立地启用发送器和接收器,分别设置发送器与接收器的极性。UART0支持双边沿采样,而UART1与UART2不支持此功能。2)UART模块编程结构①寄存器地址分析每个模块有其对应的寄存器。②控制寄存器ⅠUARTx控制寄存器2(UARTx_C2)ⅡUARTx控制寄存器1(UARTx_C1)ⅢUART0控制寄存器4(UART0_C4)ⅣUART0控制寄存器5(UART0_C5)③状态寄存器UARTx_S1④波特率寄存器波特率高字节寄存器(UARTx_BDH)波特率低字节寄存器(UARTx_BDL)⑤数据寄存器UARTx_D(x=0~2)2.3.3UART驱动构件封装UART具有初始化、接收和发送三种基本操作。实现构件化编程的UART软件模块应当具有以下几个特点:1)UART模块是最底层的构件,向上提供三种服务,UART模块的初始化、接收单个字节和发送单个字节。向下则直接访问模块寄存器,实现对硬件的直接操作。另外,从实际使用角度出发,它还需要封装接收N个字节和发送N个字节的功能函数。2)UART模块对应1个uart.c和1个uart.h文件。使用UART构件时,只需拷贝这两个文件即可,无需修改。不同芯片之间移植时,才需要修改头文件中与硬件相关的宏定义。3)上层构件或软件在使用该构件时,禁止通过全局变量传递参数,数据传递直接通过函数的形式参数来接收。2.3.4KL25的中断机制1)中断的概念中断是指MCU正常运行程序时,由于MCU内核异常或者MCU各模块发出请求事件,引起MCU停止正在运行的程序,而转去处理异常或执行处理外部事件的程序(又称中断服务程序)这些引起MCU中断的事件称为中断源。KL25的中断源分为两类,一类是内核中断,另一类是非内核中断。内核中断主要是异常中断,也就是说,当出现错误的时候,这些中断会复位芯片或是做出其他处理。非内核中断是指MCU各个模块为中断源引起的中断,又称可屏蔽中断,这类中断可以通过编程控制,开启或关闭该中断。本课题中的通信中断为非内核中断。需要通过软件编程,开启中断接收外部发送的命令。2)KL25的中断服务程序及其“注册”①中断服务程序设计与普通构件函数设计是一样的,这些程序只有在产生中断时才被执行。为了规范编程将各个中断服务程序,放在“isr.c”中断底层驱动构件源文件。②中断服务程序的“注册”中断服务程序的“注册”就是将用户编写好中断服务程序入口地址,添加到中断向量表中。实际是在中断向量表头文件vectors.h中,将宏定义的中断服务函数名替换成用户编写好中断服务程序名。3)ARMCortex-M0+非内核模块中断编程结构1)M0+中断结构及中断过程由模块中断源、中断控制器(NVIC)和M0+内核组成。其中断过程分为二步:①模块中断源向中断控制器(NVIC)发出中断请求信号。②中断控制器判断中断是否被允许,若允许,通过私有外设总线发送给M0+内核,由内核进行中断处理;如果同时有多个中断信号,NVIC根据设定好的优先级进行判断,优先级高的中断首先响应,优先级低的中断挂起,压入堆栈保存;如果优先级完全相同的多个中断源同时请求,则先响应IRQ中断号较小的,其他的被挂起。M0+中断结构原理图:图4M0+中断结构原理图2)NVIC各寄存器简介NVIC向量中断控制寄存器共有12个寄存器,如下面表1所示。表1NVIC内各寄存器简表地址名称描述E000_E100NVIC_ISER中断使能寄存器(W/R)E000_E180NVIC_ICER中断除能寄存器(W/R)E000_E200NVIC_ISPR中断挂起寄存器(W/R)E000_E280NVIC_ICPR中断清除挂起寄存器(W/R)E000_E400-E000_E41CNVIC_IPR0-NVIC_IPR7优先级寄存器3)中断初始化设置步骤①设置模块中断使能位使能模块中断,使模块能够发送中断请求信号。②在中断控制器中设置中断使能寄存器,使该模块对应的使能位置1,允许该中断请求。4)中断初始化示例串口模块中断初始化函数uart_enable_re_int(),包含两个方面的内容,一在控制寄存器UARTx_C2中,将接收中断允许位D5设置成1。另外根据IRQ号,在断控制器NVIC中断使能寄存器(NVIC_ISER),将对应为置1开中串口模块中断。三、硬件电路设计3.1KL25硬件最小系统3.1.1KL25芯片简介基于KL25芯片的实验板实物图如下。图5SD-FSL-KL25-EVB实物图关于KL25实验板的一些说明如表4所示。表2SD-FSL-KL25-EVB资源简表3.1.2KL25硬件最小系统图6KL25硬件最小系统电路电源及其滤波电路,所有的电源引脚必须外接适当的滤波电容抑制高频噪音。去耦是指对电源采取进一步的滤波措施,去除两级间信号通过电源互相干扰的影响。晶振电路的作用是为系统提供基本的时钟信号。晶体振荡电路的两个端口分别连接在KL25处理器的XTAL1和XTAL2两个端口,晶体振荡器标配有8MHz的石英晶振,晶振引脚是经过连接器与微处理连接,可以方便地更换晶振。晶振电路产生时钟信号,是为了保证处理器工作按一定时序进行,晶振电路采用晶体振荡器。Y1为晶体振荡器产生振源,C14、C15是配合Y1工作的电容。复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。复位电路都是比较简单的大都是只有电阻和电容组合就可以办到了,再复杂点就有三极管等配合程序来进行了。SWD接口电路,通过SWD接口可以实现程序下载和调试功能。SWD接口只需两根线,数据输入/输出线SWD_DIO和时钟线SWD_CLK。KL25硬件最小系统引脚包括电源类引脚、复位脚、晶振引脚等。如表2所示。表3KL25硬件最小系统引脚表KL芯片提供服务的引脚也可称为I/O端口资源类引脚。KL25(80引脚LQFP封装)具有61个I/O引脚,如表3所示。表4KL25I/O端口资源类引脚表3.2蓝牙通信模块 图7蓝牙通信模块硬件电路图8蓝牙通信模块实物图(1)蓝牙通信模块参数介绍1.PCB尺寸:37.3mm(长)*15.5mm(宽);2.重量:3.5g;3.输入电压:3.6V--6V,禁止超过7V;4.电源防反接,接反模块不工作;5.引出6个脚:EN/VCC/GND/RXD/TXD/STATE(蓝牙状态引出脚,未连接输出低电平,连接后输出高电平);6.带连接状态指示灯,LED快闪表示没有蓝牙连接;LED慢闪表示进入AT命令模式;7.板载3.3V稳压芯片,输入电压直流3.6V-6V;未配对时,电流约30mA(因LED灯闪烁,电流处于变化状态);配对成功后,电流大约10mA;8.接口电平3.3V,可以直接连接各种单片机(Arduino/51/AVR/PIC/ARM/MSP430等等),5V单片机也可以直接连接。直接连接单片机串口,不能经过MAX232芯片;9.空旷地带有效传输距离10米,超过10米也是可能的,但是不对连接质量做保证;10.配对成功以后,可以作为全双工串口使用。无需了解任何蓝牙协议,但只支持8位数据位、1位停止位、无奇偶校验的通信格式。这也是最常用的通信格式,不支持其它格式;11.按下按键再给蓝牙模块通电可以进入AT模式,设置参数和查询信息;12.可以通过AT命令切换主机和从机模式;13.模块默认波特率为9600、默认配对密码为1234、默认名称为HC-05;14.带透明热缩管保护。(2)蓝牙模块连接方法VCC:接电源正极;GND:接电源负极;RXD:接收端,蓝牙模块接收从其它设备发来的数据;正常情况接其它设备的发送端TXD;TXD:发送端,蓝牙模块发送数据给其它设备;正常情况接其它设备的接收端RXD;EN:使能端,需要进入AT模式时接3.3V 。3.3电机驱动模块与直流电机3.3.1L298N芯片介绍图9L298N芯片引脚图图10L298N芯片实物图L298是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。具体引脚功能如下表表5。表5L298N引脚表引脚符号功能1

SENSING

A

此两端与地连接电流检测电阻,并向驱动芯片反馈检测到的信号15

SENSING

B

2

OUT

1

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

OUT

2

4

Vs

电机驱动电源输入端5

IN

1

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

IN2

6

ENABLE

A

使能控制端.输入标准TTL逻辑电平信号;低电平时全桥式驱动器禁止工作。11

ENABLE

B

8

GND

接地端,芯片本身的散热片与8脚相通9

Vss

逻辑控制部分的电源输人端口10

IN

3

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

IN

4

13

OUT

3

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

OUT

4

3.3.2L298N电机驱动模块介绍图11电机驱动模块硬件电路图12电机驱动模块实物图(1)电机驱动模块参数介绍1、驱动芯片:L298N双H桥直流电机驱动芯片;2、驱动部分端子供电范围 Vs:+5V~+35V;如需要板内取电,则供电范围Vs:+7V~+35V;3.驱动部分峰值电流 Io:2A;4.逻辑部分端子供电范围 Vss:+5V~+7V(可板内取+5V);5.逻辑部分工作电流范围:0~36mA;6.控制信号输入电压范围:低电平:-0.3V≤Vin≤1.5V高电平:2.3V≤Vin≤Vss;7.使能信号输入电压范围:低电平:-0.3≤Vin≤1.5V(控制信号无效)高电平:2.3V≤Vin≤Vss(控制信号有效);8.最大功耗:20W(温度T=75℃时);9.存储温度:-25℃~+130℃;10.驱动板尺寸:55mm*49mm*33m带m(固定铜柱和散热片高度);11.驱动板重量:33g;12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。(2)直流电机驱动原理该驱动板可驱动2路直流电机,使能端 ENA、ENB为高电平时有效,控制方式及直流电机状态表如下所示:表6直流电机状态表ENAIN1IN2直流电机状态0XX停止100制动110正转101反转111制动若要对直流电机进行PWM调速,需设置IN1和IN2,确定电机的转动方向,然后对使能端输出PWM脉冲,即可实现调速。注意当使能信号为0时,电机处于自由停止状态;当使能信号为1,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。3.3.3直流电机介绍图13直流电机实物图电机驱动模块参数介绍微型130小马达:尺寸:20*15*25、轴长:8mm、轴径:2mm;电压:1-6v、参考电流:0.35-0.4A;3v转速:17000-18000转每分钟;直流电机转速与施加电压成正比。直流电机调速的常见方法是施加一个PWM(脉宽调制)脉冲波,其占空比对应于所需速度。PWM信号相对容易产生,这种驱动方式使用比较广泛。3.4硬件电路总体设计系统可由USB端口用电脑或者5V/1A的手机充电器供电,电机驱动模块L298N与蓝牙模块的正极共同使用KL25实验板上的USBDM_+5V供电,负极接KL25实验板上的GND。蓝牙模块的TX、RX、GND分别接KL25开发板上的RX、TX、GND。电机驱动模块的L298N上的IN1、IN2分别连接KL25实验板上的C1、C2;L298N上的OUT1、OUT2分别连接直流电机的正负极。系统总体硬件原理图见附录二。图14整体硬件图四、系统软件设计4.1软件烧写编译介绍4.1.1KDS软件简介KinetisDesignStudio(KDS)为Freescale专为Kinetis家族推出的IDE开发环境,它是基于Eclipse+GNU架构的,也就是说其主体编辑环境使用开源的Eclipse4.3(Kepler)开发平台(这个是类似Codewarrior10.x的),而核心编译器则使用GCC(GNUComplierCollection),调试器使用GDB(GNUDebugger),所以其免费是有原因的。当然飞思卡尔还是在此基础上将自家的Kinetis家族MCU和图形化代码生成工具ProcessorExpert也装了进去,实际上可以算的上是Codewarrior10.x的裁剪版,Codewarrior10.x架构太庞大,它将对飞思卡尔自家所有的处理器的软件支持都包含进去了(包括8位、16位MCU,Coldfire,DSC,部分PowerPC架构的MCU,还有Kinetis),造成了其对PC机资源要求很高,这也是集大成的一个通病。但是KDS由于专为Kinetis打造的,所以是一个轻量级的IDE开发环境。4.1.2程序的导入过程先点击菜单栏File选项,选择import。如图15所示,之后选择select选项下的General中的ExistingProjectsintoWorkspace,如图16所示。图15导入工程第一步图16导入工程第二步再点击browse…选择你需要编写的程序项目工程文件夹,之后点击Finish即可。如图17、图18所示图17导入工程第三步图18导入工程第四步4.1.3程序的编译与烧写先点击工具栏编译按钮,如图19所示,编译无误后,编译完全正确界面如图20所示,之后选择工具栏烧写调试按钮选择DebugConfigurations…,如图21所示。即可进入烧写设置界面。图19编译工程图20编译无误图21烧写程序第一步再先删除已有的烧入选项,如图22所示再双击新建一个,并且选择startup中,取消设置程序断点,如图23所示。再点击Debug烧入即可,如一次不能烧入可以换个USB端口再次试验。如果界面不经意被拖动点击的较为凌乱,可以选择菜单栏中windows中的ResetPerspective…如图24所示。以此恢复初始界面便于操作。 图22烧写程序第二步图23烧写程序第三步图24恢复程序初始界面4.2系统软件流程图系统程序上电进行通信初始化,配置通信波特率、使能串口接收等。主循环仅仅是KL25实验板的蓝灯闪烁。在通信中断程序中,判断发来的命令是0?1?2?还是无关量予以忽略;实现速度的变化主要是改变PWM波的占空比,在定周期的前提下。设置静态变量,对每次来的符合要求的命令,譬如0、1进行计数,在调用PWM波产生函数时可以进行相应的占空比参数改变。以此实现调速功能。图25程序设计流程图4.3程序清单见附录一。五、实物验证调试5.1实物制作硬件清单表7硬件清单序号名称规格数量1KL25开发板SD-FSL-KL25-EVB12电机驱动模块L298N13蓝牙模块HC-0514直流电机微型13015USB数据线16杜邦线若干5.2硬件调试在实物制作调试时,可以用电脑串口调试助手代替蓝牙进行调试验证程序的便捷方法。图26串口调试助手通信界面电机具体转动情况图片无法描述,具体效果由现场答辩体现,在此给出硬件实物图与手机软件通信界面截图图27基于蓝牙无线遥控的玩具赛车直流电机控制设计硬件接线图图28手机软件通信界面截图(左起电机正转与加速、电机停止、电机反转及其信息回馈)六、总结本次设计系统地介绍了基于蓝牙无线遥控的玩具赛车的硬件电路设计以及软件设计。在总体方案设计中以蓝牙模块作为通信载体,用直流电机作为信号输出的执行元件,KL25主控芯片作为主要的控制元器件,并且应用了电机驱动电路。应用KL25的优势减少了硬件的复杂性,通过手机蓝牙与蓝牙接收模块,将手机端的控制信号交给KL25进行运算处理,输出信号交给电机驱动模块借此驱动直流电机的运转。由于蓝牙的普及性与统一性,可以适当解决一方面红外遥控器易丢失损坏,对于玩具赛车而言如果红外遥控器损毁,那么玩具赛车也就失去了其价值;另一方面由于红外遥控需要干电池当作电源,而且耗电量较高且废旧干电池污染环境的问题。本次设计的整个研究与设计过程包括选题、设计以及完善等。首先,在选题方面查阅了很多与题目有关的资料和课题并且制定设计方案,进行设计的总体规划,然后将这些方案落实到设计环节中。其次,在制定的方案基础上运用所学的知识对硬件以及软件进行设计,并用相关软件调试测试。最后,对设计内容进一步修缮,以求达到最佳设计结果。

从本次设计中我更加深刻地认识到理念来源于实际的含义。在和同学以及老师的就相关问题的互相讨论交流中,我认识到自己的很多不足,但在这些不足中我又学到了很多知识,使我的综合应用能力有了很大提高。

七、参考文献[1]王宜怀、张书奎、王林、吴瑾.嵌入式技术基础与实践(第3版)[M].北京:清华大学出版社.2014.[2]曹金华、王宜怀、沈安东.嵌入式技术基础与实践实验指导(第二版)[M].北京:清华大学出版社.2012.[3]Freescale.KL25DataSheet,Rev[DB].2,2014.[4]唐介.电机与拖动[M].北京:高等教育出版社.2010.[5]张刚毅.单片机原理及应用[M].北京:高等教育出版社.2012.

附录附录一:源程序main函数程序#include"includes.h"//包含总头文件intmain(void){ //1.声明主函数使用的变量 uint_32mRuncount;//主循环计数器 //2.关总中断 DISABLE_INTERRUPTS; //3.初始化外设模块 light_init(RUN_LIGHT_BLUE,LIGHT_ON);//蓝灯初始化 light_init(RUN_LIGHT_RED,LIGHT_OFF);//初始化灯 uart_init(UART_0,MCGIRCLK,9600);//串口0时钟MCGIRCLK(4000Khz) uart_init(UART_1,BUSCLK,9600);//串口1、2使用总线时钟24000Khz uart_init(UART_2,BUSCLK,9600);//波特率使用9600 uart_send_string(UART_0,"HelloUart_0!\r\n");//串口发送初始化提示 uart_send_string(UART_1,"HelloUart_1!\r\n"); uart_send_string(UART_2,"HelloUart_2!\r\n"); //4.给有关变量赋初值 mRuncount=0;//主循环计数器 //5.使能模块中断 uart_enable_re_int(UART_0);//使能串口0接收中断 uart_enable_re_int(UART_1);//使能串口1接收中断 uart_enable_re_int(UART_2);//使能串口2接收中断 //6.开总中断 ENABLE_INTERRUPTS; //进入主循环 //主循环开始================================================================== for(;;) { //运行指示灯(RUN_LIGHT)闪烁 mRuncount++; //主循环次数计数器+1 if(mRuncount>=RUN_COUNTER_MAX)//主循环次数计数器大于设定的宏常数 { mRuncount=0; //主循环次数计数器清零 light_change(RUN_LIGHT_BLUE);//蓝色运行指示灯(RUN_LIGHT_BLUE)状态变化 } //以下加入用户程序 }//主循环end_for //主循环结束==================================================================}通信中断程序voidisr_uart1_re(void){ staticuint_8i=0,j=0;uint_8flag=1,ch;uint_32period,duty; period=100; duty=60;DISABLE_INTERRUPTS;ch=uart_re1(UART_1,&flag);if(0==flag){uart_send1(UART_1,ch);}if(ch=='0'){ if(i<6) i++;else i=0; pwm_init(TPM0,TPMCH0,period,duty-10*i);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论