首页 > 演讲范文 > 会议发言 / 正文
手机蓝牙遥控小车设计毕业论文
2020-06-30 11:00:44 ℃
XX 学
院
本科生毕业设计(论文)
学
院:
电子与电气工程学院
专
业:
电气工程及其自动化
学
生:
指导教师:
完成日期
20XX
年
X
月
XX学院本科生毕业设计(论文)
手机蓝牙遥控小车设计
Design of Bluetooth Mobile Phone Remote Control of Smart Car
总
计:
29 页 表
格:
6 个 插
图:
16 幅
XX学 院 本 科 毕 业 设 计(论文)
手机蓝牙遥控小车设计
Design of Bluetooth Mobile Phone Remote Control of Smart Car
学
院:
电子与电气工程学院
专
业:
电气工程及其自动化
学 生 姓 名:
学
号:
指 导 教 师(职称):
评 阅 教 师:
完 成 日 期:
XX学院 XX Institute of Technology 手机蓝牙遥控小车设计 电气工程及其自动化专业 [摘 要]本课题选用单片机STC89C52RC作为整个控制系统的核心和数据处理中心,利用Keil编程软件进行单片机程序的编写,通过安装于手机上的蓝牙通讯客户端对单片机进行相关指令的发送。小车硬件采用模块化设计,整个系统由单片机最小系统模块、蓝牙模块、电动机模块、电机驱动模块、电源模块等组成,各个模块之间通过相互配合,实现手机客户端对小车运动状态的遥控。在对系统软、硬件进行相关调试后,小车能够接收手机发送的遥控信号,并实现前进、倒退、左转、右转、加速、减速和停止的功能。
[关键词]蓝牙模块;遥控;电源模块;客户端
Design of Bluetooth Mobile Phone Remote Control of Smart Car Electrical Engineering and Automation Specialty
ZHANG Fan Abstract: Design of Bluetooth mobile phone remote control of smart car was completed using STC89C52RC as control core and data processing center. It was programmed by Keil programming software and through the installation of the client on the phone to send the relevant instructions to achieve the remote control of the car. The car designed by modular and consists of the microcontroller unit minimum system module, Bluetooth module, motor module, motor drive module, power module and other components. Through mutual cooperation between the various modules, the mobile phone client to achieve the status of the remote control of the car. In the system software, hardware for the relevant debugging, the car can receive the remote control signal form phone, and to achieve forward, backward, left, right, right, acceleration, deceleration and stop function. Key words: Bluetooth module ; remote control ; power module ; client
目
录 1 引言 1 1.1 国外研究现状 1 1.2 国内研究现状 1 2 设计方案分析 1 2.1 设计要求 1 2.2 设计构思 2 3 系统硬件设计 2 3.1 单片机最小系统 2 3.1.1 单片机芯片的选择 2 3.1.2 单片机芯片的简介 3 3.1.3 单片机最小系统的组成 3 3.2 蓝牙模块 4 3.2.1 蓝牙模块的选择 4 3.2.1 蓝牙模块的简介 5 3.2.3 蓝牙模块参数的设置 6 3.3 电动机模块 7 3.3.1 电动机的选择 7 3.3.2 直流电机的简介 7 3.4 电机驱动模块 8 3.4.1 电机驱动模块的选择 8 3.4.2 电机驱动模块的简介 8 3.4.3 电机驱动模块的连接 9 3.5 电源模块 10 3.5.1 电源的选择 10 3.5.2 稳压模块的简介 11 3.6 系统框图 11 3.7 遥控小车结构分析 12 3.7.1 底板结构 12 3.7. 2 底板配件 13 3.7. 3 整体装配 14 4 系统软件设计 14 4.1 单片机程序设计 14 4.1.1 程序设计内容 14 4.1.2 I/0端口的设置 15 4.1.3 初始化程序设计 16 4.1.4 串口通讯程序的设计 17 4.1.5 指令处理程序的设计 17 4.1.6 方向控制程序的设计 17 4.1.7 PWM调速程序的设计 18 4.2 手机客户端参数设置 19 5 系统整体调试 20 5.1 调试方案 20 5.2 硬件调试 20 5.3 软件调试 20 结束语 21 参考文献 22 附录一 23 附录二 24 致谢 29
1 引言 1.1 国外研究现状 现代的无线遥控小车技术起源于美国,其实是第二次世界大战的产物。由于战事的需求,尤其是需要各种不同于人类直接操作的机器,用于排雷、布雷、收集情报等。在此基础上需要智能遥控机器,随着技术的发展,出现了各种功能的小型遥控小车。利用遥控小车排雷和布雷,执行各种危险的任务[1]。随着技术的沉淀,现代遥控技术到达了相当的高度。尤其是西方发达国家的遥控小车技术一直处于世界的前列。这些国家一直都在大力发展这项技术。由此衍生出其他更高级的控制方式。
军用技术转化为民用技术,用于造福人们。在国外,由于政府的支持下,民间研究机构和各个实验室的不断探索和研究之下,智能汽车技术已经相当成熟。因为物联网在当今的快速发展,智能交通系统在国外已经得到了广泛的推广。美国是发展较好的国家之一,美国在上世纪六七十年代就开始了智能交通系统的研究。随后美国就开始了智能化车辆方面的研究,逐步走向智能交通体系的发展。日本是世界上应用智能交通系统最为广泛的国家。美国、德国、日本等科技大国在智能汽车技术方面一直处于世界的前列。在汽车的性能及智能化水平上,西方发达国家一直处于先进水平。
1.2 国内研究现状
由于我国的智能交通系统研究与起步较晚,所以一直都是在向发达国家学习,在引进、改善和吸收的基础上逐渐发展起来。随着国家政府和企业对智能系统方面的重视,国内已大范围地进行无线遥控汽车的研究,一些实验室及研究所对智能交通领域都有研究。我国智能交通系统的研究开始于九十年代,到了21世纪我国的智能交通系统协调指导小组及办公室成立。经过二十多年的发展,我国的技术跟发达国家的差距正在逐步减小,在一些大中型城市已经开始应用智能交通系统。由于中国的智能交通领域起步比较晚,虽然在研发应用方面取得了重要发展,但是与国际上的发达国家还存在一定的差距。我国的技术跟发达国家的差距正在逐步减小,虽然现在的发展还不完善,但是目前我国科技能力不断进步和经济实力的不断强大,为智能交通系统的研发和完善提供了技术支撑和资金保证,有助于推动科学技术的发展。
2 设计方案分析 2.1 设计要求 设计手机蓝牙遥控小车需要在设计过程中熟悉各个元器件的功能,对单片机和安卓系统有一定的了解,知道单片机及其它模块各个引脚的功能和电路结构,掌握单片机定时器和串口通信的使用方法。熟悉电焊和电机驱动,能够熟练使用万用表对小车的硬件电路进行检测。有一定的软件开发能力,能够运用C语言进行单片机的基本编程,具有熟练使用Keil软件的能力,对手机蓝牙遥控小车的设计方案了如指掌。要求小车可以实现在手机蓝牙的遥控下左右转、前后运动、和调速的功能。
2.2 设计构思 查阅其他同学之前的制造经验和方案,根据2.1设计要求,通过查阅资料进行方案论证和选择,可以确定出该系统的整体构成。本设计是以单片机为核心,通过小车蓝牙模块和手机蓝牙的通讯来实现数据指令的传递,单片机对数据处理,最后给电机驱动模块输出高低电平,从而来控制电机驱动模块的输出端。智能小车使用四轮驱动,以提高整车运动的平稳性。利用单片机进行PWM脉宽调制,以实现小车的加速和减速。手机蓝牙遥控小车通过蓝牙接收模块,手机客户端,单片机芯片,在驱动电机的拖动下,使小车实现各个功能。
整个系统的小车硬件可以分为七个部分,分别为单片机最小系统、手机、蓝牙模块、电机驱动模块、小车底板、电动机模块、电源模块。蓝牙模块为小车进行通讯,接收手机蓝牙传递过来的数据,单片机最小系统接收信号之后,分析信号并在输出引脚产生高低电平,给电机驱动模块发出指令,电机驱动模块根据输入引脚的状态控制电机的旋转,用电源模块为各个模块供电。小车底板作为整个设备的载体。手机则是在整个系统中起到遥控小车的作用。各个硬件共同组成蓝牙遥控小车。
设计构思结构如图1所示。
图1 设计构思结构图 3 系统硬件设计 3.1 单片机最小系统 3.1.1 单片机芯片的选择 单片机芯片选择时的原则:
(1)单片机选购时需要实际功能和数量比设计构想中的多一些,在保证所需要的功能外,尽可能有足够的引脚供给本次设计分配,方便在设计的时候更换和填补更重要的功能。
(2) 单片机在选择上要方便耐用,保证单片机的使用寿命尽可能的长,程序可以多次的写入。
(3)单片机在可开发性上要有可靠的保证,以便于开发不同功能。
结合单片机芯片选择时的原则,本次设计的单片机芯片采用STC89C52RC。该芯片是实验室使用比较广泛的一种单片机芯片,多用于直流电机、步进电机的控制中,可以用C语言和汇编语言进行程序编写。具有写入程序简单方便、可以多次写入的特点,试验过程中便于反复调试。STC89C52RC芯片的价格也比较便宜,是本这次设计比较合适的选择。
3.1.2 单片机芯片的简介 STC89C52RC从功能的角度看,主要包括以下部分[2]:
(1)一个8位的微处理器CPU。
(2)8KB的Flash存储器。
(3)512B的RAM。
(4)片内振荡电路和时钟发生器,只需外面连接晶振或输入振荡信号。
(5)4个8位I/O端口。
(6)有一中断控制器。
(7)3个16位的定时器/计数器。
(8)有一个可寻址64KB外部数据存储器。
3.1.3 单片机最小系统的组成 单片机最小系统, 它由一系列元件组成,也是单片机正常工作的最低配置。在最小系统的基础上可以增设其它模块,扩展其它功能。通过单片机最小系统板方便单片机的放置和拆除,便于各个模块之间的连接。
单片机最小系统由STC89C52RC芯片、电阻、电容、晶振、按钮和其他电子元器件共同够成的。
单片机的最小系统包括:复位系统、时钟系统、和电源系统[3]。三个系统的介绍如下:
(1)复位系统:
单片机第9引脚RST,高电平有效,在时钟电路工作后,当外部电路使RST端口出现2个机器周期以上的高电平,系统内部复位,程序从头开始运行。
(2)时钟系统:本次设计采用内部方式为单片机提供时钟信号。18引脚XTAL1和19引脚XTAL2两端接晶振的两端。
(3)电源系统:电源系统的引脚为40引脚VCC和20引脚GND,供电电压为直流5.5V~3.3V。
单片机最小系统原理如图2所示。
图2 单片机最小系统原理图 此次STC89C52RC单片机使用的晶振选用11.0592MHz。它与STC89C52RC的反相放大器构成振荡器。电容C2,C3,选择30pF。C1选择10uF。其它各处所用到的电阻均采用阻值为10K的电阻,D1为一个发光二极管。
3.2 蓝牙模块 3.2.1 蓝牙模块的选择 蓝牙模块主要是为了实现上位机与下位机的数据传输,通信方法有两种,一种方法是并行通信,另一种方法是串行通信。
单位信息的各位数据同时传递的通讯方法称为并行通信。STC89C52RC单片机的并行通信依靠并行I/O连接实现。并行通信的最大优点是信息传输速度快,缺点是单位信息有多少位就需要多少根传送信号线。因此,并行通信使用起来比较浪费材料。
单位信息的各位数据被分时一位一位依次顺序传送的通信方式称为串行通信[4]。串行通信可以通过串行连接口实现。串行通信的突出优点是仅需要一对传输线传输信息。串行通信的缺点是,由于是一位一位的数据传输,所以没有并行通信传输速度快。
本次设计的数据传输仅仅为指令的传输,数据量并不大,综合上述两次通讯方式,决定使用串行通信的方式实现上位机与下位机的无线通讯功能,本质上使用的是单片机串口通信。
蓝牙模块是手机蓝牙遥控小车中至关重要的一环,肩负着接收手机遥控指令的功能。选择蓝牙模块要以设计方案来选材,考虑到选材上,有以下几个硬指标,反应要灵敏,应用要方便,性价比高,通讯稳定可靠。经过上网查阅资料,发现HC-06蓝牙模块比较适合本次设计的要求,且购买比较方便,具有使用范围比较广的特点。
HC-06蓝牙模块的外部结构如图3所示。
图3 HC-06蓝牙模块的外部结构图 3.2.1 蓝牙模块的简介 HC-06蓝牙模块有以下优点:
(1)HC-06可以用于各种带蓝牙功能的终端装置。
(2)输入电压:3.6V~6V,可以和单片机使用同一电源电压。
(3)波特率范围比较宽4800-1382400。
(4)带连接状态指示灯,LED快闪表示没有蓝牙连接,LED慢闪表示进入AT命令模式,LED常亮表示蓝牙已连接[5]。
(5)使用手机很容易与HC-06模块连接。
(6)通讯质量好,不易受到干扰或者中断。
蓝牙模块HC-06模块参数:
(1)输入电压:3.6V~6V,禁止超过7V。
(2)电源防反接,接反模块不工作。
(3)支持8位数据位、1位停止位、无奇偶校验的通信格式。
(4)板载3.3V稳压芯片。
(5)通讯端接口电平为3.3V,可以直接与各种单片机连接。
(6)在空旷地带有效传输距离为10米。
HC-06蓝牙模块的接线方法为VCC端口接3.6V~6V直流电源正极,GND端口接电源负极,RXD端口接单片机的TXD端口,TXD端口接单片机的RXD端口[6]。
蓝牙模块连接如图4所示。
图4 蓝牙模块连接图 3.2.3 蓝牙模块参数的设置 蓝牙模块的参数设置需要用到USB转串模块,该模块可以实现蓝牙模块和电脑的有线连接,也可以为单片机进行程序的下载。通过USB转串模块,计算机可以和蓝牙模块进行数据交换,用计算机实现对蓝牙模块进行基本参数的设置。
蓝牙模块参数设置界面如图5所示。
图5 HC-06蓝牙模块参数设置界面图 HC-06蓝牙模块的参数设置指令:
(1)通信的测试,在串口调试助手主界面的发送区发送“AT”之后,会在发送区上方的窗口返回“OK”。
(2)修改波特率。在串口调试助手主界面的发送区发送“AT+BAUD4”之后,会在发送区上方的窗口返回 “OK9600”。
(3)修改设备连接名称。以设置蓝牙设备的名称为name为例进行举例,在发送区编辑“AT+NAMEname”,返回“OKname”,即表示设置成功。
(4)修改蓝牙配对密码。在串口调试助手主界面的发送区发送“AT+PINxxxx”之后,会在发送区上方的窗口返回“OKsetpin”,xxxx为设置的蓝牙配对密码。
本次设计所设置的蓝牙名称为HC-06,串口通讯波特率设置为9600,蓝牙模块的配对密码为原始密码1234,下次上电使用不用重新设置,可以掉电保护设置的各个参数[7]。
3.3 电动机模块 3.3.1 电动机的选择 由于本次设计使用到的元器件均使用直流,所以电动机模块采用直流电动机。直流电动机可以把直流电能转换为机械能。直流电机的启动性能比较好,它被广泛地应用于起重设备以及调速范围广泛的切削机床中。直流电机还具有良好的调速性能,通过调整直流电机的输入电压可以实现对直流电动机的调速。直流电动机按励磁方式可以分为永磁式、他励式和自励式3类[8]。本次设计使用的是在玩具小车上使用较多的永磁式直流电动机。直流电机的型号为FF-130玩具小马达,该直流电机为有刷直流电动机。
3.3.2 直流电机的简介 直流电机的电压范围为1.5V~12V,转数为5000~20000rpm,具有变速范围大,扭力大的特点,可以通过改变直流电机电源接口端的极性来改变旋转方向。
直流电动机的模型如图6所示。
图6 直流电动机的模型图 直流电动机的结构:图6是一个最简单的直流电动机模型。它在空间有一对位置固定的磁极(主磁极),两磁极间有一个用导磁材料制成的圆柱体(称为电枢铁心),在电枢铁心上放置了由abcd导线连成的一个电枢线圈,线圈的首段和末端分别连到圆弧形的铜片(换向片)上。换向片固定在转轴上,与电枢一起旋转。换向片之间以及转轴之间都互相绝缘。这种由换向片构成的整体称为换向器。在换向片上放置着一对固定不动的电刷A和B,它与换向片之间保持滑动接触。电枢线圈通过换向片和电刷而与外电路想接通[9]。
3.4 电机驱动模块 3.4.1 电机驱动模块的选择 小车想要运动,单片机端口的输出电压是无法驱动电机旋转的,需要使用到电机驱动模块。通过驱动模块可以实现单片机输出不同指令,电机以不同的旋转状态进行响应。目前市面上,用于小车设计的直流电机驱动模块比较多,在控制直流电机方面,L298N电机驱动模块使用比较普遍,性能也比较好,所以本次设计也使用该电机驱动模块,L298N模块的控制端接收到外部传来的高低电平,可以实现不同状态的输出。
3.4.2 电机驱动模块的简介 L298N电机驱动模块原理图如图7所示。
图7 L298N电机驱动模块原理图 L298N电机驱动模块性能特点:
(1)本模块驱动发热量低,,具有散热片,散热性能好。
(2)本模块的驱动电压范围为5V~35V。
(3)能够实现电机正反转及调速。
(4)启动性能好,启动转矩大。
(5)可以同时驱动两个直流电机,可以实现PWM调速。
L298N电机驱动模块的输入为标准逻辑电平,通过控制控制端口INT1、INT2、INT3、INT4的电平,可以同时控制两台直流电动机的正反转与启停。当驱动两个直流电动机时,通过控制L298N的使能端也可以实现直流电动机的制动和调速。
L298N电机驱动模块输入引脚与输出的逻辑关系如表1所示。
表1 L298N电机驱动模块输入与输出逻辑关系表 直流电机 旋转方式 INT1 INT2 INT3 IN4 调制PWM信号 调制端A 调制端B M1 正转 高 低 / / 高 / 反转 低 高 / / 高 / 停止 低 低 / / 高 / M2 正转 / / 高 低 / 高 反转 / / 低 高 / 高 停止 / / 低 低 / 高 3.4.3 电机驱动模块的连接 电机驱动模块的驱动电压为5V~35V, VCC接直流电源的正极。由于一个电机驱动模块可以驱动两个直流电机,而小车采用四轮驱动的驱动方式,有四个直流电机,所以需要两个电机驱动模块,分别用前轮驱动模块和后轮驱动模块表示。
电机驱动模块控制引脚与单片机I/O口连接如表2所示。
表2 电机驱动模块控制引脚与单片机I/O口连接表 单片机I/O口 连接位置 功能 P2.0 后轮驱动模块IN2 控制小车右后车轮的电机 P2.1 后轮驱动模块IN1 P0.0 后轮驱动模块ENA P2.2 后轮驱动模块IN3 控制小车左后车轮的电机 P2.3 后轮驱动模块IN4 P0.1 后轮驱动模块ENB P2.4 前轮驱动模块IN1 控制小车左前车轮的电机 P2.5 前轮驱动模块IN2 P0.2 前轮驱动模块ENA P2.6 前轮驱动模块IN3 控制小车右前车轮的电机 P2.7 前轮驱动模块IN4 P0.3 前轮驱动模块ENB 3.5 电源模块 3.5.1 电源的选择 本次设计需要用到5V的直流电,提供5V直流电给单片机供电,电机驱动模块使用5V~35V直流电,供电机驱动模块正常工作。
方案一 :使用交流设备当做电源供电。此种方案直接否决,因为小车体积很小,且功能单一,不会用到多么复杂的供电装置,小车又不需要多么大的动力,况且交流装置价格比较贵,用在这种控制小车上属于浪费,且活动范围受到导线的限制。
方案二:
使用普通的干电池,干电池常见,用起来比较方便,也容易供电,如果只是短时间用的话,确实比较方便,买起来又不贵,简易方便。但是本次设计需要对小车半个月的制造和测试,干电池虽然常见但不耐用。
方案三 :用直流蓄电池供电。直流蓄电池的容量比较大,方便反复的试验,蓄电池的价格也比较便宜,试验成本低。
对上述三种方案进行比较,考虑到本次设计的为移动性小车,保证小车机动性的前提下,尽可能保障电源的续航能力,决定采用方案三,用直流蓄电池作为此次毕业设计的电源。本次设计采用的蓄电池容量为12V5AH,电机驱动模块的电压范围为5V~35V,而蓄电池的额定电压为12V,可以满足电机驱动模块的要求。蓄电池如图8所示。
图8 蓄电池图 本次设计所采用的电源为直流蓄电池,蓄电池的输出电压为12V,可以直接为L298N电机驱动模块供电,但是电压过高不能为单片机及蓝牙模块供电。为了给单片机及蓝牙模块供电,可以把蓄电池的电压通过稳压电源模块进行电压降低,以达到单片机及蓝牙模块的工作电压范围。本次设计采用LM7805稳压模块把电压降低为5V。
3.5.2 稳压模块的简介 稳压模块的作用主要是把蓄电池的输出电压降低之后为蓝牙模块和最小系统模块供电。稳压模块主要有三部分组成,分别为二极管、滤波电容和LM7805稳压芯片。由于稳压芯片在工作中会产生大量的热,为稳压芯片提供了散热片,加速芯片散热。
LM7805稳压模块的原理如图9所示。
图9 LM7805稳压模块的原理图 图9为稳压模块的原理图,图中LM7805为5V稳压芯片,P2为蓄电池接口,D1、D2、D3、D4四个二极管使P2口在直流电源的连接上没有正负极的要求,方便电源模块的连接,C1、C2为4700uf的滤波电容,对直流电进行滤波,然后经过LM7805稳压芯片的稳压之后,从模块的输出接口P1输出5V直流电[10]。通过输出接口为单片机最小系统和蓝牙通讯模块供电。经过万用表测试P1口输出的电压,确定为直流5V,可以为蓝牙通讯模块和单片机最小系统工作供电。
3.6 系统框图 系统框图如图10所示。
图10 系统框图 在系统框图中手机客户端和蓝牙模块实现指令的传输,蓝牙模块把接收到的指令经过串口通信给单片机,单片机处理完指令进输出控制电机驱动模块,电机驱动模块驱动电机模块使小车运动。在整个框图中,蓄电池可以直接给电机驱动模块供电,经过5V稳压模块之后可以为蓝牙模块、单片机进行供电。
3.7 遥控小车结构分析 在本次设计中,使用的蓄电池在整个小车结构中占据比较多的重量,如果采用两轮驱动的小车底板,车子的驱动轮会因为受力不均出现打滑的现象,为了提高车子的稳定性及机动性,小车使用四轮驱动。四轮驱动式的结构中因为后轮的转动力矩的增大,四轮驱动式的小车在横向上的轮胎阻力要大于两轮驱动式的小车,因此四轮驱动式的车子不易发生方向偏移,爬坡能力更强。四轮驱动式小车也存在一些不足,如:四轮驱动式的车子使用的电机增多,更加耗电,而且车体比一般的两轮驱动式的小车结构复杂。对于本次设计来说,由于此次试验用的蓄电池容量比较大,足以满足四个电机的正常工作要求,总体来看四轮驱动式的小车底板还是比较符合这次设计的。从整体的性能来看四轮驱动式小车在结构上具有很明显的优势,所以选择四轮驱动的底板也是这次设计的首选。
3.7.1 底板结构 底板是用来支撑整个车体的主要部件,同时也可以用来固定车子的各个零部件。底板上主要有蓝牙模块安装槽、单片机最小系统安装孔、电机定位槽和走线孔,其余的槽孔可以用来扩展其它模块。
底板结构如图11所示。
图11 底板结构图 小车的底板不但在结构上要满足要求,而且要具有一定的机械强度,本次设计小车底板采用的是亚克力板材,具有足够的机械强度,足以承受本次设计所有模块的重量。本次设计采用的小车底盘机械结构简单,安装方便,可以装四个轮子,实现四轮驱动,底盘大非常容易扩展,为各个模块提供了足够的安装空间,方便各个设备的安装。为了提高小车底板的结构可靠性和稳定性,采用双层底板的结构。
3.7. 2 底板配件 小车底板的配件有电机支架、电机齿轮箱、螺丝螺母、螺柱以及车轮。它们共同构成了小车的基本构架。
电机与底板连接支架如图12所示。
图12 电机与底板连接支架图 电机支架主要是用来将电机固定在底板上的,每个电机用两块支架绑定固定,图示12电机支架的工程图中,支架中间的两个孔为支架的定位孔。它通过槽孔和圆孔来固定电机,靠小车底板左右两侧的肩台与底板卡在一起。支架的材料也是亚克力板。
小车的零部件如下表3所示。
表3 小车零部件表 零件 数量 电机支架 8片 螺丝螺母 若干 螺柱 若干 电机齿轮箱 4个 车轮 4个 小车的零部件在小车中起到连接各个模块的作用,共同构成小车的基本载体。电机支架和螺丝螺母配合使用可以固定小车的电机箱,螺丝与螺柱起到固定和支撑底板的作用,共同构成了底板的两层结构,电机的齿轮箱可以固定直流电动机,也起到了降低直流电机输出机械转速、增大转矩的效果,车轮与电机齿轮箱相连接,齿轮箱中齿轮的转动,带动车轮的转动,使小车实现运动。各个零部件和底板的相互配合使用,使小车具有了设计所需要的机械强度和结构。
3.7. 3 整体装配 小车的整体装配如图13所示。
图13 小车的整体装配图 整体车体由底盘、橡胶轮、直流电机、电机支架、以及各个模块组成。
在以往的智能小车设计中,大都会采用三轮式结构,前轮一般采用万向轮牵引,左右分别为驱动轮。虽然三轮式的小车地盘结构简单,可以节省出来两个电机,但是在小车行驶过程中的稳定性不足,且由于万向轮的径向阻力非常小,所以很容易偏向。因此在这次的设计中我采用了四轮驱动,虽然四轮驱动式结构相对于三轮式的结构更加复杂,但其稳定性得到明显加强,并且因为四个轮子都为驱动轮,其偏差更为离散,不一定是同侧的偏差方向一致,所以在小车前进过程中很难偏向。
4 系统软件设计 4.1 单片机程序设计 4.1.1 程序设计内容 在本次程序设计中,参照在直流单片机的I/O口和直流电机的逻辑控制表,要对单片机的I/O口进行设置,紧接着是对单片机进行程序初始化,由于需要处理蓝牙收到的数据,所以要编写串口通讯程序,接收到的数据送到单片机后小车要实现不同的运动状态,需要有指令处理程序、方向控制程序、PWM调速程序。
蓝牙遥控小车的程序流程如图14所示。
图14 程序流程图 4.1.2 I/0端口的设置 I/O端口在程序中的代码设置如下表4所示。
表4 I/O端口在程序中的代码设置表 I/O口 程序中代码 P2.0 INT1 P2.1 INT2 P2.2 INT3 P2.3 INT4 P2.4 INT5 P2.5 INT6 P2.6 INT7 P2.7 INT8 P0.0 EN1A P0.1 EN1B P0.2 EN2A P0.3 EN2B 4.1.3 初始化程序设计 本次设计的手机蓝牙遥控小车,需要使用到两个定时器,分别为定时器0和定时器1。定时器1用于串口通讯,为串口通讯设置波特率,定时器1用于小车调速系统,进行PWM调速。
初始化主要是对SCON、TCON、TMOD、IE几个寄存器的设置。串口初始化设置的内容如表5所示。
表5 串口初始化设置表 SCON SM0 SM1 SM2 SM3 REN TB8 RB8 TI RI 串行口控制寄存器 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 定时器/计数器控制寄存器 TMOD GATE C/T M1 M0 GATE C/T M1 M0 定时器/计数器工作方式设置寄存器 IE EA -- ET2 ES ET1 EX1 ET0 EX0 中断允许控制寄存器 本次设计使用到的定时器1工作在模式2,其功能是为串口提供波特率,波特率为9600,即TH1等于0xfd、TL1等于0xfd[11]。定时器0工作在模式1,定时为100us,即TH0等于0xff、TL0等于0xa4。初始化程序设计为: void init() { TMOD=0x21;
TH0=0xff; TL0=0xa4;
TH1=0xfd ;
TL1=0xfd ; TR0=1;
TR1=1;
SM0=0; SM1=1; REN=1; ET0=1; ET1=0; EA=1; ES=1; } 4.1.4 串口通讯程序的设计 串口通讯程序是单片机对数据的接收,是为了实现上位机与下位机的数据传输, SUBF是串行口的缓冲寄存器,单片机与上位机的通信数据都是临时存放在SUBF寄存器中的,通过软件的读写操作就可以实现单片机与外设之间的数据通讯了。
串口通讯中断程序设计为:
void ser() interrupt 4 { RI=0; a=SBUF; } 4.1.5 指令处理程序的设计
指令及对应功能指令如表6所示。
表6 指令及对应功能表 指令内容 2 8 5 4 6 1 3 动作响应 前进 后退 停车 左转 右转 加速 减速 本次设计的指令选择处理程序为:
switch(a) { case '5': tingche(); break;
case '2': qianjin(); break;
case '8': houtui(); break;
case '4': zuozhuan(); break;
case '6': youzhuan(); break;
case '1': jiasu();break; case '3': jiansu();break; default:break; } 4.1.6 方向控制程序的设计 本设计采用L298N电机驱动模块。由L298N模块各个端口的逻辑关系可知,当ENA与ENB为1时,通过控制IN1、IN2、IN3、IN4端口电平的高低来改变电机的转向。下面以电机的前进为例,对方向程序的设计。
前进的程序设计为:
void qianjin() { IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0; } 4.1.7 PWM调速程序的设计 本设计采用的是软件调速,通过软件设计控制电机驱动模块的使能端进行调速,P0口为调速端口。timer0()为PWM调速函数,在单片机上电后count初始值为0,speed初始值为30。count的计数范围为0~100。speed为用户给定的速度值,范围为20~90,speed数值越大,速度越快。通过控制speed的值进行调速。当count的值大于等于speed时,P0口引脚输出低电平,直流电动机处于自由停止状态,当count的值小于speed时,P0口引脚输出高电平,允许电动机运动,这样通过控制高低电平的脉冲宽度来进行调压,从而调速。
本次设计的PWM调速程序为:
void timer0()interrupt 1 {
TH0=0xff; TL0=0xa4; if(count==speed) { EN1A=0; EN1B=0; EN2A=0; EN2B=0; } count++; if(count==100) { count=0; EN1A=1; EN1B=1; EN2A=1; EN2B=1; } 4.2 手机客户端参数设置 本次设计使用的手机客户端为蓝牙串口助手,该客户端使用简单、方便,可以实现与蓝牙模块的通讯,是电子工程师的开发利器。
软件功能:
(1)可以搜索连接蓝牙设备,并显示蓝牙设备的class与RSSI(信号强度)。
(2)接收与发送数据。
(3)可设置ASCII与HEX的输入输出模式。
(4)可将数据结果保存到SD卡。
图15 前进按钮的设置图
图16 主控制界面图 本软件的三个模式:
(1)普通模式:基本的输入输出模式。
(2)键盘控制模式:可自定义12个按钮的输出值。
(3)命令行模式:可设定命令的结束符,用于通信调试。
本次设计使用键盘控制模式,设置的是发送ASCII码的输入输出模式。根据指令与对应功能表设计对应的按键及按键按下后所发送的内容,以前进按钮为例进行设置,前进按钮的设置如图15所示。各个按钮设置完毕主控制界面如图16所示。
5 系统整体调试 5.1 调试方案 在小车的调试过程中,先对硬件调试,后对软件调试。先局部后整体,一部分一部分的测试检查,掌握小车的每一个部件,对小车的整体构造要熟记于心。本次设计的小车总共有这几个部分,一是单片机最小系统,二是蓝牙HC-O6模块,三是L298N步进电机,四是电源供电装置。这几个部分先要调整好各自的功能,先要找故障,查看设备有无短路、断路现象,看各个模块是否可以正常工作,接着再看单片机最小系统,测试单片机芯片是否可以正常烧录程序,而后是蓝牙模块和电源装置。接着是软件调试,先看流程图是否合理,然后再调试程序,最后调试整体,用手机控制小车,看小车的整体功能。
5.2 硬件调试 在给小车上电之前应该先用万用表对各个元器件进行检查,在排除了虚焊、漏焊、断路、短路等情况下进行电路功能的调试,对独立元器件的检测一般注意的问题有防止元器件短路,断路,虚焊,漏焊。给系统上电后看是否短路,或者断路。写一个程序对STC89C52RC进行调试,如果正确实现功能则说明没有错误。对蓝牙模块的测试的主要是用手机和蓝牙进行连接,看是否可以配对,用手机发出信号,测试其是否能接受信号,如果接受信号无误,则说明HC-06蓝牙模块没有损坏。对电源电路的调试,主要是检测其是否能通电,用万用表测试各个输入输出端口的电压,检查是否正常。
5.3 软件调试 软件调试是对C语言的调试。纯粹的语言调试不同的是,单片机编程要考虑到硬件的设计[12]。在编程过程中,为了得到满足要求的程序,一般都需要有一个对程序的调试过程,甚至需要经过多次反复的调试才能完成。一个程序的组成是有很多子程序互相拼凑修改得到的,调试过程中,可以对这些子程序逐个进行调试,保证子程序内部没有出错,然后再对整个程序进行调试。编写好的程序用Keil软件进行编译,编译成功后输出信息窗口会提示0错误,0警告,说明所编写的程序没有语法错误[13]。对蓝牙通讯及单片机输出端口的测试,主要是在单片机的输出端口接二极管,通过二极管的点亮情况确定蓝牙通讯和单片机部分是否能够按照设计要求执行成功。最后的软件调试就是把程序写入单片机,组装好小车,进行遥控测试。由于小车的车轮和齿轮箱具有较大的摩擦力,所以要调试多次修改speed的在各个子函数中的初始值,找到合适的初始值,以便小车有足够的初始动能。
结束语 本次毕业设计完成的是手机蓝牙遥控小车的研究,对未来的智能交通有一定的先驱作用。STC89C52RC的单片机最小系统是此种类型中最简单的设计。首先对设计整体布局,接着依次选材料,STC89C52RC芯片简易方便,易于设计,把以其为主要的单片机最小系统设计出来,接着选用电源模块,电源模块要实现其驱动方便,不易断电,蓝牙模块HC-06要抗干扰能力强,容易控制,连接稳定,数据的传送快,接着是控制界面的选择,界面要方便耐用,清晰合理,紧接着对单片机进行程序编写,设置手机的客户端,最后进行硬件和软件部分的调试。在设计的过程中,遇到了很多问题,对所遇到的问题进行推敲,多次试验,最终还是解决了各方面的问题。此次设计有了很深刻的体会,让我对所学习的知识有了系统的认识,对各个单元有了很深的了解。从总体上看,虽然方案不是太完善,但是小车所要实现的功能均已实现。本方案仍有待改善,以后会越做越好。
参考文献 [1] 刘汪,董晓庆.基于单片机的无线遥控小车[J].韩山师范学院,2013(4). [2] 周霁.兼容MCS-51微处理器的逻辑设计[J].中国电子科技集团公司第四十七研究所,2013(6). [3] 孙育才.单片微型计算机及其应用[M].东南大学出版社,2010. [4] 茅卫娟.电梯远程监控系统的设计与实现[D].上海:上海交通大学,2012. [5] 王建勋.基于虚拟仪器和蓝牙技术的控制系统设计[J].实验室研究与探索,2015(3): P86~P89. [6] 鲍程红,戴珊.停车计时收费系统的研发[N].浙江万里学院学报,2012(4): P81~P85. [7] 蒋俊,简雨沛.蓝牙智能小车系统设计[D].北京:西南交通大学,2015:P166~P167. [8] 杨勇.他励直流电动机的启动方法[J].东方企业文化,2014(1): P229~P229. [9] 劳卫东.谈直流发电机的基本工作原理[J].企业科技与发展,2011(22): P27~P30. [10] 聂思敏.小功率光伏电池控制器的研制[N].安顺学院学报,2011(3): P115~P117. [11] 游晓容.单片机串行通信中的几个问题讨论[N].河南教育学院学报,2011(2). [12] 许超,张丹.基于Keil的单片机课程教学改革[J].辽宁大学学报(自然科学版),2011(1). [13] 鲁杰爽.单片机Keil软件仿真与调试技巧[J].电子制作,2010(3). [14] Wang G W, Shao Q. Electronic structure of P-doped diamond thin film and it’s hole influence. Sci China Phys Mech Astron, 2010. 40(7): 869–875. [15] Godfrey Nolan .Decompiling Android.2012: 158.
附录一 元件连接图:
附录二 单片机程序:
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int uint speed; uint count; uint a; sbit IN1=P2^0;
//转向控制端口P2口 sbit IN2=P2^1; sbit IN3=P2^2; sbit IN4=P2^3; sbit IN5=P2^4; sbit IN6=P2^5; sbit IN7=P2^6; sbit IN8=P2^7; sbit EN1A=P0^0;
//使能控制端口P0口 sbit EN1B=P0^1; sbit EN2A=P0^2; sbit EN2B=P0^3; /*************************************************************************** *名称:init() *功能:串口和定时器0初始化,晶振11.0592,波特率9600,使定时器和串口中断 ****************************************************************************/ void init() { TMOD=0x21;
//设置定时器1为模式2,串口提供波特率;定时器0工作在模式1,产生PWM波 TH0=0xff; TL0=0xa4;
//定时100us
TH1=0xfd ;
TL1=0xfd ;
//装初值,波特率为9600 TR0=1;
//启动定时器0 TR1=1;
//启动定时器1 SM0=0; SM1=1;
//设置串口工作方式为1,即SCON=0x50,允许串口接收发送 REN=1;
//使能接收 ET0=1;
//开定时器0中断 ET1=0;
//开定时器1中断
EA=1;
//打开总总段开关
ES=1;
//打开串口中断开关 } /*************************************************************************** *名称:timer0() *功能:定时器0中断子程序 ****************************************************************************/ void timer0()interrupt 1
//PWM频率为1/(100us*100)=10KHz {
TH0=0xff; TL0=0xa4;
//对定时器进行数据重装 if(count==speed)
//当count=speed时,各个使能端置0,禁止转动 { EN1A=0;
EN1B=0; EN2A=0; EN2B=0; } count++; if(count==100)
//当count=speed时,各个使能端置1,允许转动 { count=0;
//count的范围在0-100,当count=100时进行数据重装 EN1A=1; EN1B=1; EN2A=1; EN2B=1; } } /*************************************************************************** *名称:tingche() *功能:左前、左后、右前、右后车轮均制动,整车表现为停车状态 ****************************************************************************/ void tingche() {
IN1=0; IN2=0; IN3=0; IN4=0; IN5=0; IN6=0; IN7=0; IN8=0; } /*************************************************************************** *名称:qianjin() *功能:左前、左后、右前、右后车轮均正转,整车表现为前进 ****************************************************************************/ void qianjin() { IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0; speed=30; } /*************************************************************************** *名称:houtui() *功能:左前、左后、右前、右后车轮均反转,整车表现为后退 ****************************************************************************/ void houtui() {
IN1=0; IN2=1; IN3=0; IN4=1; IN5=0; IN6=1; IN7=0; IN8=1; speed=30; } /*************************************************************************** *名称:左转() *功能:左前、左后车轮反转,右前、右后车轮均正转,整车表现为左转 ****************************************************************************/ void zuozhuan() {
IN1=1; IN2=0; IN3=0; IN4=1; IN5=0; IN6=1; IN7=1; IN8=0; speed=25; } /*************************************************************************** *名称:youzhuan() *功能:左前、左后车轮正转,右前、右后车轮均反转,整车表现为右转 ****************************************************************************/ void youzhuan() { IN1=0; IN2=1; IN3=1; IN4=0; IN5=1; IN6=0; IN7=0; IN8=1; speed=25; } /*************************************************************************** *名称:jiasu() *功能:使小车的运动速度加快 ****************************************************************************/ void jiasu() { speed=speed+5;
if(speed>90)
{speed=90;} } /*************************************************************************** *名称:jiansu() *功能:使小车的运动速度减慢 ****************************************************************************/ void jiansu() { speed=speed-5;
if(speed<20)
{speed=20;} } /*************************************************************************** *名称:main() *功能:程序的循环执行,使小车实现应有的功能 ****************************************************************************/ void main() { init(); speed=30; count=0; EN1A=1; EN1B=1; EN2A=1; EN2B=1; while(1) {
switch(a)
//分析串口传送过来的指令,做出相应的相应
{
case '5': tingche(); break;
case '2': qianjin(); break;
case '8': houtui(); break;
case '4': zuozhuan(); break;
case '6': youzhuan(); break;
case '1': jiasu();break;
case '3': jiansu(); break;
default:break;
}
a=0;
} } /*************************************************************************** *名称:ser() *功能:串口中断子函数,接收传送过来的数据 ****************************************************************************/
void ser() interrupt 4 { RI=0;
//接收中断请求标志位清0 a=SBUF; }
致谢 本次毕业设计和论文在紧张和忙碌中完成了,在这期间,我学到了很多东西。理论和实践得到了充分的发挥。在我的设计过程中,我首先要感谢胡老师。本毕业设计是在胡老师悉心的关怀与指导下完成,在此对胡老师献上最衷心地感谢。胡老师从一开始就对我们严格要求,每星期都会询问我们的毕设进度并了解我们遇到的困难,积极协助我们解决设计过程中的各种难题,并要求我们记录在毕业设计中所作的工作进度及遇到的问题,让我们去发现问题,解决问题。对于一些技术层面的东西加以指导,比如STC89C52RC的工作原理和结构构成,蓝牙模块HC-06的接收方式和安装技巧,供电设备用什么比较合理,是干电池合理,还是蓄电池合理,等等一些列问题。在设计的过程中,由于能力不足和各方面因素所致,设计比较普通,缺乏创意,没有新意,在以后的设计中会慢慢在这方面加以改进,使不足尽量缩小,这就是设计中所面临的问题,不过只是在跨出学校大门的前夕,经历了第一次预考,让我们在走出的学校大门的一刻经受住了最后一次考验。最后,我要再次感谢在毕业设计过程中对我提供过制作电路板等工具的同学和老师,以及在毕业设计中对我进行过指导的所有人。
猜你喜欢
- 2024-01-20 2024年办公室干部在机关主题教育读书班上交流发言(2024年)
- 2024-01-20 2024年在全区主题教育读书班上发言【优秀范文】
- 2024-01-20 (6篇)主题教育读书班学员交流发言摘选汇编【优秀范文】
- 2024-01-19 2024年度有关体育强国专题研讨交流会上发言【精选推荐】
- 2024-01-19 2024年度(8篇)化肥企业在销售领域发言表态材料(精选文档)
- 2024-01-19 2024年度(4篇)少数民族教师语言发声交流发言材料(完整文档)
- 2024-01-19 2024年度(2篇)有关于第二批主题教育研讨交流发言
- 2024-01-19 2024上级领导在公安系统主题教育专题读书班上交流发言
- 2024-01-19 政协领导主题教育研讨发言材料
- 2024-01-18 2024年度主题教育专题研讨发言提纲学习体会【优秀范文】
- 搜索
-
- 党员遵守纪律存在问题及整改措施精选2 06-30
- 违规吃喝专项治理谈话会发言(完整) 10-29
- 领导干部报告个人有关事项“两项规定” 03-10
- 纪委书记2019年民主生活会四个方面问题 04-14
- 学习二十大精神发言材料2篇 05-12
- 以会议落实会议、以文件落实文件等形式 12-04
- 采购工作存在的问题及整改措施 06-02
- 学习贯彻习近平总书记2020年教师节重要 09-14
- 提高政治能力思考感悟心得体会 11-16
- 领导班子成员履职情况【领导班子履职情 12-14
- 网站分类
-
- 标签列表
-