基于GPRS无线发射模块的51单片机智能小车设计.docx
- 文档编号:8655011
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:31
- 大小:1.23MB
基于GPRS无线发射模块的51单片机智能小车设计.docx
《基于GPRS无线发射模块的51单片机智能小车设计.docx》由会员分享,可在线阅读,更多相关《基于GPRS无线发射模块的51单片机智能小车设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于GPRS无线发射模块的51单片机智能小车设计
目录
1.概述2
2.系统原理2
2.1底盘的选择2
2.2电机的选择3
2.3电机驱动模块4
2.4红外循迹模块7
2.5超声波测距模块9
2.6GPRS模块10
2.6.1LQ1000GPRSDTU概述10
2.6.2使用方式11
3.硬件系统设计11
3.1单片机选择11
3.1.180C51单片机硬件结构12
3.1.2最小应用系统设计13
3.2电路设计16
3.2.1电机安装与驱动16
3.2.2红外循迹模块16
3.2.3超声波测距模块16
3.2.4DTU无线控制模块17
3.3小车的控制18
4.软件系统设计20
5.心得与体会21
6.附录22
1.概述
自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域,其涉及到多个学科,机械、电工、自动控制、计算机测量、人工智能、传感技术等等,是众多领域的高科技。
近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
而智能小车比赛就是机器人技术的一个重要研究方向。
智能小车作为机器人的典型代表,可以分为三大组成部分:
传感器检测部分、执行部分、CPU。
在本次课程设计中,我所制作的智能小车要实现自动避障功能,还拥有扩展循迹等功能,感知导引线和障碍物。
基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。
智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进。
CPU使用STC89C51单片机,配合软件编程实现。
而本次课程设计所制作的小车,其与众不同的地方在于全部使用上位机通过无线模块对其进行控制,小车本身不具备任何输入设备。
小车可以工作在三种模式下,超声波测距模式,红外循迹模式以及无线控制模式。
在无线控制模块下可以远距离对其进行前后左右停的操作。
除此之外,还可以实现手机对小车的状态控制。
2.系统原理
该智能小车模型是一辆由PCB和车体拼装的小车。
所有的机械结构和零部件都安装固定在电路板上,除几个特殊模块是由自己手动焊之外,其余是买回的封装好的模块。
其稳定性更高。
2.1底盘的选择
底盘的作用在于固定电机,并安置其他模块。
根据个人喜好,可以选择4轮的和2轮+万向轮式的。
我选择的是4轮驱动小车。
2.2电机的选择
图2.1直流减速电机
右图为小车使用的直流减速电机,减速比为1:
48,额定电压为3-9V.
当我们在直流电机的两极施加一定的电压后,电机开始匀速转动,如果这时候将电极对调,
原来的正极变负极、负极变正极,那么电机就会反向转动。
小车转弯则是通过左右两侧电机速度不同来控制的。
图2.2直流减速电机参数
下图是典型的“H”桥电路,采用下面这种电路,即可实现上面所说的电极翻转,从而达到电机的正反转。
图2.3“H”桥电路
常态下,4个桥臂的开关保持开路状态,这时候电机两端悬空,没有电压。
当1、4开关闭合,2、3开关打开,电流从1号开关流经电机,再从4号开关流出,这时候电机正转。
当2、3开关闭合,1、4开关打开,电流从2号开关流经电机,再从3号开关流出,这时候电机反转。
通过上面的分析,我们只需要通过控制1、2、3、4号开关的打开与关闭,即可以实现对电机转向的控制。
如果在改变开关的导通时间,即控制pwm占空比,就可以实现对电机转速的调节。
下面我们将要介绍电机驱动模块。
2.3电机驱动模块
图2.4电机驱动模块L298N电路图
L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率增强。
其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,(二相、三相、四相)步进电机,伺服电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。
当驱动直流电机时,可以直接控制两路电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。
本模块具有体积小,控制方便的特点。
具体使用方法:
板上的EN1与EN2为高电平时有效,只有当EN1与EN2为高电平时,电机才旋转,则电机不转,这里的电平指的是TTL电平。
EN1为IN1和IN2的使能端,EN2为IN3和IN4的使能端。
当EN1=1,IN1=1INT2=0时电机1正转,EN1=1,IN1=0IN2=1电机1反转。
同理,当EN2=1,IN3=1IN4=0电机2正转,EN2=1,IN3=0IN4=1电机2反转。
A-、B-接电机1,C-、D-接电机2。
图2.5L298N实物图
下面,我们将要研究L289N的供电问题,L298N的输出电压跟供电电压是有关系的:
经过实验我们发现,输入多少V,输出就差不多是多少V(略有损耗)。
由原理图我们知道,L298N供电方式有两种。
方式一,由于L298N的逻辑控制电压是5V的,所以可以为它提供5V电源。
方式二,用12V铅蓄电池为其供电,A通道和B通道输出的是驱动电机的12V电压,同时选择板载5V使能,这时+5V供电端可以输出5V电压(此时不能再给+5V供电端加电压了,否则会烧掉78M05),向外供电,以方便外部的控制电路使用。
图2.6L298N工作方式
2.4红外循迹模块
此模块是为智能小车,机器人等自动化机械装置提供一种多用途的红外线探测系统的解决方案。
该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~60cm,工作电压为3.3V-5V。
该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
下面我们来了解一下此模块的具体介绍,其中,每1路的传感器的红外发射管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的TTL输出为高电平,相应指示二极管一直处于熄灭状态;当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管导通,此时模块的TTL输出端为低电平,指示二极管被点亮。
图2.7红外循迹模块实物图
下面是接法说明:
图2.8红外循迹模块引脚介绍
模块接线说明:
1.DO1---1路TTL电平输出
2.DO2---2路TTL电平输出
3.DO3---3路TTL电平输出
4.DO4---4路TTL电平输出
5.GND---接电源负极
6.VCC---接电源正极
2.5超声波测距模块
图2.9超声波模块实物图
其工作原理如下:
控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。
一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。
如此不断的周期测,就可以达到你移动测量的值了。
(1)采用IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是
(4)超声波从发射到返回的时间.
测试距离=(高电平时间*声速(340M/S/2;
超声波时序图如下:
图2.10超声波时序图
其接口定义如下:
Vcc、Trig(控制端)、Echo(接收端)、Gnd
2.6GPRS模块
此模块是本课程设计重点,也是相对于以往智能小车创新之处。
在本课程设计中,我们使用了灵旗通信的LQ1000GPRSDTU通信模块。
图2.11LQ1000GPRSDTU实物图
2.6.1LQ1000GPRSDTU概述
LQ1000GPRSDTU采用了先进的GPRS无线通信技术、嵌入式单片机技术和TCP/IP网络通信技术,其稳定性强、可靠性高、实时性好、应用性广、功能强大,是一种实现串口设备数据通过无线透传到中心软件的有力设备。
LQ1000GPRSDTU提供标准RS232/485数据接口,可以方便的连接RTU、PLC、串口仪表、工控机等设备,仅需一次性完成初始化配置,用户设备就可以与数据中心通过GPRS无线网络建立连接,实现数据的全透明传输。
2.6.2使用方式
安装SIM卡
将SIM卡从DTU的外壳背面的插槽中插入,SIM卡座插入插槽后需要卡紧,以防SIM未插入到位导致终端通信异常。
然后用螺丝锁紧插槽外的挡板。
目前在中国大陆地区的中国移动和中国联通的手机卡都可以使用。
在其他国家或地区的GPRS网络的手机卡也可以使用。
DTU一共有四种应用方式
图2.12LQ1000GPRSDTU应用方案
我们所应用的是第一种方案,只不过稍稍做些改动,进行DTU与中心软件进行通信。
3.硬件系统设计
3.1单片机选择
一个单片机应用系统的硬件电路设计包含有两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/记数器﹑中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。
二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器﹑打印机﹑A/D﹑D/A转换器等,要设计合适的接口电路。
3.1.180C51单片机硬件结构
80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
1)微处理器
该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。
2)数据存储器
片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。
3)程序存储器
由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。
4)中断系统
具有5个中断源,2级中断优先权。
5)定时器/计数器
片内有2个16位的定时器/计数器,具有四种工作方式。
6)串行口
1个全双工的串行口,具有四种工作方式。
可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。
7)P1口、P2口、P3口、P4口
为4个并行8位I/O口。
8)特殊功能寄存器
共有21个,用于对片内的个功能的部件进行管理、控制、监视。
实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。
特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。
1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。
MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。
3.1.2最小应用系统设计
80C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
在本次课程设计中,我使用的便是51单片机最小系统。
用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图80C51单片机最小系统所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
有可供用户使用的大量I/O口线。
内部存储器容量有限。
图3.180C51单片机最小系统
应用系统开发具有特殊性。
1、时钟电路
80C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。
80C51单片机的时钟产生方法有两种。
内部时钟方式和外部时钟方式。
本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。
本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。
振荡晶体可在1.2MHZ到12MHZ之间选择。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度
有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。
所以本设计中,振荡晶体选择6MHZ,电容选择65pF。
在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。
为了提高温度稳定性,应采用NPO电容。
2、复位电路
80C51的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
时钟频率用6MHZ时C取22uF,R取1KΩ。
除了上电复位外,有时还需要按键手动复位。
本设计就是用的按键手动复位。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。
按键手动复位电路见图3.2。
时钟频率选
用6MHZ时,C取22uF,Rs取200Ω,RK取1KΩ。
图3.280C51复位电路
3.2电路设计
选好单片机后,我们将各个模块逐个进行调试。
3.2.1电机安装与驱动
将四个电机安装在小车底盘上,并固定好,然后将电机与L298N模块相连,通过以上的介绍,我们可以知道,如果是做两轮驱动,需要一个L298N,4轮驱动需要用2个L298N。
其中,一个控制左上,右上,一个控制左下,右下。
我们分别将其编号为1号和2号。
1号L298N的in1in2控制右上,in3in4控制左上。
2号L298N的in1in2控制左下,in3in4控制右下。
我们用P0^0~P0^3控制L298N输入,这样,两个l298n需要8个输入,即占用单片机的8个端口,在实验的过程中,我们发现,左上左下的电机是同步的,右上右下电机是同步的。
因此说,1号L298N的in1in2和2号L298N的in3in4是相同的控制信号,1号L298N的in3in4和2号L298N的in1in2是相同的控制信号,我们自己焊了一个板子,具有三排排针,然后对应的引脚短路,其中一排连接单片机的引脚,另外两排分别连接1号L298N和2号L298N。
这样,我们就节省了四个单片机的IO输出。
IN1/IN2
IN3/IN4
1
右上
左上
2
左下
右下
图3.3L298N引脚控制
在此模块中,我们采用第一种供电方式,即直接用单片机供电。
3.2.2红外循迹模块
我们将红外循迹模块的D0~D3与单片机的P0^4~P0^7口相连。
用来检测数据的输出,是否检测到障碍物,当检测到障碍物,会输出低电平。
3.2.3超声波测距模块
将Echo与P1^1相连,Trig与P1^2相连。
3.2.4DTU无线控制模块
首先,对DTU进行设置。
使用串口线将DTU与电脑相连,打开设备管理器,查看所用端口。
然后打开LQ1000GPRSDTU参数配置与服务端软件。
图3.4LQ1000GPRSDTU参数配置
打开串口,进入设置,然后是终端参数联网设置。
其接入中心IP设置为所在网络IP地址。
点击设置按钮。
图3.5LQ1000GPRSDTU终端参数联网设置
返回LQ1000GPRSDTU参数配置与服务端软件。
点击退出设置。
以上是DTU设置过程。
3.3小车的控制
本课程设计,集成了三个模块,红外循迹,超声波测距与无线通信模块,因此此智能小车可以工作在三种工作方式下。
默认为无线控制模块。
三种工作模式的选择都是通过DTU无线模块进行控制。
选择不同的模式,将给单片机发送不同的指令。
如下图是自己编写的上位机程序,右下角部分是控制面板。
图3.6LQ1000GPRSDTU上位机程序
当我们选择超声波测距模式时,小车会进行超声波测距,并适时根据距离障碍物的距离进行运动方式的调整,我们将阈值设置为15,当距离小于15cm时,小车的运动状态为先后退0.8秒后向右运动0.8秒。
当小车工作在红外循迹模块时,小车会按照地面上的黑线前进,及时调整方向。
当小车工作在无线模式下,我们可以控制小车5种运动状态,前后左右停。
除此之外,小车还可以由手机控制其运动状态。
下面介绍手机控制小车运动过程。
如下图是手机控制小车运动的APP。
图3.7手机控制小车运动APP
首先输入DTU所在网络IP地址。
点击连接。
下面即可对小车的运动状态进行控制。
4.软件系统设计
图4智能小车系统程序框图
其中,软件程序包括三部分。
第一部分,51单片机程序编写,将各个模块模块化到一起,控制小车工作在各个模式。
如上图所示是智能小车的系统程序框图。
主要处理流程包括初始化、判断等。
初始化主要设定处理的各项外设,如时钟、定时器、IO输入输出、SPI、UART、DMA等等。
第二部分,上位机程序的编写。
由C++的MFC程序。
编写了控制小车运动的控制面板。
第三部分,手机App编写。
这部分是求教于实验室的师兄帮助编写完成的。
5.心得与体会
经过半个学期的努力,终于顺利的完成了基于GPRS无线发射模块的51单片机智能小车设计,可以实现用上位机控制小车工作在不同的工作模式下,或者是利用手机APP控制小车的运动状态。
在制作的过程中,遇到了许多问题,并不断去解决,学习到了许多知识。
首先对于单片机的基础知识有了一定的了解,更加深入的了解了定时器,中断的使用。
除此之外,学习了GPRS模块,可以完成远距离无线控制。
软件方面,进一步学习了程序的模块化,使得程序更加简洁。
另外,学习了c++编程,编写了上位机MFC程序。
十分具有成就感。
存在的问题,因为在整个过程中将重点放在无线模块的调试,对于超声波与红外循迹模块没有过多的投入,导致成果检测的时候发现超声波测距模块硬件出现问题,导致效果不稳定。
对于红外循迹模块,最初小车的速度过快,当循迹转弯的时候小车来不及反应,所以看起来不够灵敏,因此降低占空比,降低小车的速度可以很好的解决这个问题。
整体来说,虽然任务大体完成,单仍然存在许多可以改进的地方。
例如小车的速度不能实时的控制,距离可以返回给上位机但是不能显示在小车上,因此说另外可以添加显示模块,对速度距离进行实时的显示。
对于超声波和红外效果也可以进一步进行改进。
另外还可以集成摄像头模块等。
此次的课程设计不仅教会了我专业知识,更加让我明白了要想学到东西要亲自动手这个道理,一个部分一个部分的完成,一个问题一个问题的解决。
将各个部分整合到一起,软件与硬件是分不开的。
遇到问题也要不骄不躁,认真学习进而解决问题。
6.附录
Main.c
/*--------------------------------------------------
P0.1-P0.4用于电机控制
中断用来接收数据
--------------------------------------------------------*/
#include
#include
#include
#include"delay.h"
#include"move.h"
#include"chuankou.h"
#include"hongwai.h"
#include"UltrasonicDistanceDriver.h"
#include"UltrasonicDistanceConfig.h"
//#include""
//unsignedchartemp;
bitrec=0,send=1;
//#include""
main()
{
charpcOutBuf[30];//串口返回超声波测距字符串缓存
unsignedintiOld=0;//超声波测得的距离
unsignedintcontrol_flag;
InitUART();
while
(1)
{
control_flag=get_control_flag();
if(control_flag==1)
{
send_byte(temp);
while(control_flag==1)
{
InitUltrasonicDistance();
//当调用测距函数后,返回为0,表示测距成功,否则测距函数正在延迟中
//当取值有效时,如果与前次值没变化,则不作更新
iOld=getDistance();
//sprintf(pcOutBuf,"S=%d\r\n",iOld);
//SerialSendStr(pcOutBuf);//送到串口
if(iOld<30)
{
stop_car();
delay1ms(10);
back();
delay1ms(1000);
delay1ms(1000);
stop_car();
delay1ms(10);
turn_right();//右边不转左边转int1,2控制右侧
delay1ms(1000);
delay1ms(1000);
}
else
{
straight();
}
}
}
elseif(control_flag==2)
{
hongwai();
//P0=0XF0;
send_byte(temp);
}
elseif(control_flag==3)
{
//state='W';
while(temp!
='I'&&temp!
='U')
{
send_byte(temp);
if(temp=='Q')
{
stop_car();
delay1ms(5);
straight();
delay1ms(100);
delay1ms(100);
}
elseif(temp=='H')
{
stop_car();
delay1ms(5);
back();
delay1ms(100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 GPRS 无线 发射 模块 51 单片机 智能 小车 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)