基于STM32的AGV遥控器的设计与实现_第1页
基于STM32的AGV遥控器的设计与实现_第2页
基于STM32的AGV遥控器的设计与实现_第3页
基于STM32的AGV遥控器的设计与实现_第4页
基于STM32的AGV遥控器的设计与实现_第5页
免费预览已结束,剩余47页可下载查看

下载本文档

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

文档简介

毕业设计(论文)题目 基于STM32的AGV遥控器的设计与实现 专 业 测控技术与仪器 基于STM32的AGV遥控器的设计与实现摘要近年来,随着物流系统的迅速发展, 自动导引运输车(AGV)已经发展成为生产物流系统中最大的专业分支之一,并出现产业化发展的趋势。但是传统意义上的AGV有着行驶路线固定、运动模式单一的特点,并不能很好地适应复杂环境。随着人们对此现象的不断重视,越来越多的优化方案被提出,其中为AGV设计遥控平台就是一个典型的例子。本课题研究基于STM32的AGV遥控器,控制对象主要包括两辆两轮AGV、两辆四轮AGV、两辆八轮AGV。系统选择12V锂电池作为遥控器外部电源,分别接收三维摇杆X,Y,Z三轴的信号,在进行滤波处理后,通过串口WiFi模块ESP8266将控制信号传递给AGV,从而达到远程遥控的目的。这样不仅保证了数据传输的稳定,而且还一定程度上扩大了遥控距离。为了实现更好的人机交互,系统通过串口触摸屏设计了简单直观的UI界面,通过触摸其上的控件可以实现包括AGV选型、升降平台控制在内的多项功能。通过调试与改进,本课题设计的AGV遥控器实现了对AGV运动的远程控制,通信稳定可靠且车辆在运行过程中反应及时,控速良好,具有较好的动态性能。关键词:STM32 AGV 遥控器 ESP8266 三维摇杆 串口触摸屏Design and Implementation of AGV Remote Controller Based on STM32AbstractIn recent years, along with the rapid development of logistics system, automated guided vehicle (AGV) has developed into one of the largest professional branches of production logistics system, and the trend of industrialization is developing. However, the traditional AGV has the characteristics of a fixed route and a single mode of movement, and it can not adapt well to the complex environment. As people pay more attention to this phenomenon, more and more optimization schemes have been put forward, in which the design of remote control platform for AGV is a typical example.This topic studies the AGV remote control based on STM32. The control object mainly includes two two wheeled AGV, two four wheel AGV, two eight wheel AGV. The system chooses 12V lithium battery as external power, and receives signals of three dimensional rocker X, Y and Z axis respectively. After filtering, the control signal is transmitted to AGV through serial port WiFi module, so as to achieve the purpose of remote control. This not only ensures the stability of data transmission, but also extends the remote control distance to a certain extent. In order to achieve better man-machine interaction, the system has designed a simple and intuitive UI interface through the touch screen of the serial port. By touching the controls on it, we can achieve many functions including AGV selection and lifting platform control.Through debugging and improvement, the AGV remote controller designed by this project achieves remote control of AGV movement. The communication is stable and reliable, and the vehicle has better dynamic performance for its timely response and well-control speed.Key words: STM32 ; AGV ; Remote control ; ESP8266 ; 3D rocker ; Serial touch scree19目 录第1章 绪论11.1 AGV远程控制研究背景及意义11.2 AGV远程控制研究现状11.3 AGV种类介绍21.4课题设计目标及要求21.5论文章节安排2第2章 系统总体设计方案42.1系统架构分析42.2系统方案分析42.2.1 三维摇杆信号建模42.2.2 AGV运动原理52.2.3 无线通信平台搭建6第3章 系统硬件电路设计83.1 主控制器模块83.1.1 电源电路83.1.2 复位电路93.1.3 时钟电路93.1.4 SWD接口电路103.1.5 VBAT保护电路103.2 电源转换模块113.2.1稳压芯片选型113.2.2 电路设计123.3 WiFi模块143.4 人机交互模块153.5 三维摇杆信号采集模块163.6 蜂鸣器模块16第4章 系统软件设计184.1 系统总体软件流程184.2中断程序设计194.2.1 定时器中断程序设计194.2.2 NVIC中断优先级配置194.3三维摇杆及电池电压检测程序设计204.3.1 AD采样原理204.3.2 ADC驱动配置214.3.3 信号滤波处理214.4串口触摸屏程序设计224.4.1 串口触摸屏UI设计234.4.2串口触摸屏与单片机通信程序设计244.5 WiFi通信程序设计244.5.1 WiFi通信协议选择244.5.2 WiFi模块的工作要素配置254.5.3 主控芯片与WiFi模块的串口通信264.5.4 无线通信差错检测274.5.5 遥控器与AGV的无线通信30第五章 调试与分析315.1 WiFi模块通信调试315.2 串口触摸屏通信调试33第六章 总结与展望356.1 总结356.2展望35参考文献36附录37附录1 系统硬件电路原理图和PCB图37附录2 系统实物图40附录3 部分核心源代码41致谢45 毕业设计(论文)第1章 绪论1.1 AGV远程控制研究背景及意义近年来,智能制造热潮席卷神州大地,成为推进“中国智造2025”国家战略最重要的举措。其中智能工厂(Smart Factory)成为智能制造重要的实践领域,引起制造企业的广泛关注。对制造业转型升级,往自动化、智能化、柔性化发展已是大势所趋。而AGV在制造业转型升级中应用非常普遍,怎样高效高能的提高AGV的工作效率是转型智能化生产的重要组成部分。AGV(Automatic Guided Vehicle)自动引导运输车装备电磁或光学自动引导装置,能够沿着规定的引导路径行驶以及具有移动负载功能的运输车,以其可靠性好、运输效率高等特点备受企业青睐。然而当前大部分企业对AGV的使用仍停留在单一模式的自动引导下,未能将其柔性程度高、适应性好的优点体现出来,无形之间降低了AGV的工作效率。因此设计出能够使AGV灵活工作在不同应用场景下以提高工作效率的方案不仅是外部大环境所驱使,亦是AGV自身进行改良的必经之路。通过各式设备对AGV进行远程控制是当下使用最为广泛的方法,其成本低廉,运行可靠,而且能在不更改外界硬件条件下,仅通过软件方面的变动即可实现对AGV的任意调动。1.2 AGV远程控制研究现状当前,在工业4.0、工业互联网、物联网、云计算等热潮下,全球众多优秀企业都对AGV这一智能化生产重要组成部分的远程控制系统进行了优化,其中最具代表性的方案主要有两个:(1)AGV物流上位调度系统:属于整个系统的固定设备,通过电脑终端的上位机软件对AGV进行各种应用需求下的调度,主要工作包括任务分配、车辆调度以及路线管理等,确保设备能合理、规范的运行。如果运输设备在运输的过程中线路指向不明确,控制系统会自动调整,为设备指明正确的运输线路,确保运输过程的精准。(2)AGV车载控制系统:主要是负责接收指令,实现装卸操作等功能。在设备运输过程中,需要对货物不间断的装卸,而设备在装卸的过程中需要接受到指令,才能实现运输。以上两个方案虽然看似风格不同,但是究其本质不难看出,AGV远程控制正在朝着实时通讯、人工可介入的大方向发展。目前AGV远程控制系统的目标就是要做到“人车合一”,通过各式各样的载体将人的意识传达给AGV,从而使AGV能够高效率地在各种复杂环境中工作。1.3 AGV种类介绍通常情况下,AGV按驱动方式可分为:单轮驱动、差速驱动以及全方向驱动三种类型。目前,我学院单片机综合实训室的AGV包括两辆两轮AGV,两辆四轮AGV以及两辆八轮AGV,它们分别对应着后两种驱动方式。两轮AGV,顾名思义仅有两个驱动轮,当两车轮速度相同时,AGV前后运动;两轮速度不相同时,AGV转向运动。四轮AGV,即在实现两轮AGV功能的基础上,同时因其车轮为特殊的Mecanum轮,因此在一定的条件下可以进行横向运动。八轮AGV与四轮类似,但为了更大的载重量,每个角上的Mecanum轮数目是四轮AGV的两倍。此外,四轮AGV上还搭载了升降平台,以满足高处货物的摆放需求。1.4课题设计目标及要求根据AGV远程控制要求以及我院AGV产品种类的实际情况,本课题的主要目标是针对两轮、四轮、八轮这三种AGV设计无线遥控器。一个遥控器平台对应多辆AGV,但在同一时间只能选择其中一辆进行远程操控。在遥控器的人机交互界面上提供自动模式和手动模式两种控制方式供用户选择。此外,遥控器系统可以选择需要进行控制的车辆并实现对四轮AGV上的升降台进行控制。结合以上目标,本课题设计要求主要包括:1) 设计稳定可靠的硬件电路,主要包括电源模块、单片机最小系统、三维摇杆信号检测模块、WiFi通信模块、人机交互模块等。2) WiFi通信稳定,数据高质量传输。3) 设计直观易操作的触摸屏界面,并实现单片机对触摸屏各种指令的应答。1.5论文章节安排第1章:绪论。介绍本课题制作的无线遥控器的研究背景和意义及AGV远程控制的研究现状,阐述本课题的设计目标和要求。第2章:系统总体设计方案。介绍本课题的设计要求以及系统设计方案的分析。第3章:系统硬件电路设计。介绍遥控器硬件系统的组成,包括STM32主控制器模块、电源转换模块、WiFi模块、人机交互模块、三维摇杆信号采集模块、蜂鸣器模块。第4章:软件程序设计。首先简要梳理了遥控器的软件设计思路,之后结合实际功能重点阐述了应用层的软件设计。第5章:调试与分析。首先着重分析了一些功能模块的具体调试过程,之后简要阐述遥控器与AGV联合调试情况。第6章:总结与展望。主要是对该课题在研究过程中遇到的问题进行总结,并提出该作品的不足之处以及其他需要改进优化的方面。第2章 系统总体设计方案2.1系统架构分析根据系统设计的要求,AGV遥控器采用“意法半导体”公司生产的32位微控制器STM32F103CBT6作为主控制器。主控制器通过ADC(Analog-to-Digital Converter)将来自三维摇杆电位器的模拟信号转换为数字信号后进行滤波,以此为依据,传递给AGV不同运动方向的控制信息,从而实现对AGV的行驶控制。通过单片机发送相应指令集与串口触摸屏通信,完成对控制车辆选型及升降平台的控制。此外,使用串口WiFi模块ESP8266与AGV建立联系,将指令快速完整地传递给AGV。系统整体架构如图2.1所示。图2.1 系统整体架构图2.2系统方案分析2.2.1 三维摇杆信号建模 图2.2三维摇杆工作原理图三维摇杆的工作原理如图2.2所示,它实际上是由三个电位器构成的,摇杆的X,Y,Z轴分别对应一个电位器。但是当摇杆摇动时单片机无法直接读取电位器的阻值,因此采用等效替代的思想,给电位器的两端加上单片机的AD参考电压,然后将电位器的滑片接到ADC输入引脚。这样就可以通过读取电位器的电压变化来间接的体现摇杆摇动的方向及大小。前文提到我院的AGV分为两轮AGV、四轮AGV、八轮AGV三种。两轮AGV主要有前后、旋转两种运动模式,四轮和八轮AGV有前后、左右、旋转三种运动模式。而三维摇杆能够同时输出三路信号,将这三路信号与三种模式一一对应,即可通过摇杆实现对这三种AGV的运动控制。经过实际测量,三维摇杆Z轴转动时,X,Y轴没有信号输出,所以本设计选择将Z轴信号单独处理,对X,Y轴信号联合分析处理。如图2.3为摇杆X,Y轴矢量模型图,横轴对应三维摇杆的X轴,纵轴对应Y轴,坐标原点为AD中值。当三维摇杆沿向量OA方向摇动时,X,Y轴上各有一个分量x,y,遥控平台就是根据x,y的大小来判断当前摇杆摇动的方向和大小。 图2.3摇杆X,Y轴矢量模型图2.2.2 AGV运动原理四轮、八轮AGV与两轮AGV不同,能够实现全向运动,这主要依赖于Mecanum轮。Mecanum轮这一设计方法是由瑞典人BengtIlon在1973年设计的。Mecanum轮轮体的圆周分布了许多鼓形小辊子。这些辊子的外廓线与轮子的理论圆周相重合,并且辊子能自由旋转,辊子的轴线与轮的轴线通常成45角。每个轮子具有3个自由度,第一个是绕轮子轴心转动,第二个是绕滚子轴心转动,第三个是绕轮子和地面的接触点转动。当Mecanum轮运动时每个轮子可以产生两个方向的力,而AGV车每条对角线上的轮子安装方向是相同的,因此AGV在运动时受到四种力,合力是由这四种力合成得到的。遥控器所做的工作就是将三维摇杆建模后的信号与AGV运动模型结合起来,X,Y轴共同控制AGV任意方向的平动,Z轴控制AGV在原地进行旋转。Mecanum的实物如图2.4所示: 图2.4 Mecanum实物图2.2.3 无线通信平台搭建近几十年来,无线蜂窝电话通信技术随着科研水平的提升飞速发展,对于移动通信的这种需要同时也反应到计算机网络中。如果说,互联网在过去二十多年是PC互联网,那么现在就可以说应当是移动互联网了。在这样的大环境下,结合无线局域网覆盖面广、数据传输速率快、安全性高的特点,本设计选择使用WiFi模块ESP8266与AGV进行通信。该模块支持标准的IEEE802.11b/g/n协议,完整的TCP/IP协议栈,传输距离可达10m。ESP8266是一个完整且自成体系的WiFi网络解决方案,能独立运行,也可以作为从机搭载于其他主机MCU运行。ESP8266在搭载应用并作为设备中唯一的应用处理器时,能够直接从外界闪存中启动。另一种情况下,ESP8266负责无线上网接入承担WiFi适配器的任务时,可以将其添加到任何基于微控制器的设计中,只需要通过SPI/SDIO接口或I2C/UART接口即可。本课题选择ESP8266工作在第二种方式。ESP8266 WiFi模块工作时可以分为三种模式,分别为AP MODE、STATION MODE以及AP MODE & STATION MODE,AP是无线发射端,STATION是接收端,两种模式组建成一个无线局域网。AP MODE通用应用在无线局域网成员设备(即客户端)的加入,即网络下行。它提供以无线方式组建无线局域网WLAN,相当于WLAN的中心设备。STATION MODE,即工作站模式,也可以理解为某个网格中的一个工作站即客户端。当一个WIFI芯片提供这个功能时,它就可以连到另外的一个网络当中,如家用路由器就是这种。AP MODE & STATION MODE则是两种模式同时存在,同时工作。分析以上三种模式,结合本课题的设计目标以及实际应用场景,最终选择WiFi模块工作在Station模式。遥控器上的ESP8266模块与AGV上的模块同时连接无线路由器网络并借助其进行数据通信。WiFi模块的运行模式如图2.5所示。图2.5 WiFi模块运行模式第3章 系统硬件电路设计根据第2章对系统总体方案的分析,本章将对相应的硬件电路做出分析。硬件电路的设计要求是做到简洁、高效、稳定、可靠,各部分都要做好隔离、滤波等工作。系统硬件电路主要由以下几个部分组成,包括STM32主控制器模块、电源转换模块、ADC采集模块、串口通信模块等。3.1 主控制器模块本系统采用意法半导体公司的STM32作为主控芯片。单片机是整个系统的核心,所以单片机最小系统电路的设计必须要稳定可靠,这样才能保证整个系统的正常工作。意法半导体公司的STM32 F1系列主流MCU涵盖了工业,医疗和消费市场各种应用的需求。系统中单片机的型号是STM32F103CBT6,该型号单片机有128K字节的FLASH和20K字节的SRAM。STM32主控制器模块即STM32最小系统,其包括电源电路、复位电路、时钟电路以及SWD接口,这些信号分别与STM32上相应的引脚相连。STM32主控制器硬件电路如图3.1所示。图3.1 STM32主控制器硬件电路3.1.1 电源电路电源附近的电容皆为旁路电容,能够抑制电源线路上的高频噪声减小输入电源的纹波。如图3.2所示,STM32单片机每个电源引脚附近的电容为去耦电容,用于抑制STM32工作时引起的“地弹”噪声,确保电源稳定。图3.2 STM32电源电路3.1.2 复位电路STM32单片机引脚中的RESET引脚为复位引脚,输入低电平有效。本设计的复位电路由电阻电容按键以及3.3V的电源组成,即利用电容充放电原理实现复位电路的设计。3.3V电源上电后,电容C3开始充电,RESET引脚处于高电平。当按下按键,电容C3开始放电,RESET引脚处于低电平,单片机复位。复位电路如图3.3所示。 图3.3复位电路图3.1.3 时钟电路STM32单片机高速外部时钟使用一个8MHz晶振产生,通过PLL锁相环,系统的工作频率可以达到72MHZ。时钟电路如图3.4所示,C1,C2为22pf匹配电容,作用是协助起振与稳定振荡。在实际应用中,其须尽可能地靠近晶振的引脚,以减小输出失真和启动时的稳定时间。无源晶振通过OSC_IN和OSC_OUT引脚向单片机提供时钟源。图3.4 时钟电路众所周知,导线在切割磁力线的时候会产生电流,导线越长,产生的电流越强。现实中,磁力线不常见,电磁波却到处都是,例如:无线广播发射、手机通讯等。晶振和IC之间的连线就变成了接收天线,它越长,接收的信号就越强,产生的电能量就越强,直到接收到的电信号强度超过或接近晶振产生的信号强度时,IC内的放大电路输出的将不再是固定频率的方波了,而是乱七八糟的信号,导致数字电路无法同步工作而出错。因此晶振的PCB走线需要进行特殊处理,不能允许信号线靠近OSC_IN,OSC_OUT引脚,在晶振引脚周围使用接地保护环,俗称“型滤波”。晶振的PCB走线如图3.5所示。图3.5 晶振PCB走线3.1.4 SWD接口电路SWD(Serial Wire Debug)协议,故名思议,串行总线调试接口,ARM内核调试器的一种通信协议。ST的单片机STM32F103系列的调试端口可以是JTAG或者是SWD的端口。相较于JTAG,SWD有着以下两点优势:1)仅需要4根线与目标MCU相连,VCC,SWDIO,SWDCLK和GND。VCC接3.3V电源,SWDIO为双向Data口,主机到目标的数据传送。SWDCLK为时钟口,主机驱动。GND接地。2)SWD 模式比 JTAG 在高速模式下面更加可靠。在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。本设计使用的STM32有三种不同的启动模式,分别为:内置flash、SRAM、系统存储器。在每个STM32芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行:BOOT1=x BOOT0=0 从用户闪存启动,正常的工作模式。BOOT1=0 BOOT0=1 从系统存储器启动。BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。基于以上分析,在使用SWD下载模式时,需要将单片机的BOOT0和BOOT1引脚通过下拉电阻接地。SWD接口电路如图3.6所示。图3.6 SWD接口电路3.1.5 VBAT保护电路 STM32的VBAT引脚作用是在VDD断电时为备份寄存器及RTC供电。本设计并不需要备份以及RTC功能,故必须将VBAT连接到VDD引脚上。而在VDD上升阶段或者探测到PDR(掉电复位)后,VBAT和VDD之间的电源开关仍会保持连接在VBAT,如果VDD在较短时间内未达到稳定状态,电流可能通过VDD和VBAT内部的二极管注入到VBAT,因此需要在VBAT和电源之间连接一个低压降二极管。VBAT保护电路如图3.7所示,1N5819为肖特基二极管,正向导通压降仅为0.2V,保证电流在VBAT和VDD之间单向流通,C7为100nf陶瓷电容,滤除电源噪声干扰。图3.7 VBAT保护电路3.2 电源转换模块根据系统各个模块所需的工作电压,电源转换模块需要输出5V、3.3V稳定且功率足够的电压。系统的电源转换框图如图3.8所示。图3.8 电源转换框图3.2.1稳压芯片选型整个系统的总电源是12V锂聚合物电池。在本设计中,串口触摸屏和ESP8266 WiFi模块的工作电流相对较大,因此稳压芯片以这两个模块为核心,然后结合其他模块进行选取。3.3V电源的主要是为WiFi模块和主控制器模块供电,ESP8266上电后,RF自校准需要大电流,模拟电路和数字电路合起来需要500mA的电流,正常工作时,平均电流在100mA左右;单片机部分的工作电流不会超过100mA。以SOT-223为封装形式的LDO稳压芯片AMS117-3.3输出电压3.3V,输出电流可以达到800mA,足够所有以3.3V为电源的模块电路的使用。5V电源除了有串口触摸屏的消耗,还要考虑到后级3.3V电源转换部分的需求。而仅串口触摸屏的工作电流就达到了400mA,普通的LDO稳压芯片很难承如此大的功率需求,因此本设计选择使用LM2596-5.0输出5V电源。LM2596系列是德州仪器(TI)生产的降压开关型集成稳压芯片,它内含固定频率振荡器(150KHZ)和基准稳压器(1.23V),并具有完善的保护电路、电流限制、热关断电路等。利用该器件只需极少的外围器件便可构成高效稳压电路且最高能够输出3A的驱动电流,完全能够满足本设计要求。3.2.2 电路设计如图3.9所示为锂电池12V电源输入电路,其主要作用是对防止锂电池正负极反接以及对电源电压进行分压,方便后期使用ADC粗略检测电池电量。其中1N4007硅材料整流二极管,利用其单向导电,最高反向耐压1000V的特性防止电池反接。由于STM32单片机的VREF即AD参考电压为3.3V,因此AD引脚的输入电压不能超过3.3V。为了保证电池电量在最大值12.5V时检测电路的电压输入不大于3.3V,设计电阻分压比0.25,R10,R12分别为10K,30K电阻,C21为100nf电容,滤除电源纹波干扰,为后期AD检测做准备。经过实际测量,ADC_BAT引脚上的电压最高不超过3.2V,满足设计要求。由于本设计的电流需求较大,在实际PCB设计过程还要注意对电源正极进行铺铜处理,这样会起到屏蔽作用,此外还要在电源负极附近多打过孔,有助于较好的回流。图3.9 电源输入电路如图3.10所示为LM2596稳压电路。图3.10 5V稳压电路由于LM2596是开关型电源芯片,其纹波电压较大,因此要对其进行特殊的滤波处理。C16,C17分别为470Uf和220Uf的铝电解电容,C18, C19均为100nf陶瓷电容,这四个电容都是为了滤去电源中的交流部分。理论上,电容的交流阻抗公式为1jwc,对于高频信号,容值越大交流阻抗越小,这样更有利于滤掉高频信号,但是在实际中并非如此。这是因为实际的电容由于存在电感效应通常需要等效为一个电容、一个电感和一个电阻串联的形式,如图3.11所示。图3.11 实际电容等效图所以电容的实际阻抗为:RC=Re+jwLe+1jwC =Re+j(wLe-1wC) (式2-1)有上式可知:当 f=w2=12LC (式2-2)时,电容大的实际阻抗最小,此时的频率称为电容的自谐振频率,记为f0。当频率大于f0时,实际电容呈现出容性阻抗;当频率小于f0时,实际电容呈现出感性阻抗。电源滤波主要利用电容的隔直流、通交流的特性,干扰信号的频率越靠近电容的自谐振频率,干扰信号越容易被电容彻底过滤掉。大容值的电容通常具有较大的等效电感,因而其自谐振频率较小,所以比较适合用于滤除低频干扰噪声;小容值的电容通常等效电感较小,因此自谐振频率较大,所以适合用于滤除高频干扰噪声。L1为68uH储能电感,其主要作用如下:1)第一个作用是LM2596的输出端给电感L充电,然后电感L放电给负载供电;2)第二个作用是为LM2596反馈检查端提供回路检测电压,一旦输出端电压波动变化,电压经L后也会波动变化通过至反馈端。实现闭合修正的电路会始终保持输出端电压为5V,电感L是反馈连接器,由于电感可以理解为没有电压降,所以这里使用电感而不使用电阻做反馈连接。1N5825是大电流(5A)肖特基二极管,在5V稳压电路中又称为“续流二极管”。将它以并联的方式接到电感元件两端,并形成回路,使电感产生的高电动势在回路以续电流方式消耗,从而起到保护元件不被感应电压击穿或烧毁的作用。在实际PCB布线中需要注意,电源要先经过大电容再流入小电容,这是因为大电容对安装的PCB电路板上产生的寄生等效串联电感的敏感度小于小电容。同时两种电容尽量靠近IC摆放,否则超过其去耦半径,便会失去去耦作用。H2为发光二极管,R7为限流电阻,二者共同构成了LED驱动电路。在设计LED驱动电路时,应注意LED的压降和正常工作电流。普通贴片发光二极管作指示用时,电流一般为12mA。普通的发光二极管正偏压降:红色为1.6V,黄色为1.4V左右,蓝和白为2.5V左右。如图3.12所示为3.3V稳压电路。使用LDO稳压芯片AMS1117-3.3,C12、C13、C14、C15为滤波电容,能够改善电路瞬态响应和稳定性。H1为发光二极管,作为3.3V电源指示灯,R8为限流电阻。图3.12 3.3V稳压电路3.3 WiFi模块ESP8266模块数字部分的工作电压范围是1.8V3.3V,模拟部分的工作电压是3.0V3.6V,最低2.7V,因此使用AMS1117输出的3.3V对其供电。如表3-1所示,ESP8266模块可以通过控制其引脚电平工作在如下两个模式:表3-1 ESP8266引脚模式模式GPIO15GPIO0GPIO2UART下载模式低低高Flash Boot模式低高高当模块工作在UART下载模式下时,可以使用ESPFlashDownloadTool工具把AT指令集固件下载到WiFi模块中,这样就可以使用AT指令集操作WiFi模块。当模块工作在Flash Boot模式下时,微控制器可以通过串口使用AT指令集控制WiFi模块之间的通信。如图3.13所示为WiFi模块电路,R4、R5、R6均为1K上拉电阻,R9为1K下拉电阻,C20为100nf陶瓷电容,滤除噪声干扰,保证WiFi模块稳定运行。模块的GPIO1和GPIO3分别为TXD和RXD,将它们与STM32的USART相应的RXD、TXD引脚相连即可。本设计还制作了独立的WiFi模块,主要是方便与AGV进行通信以及进行ESP8266的固件下载。图3.13 WiFi模块电路3.4 人机交互模块HMI(Human Machine Interface)即人机交互是利用系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。串口HMI就是封装好HMI的底层功能后,通过串口与用户MCU进行交互,比如MCU可以随时通过USART发指令通知设备切换某个页面或者改变某个组件的属性;设备也可以随时通过USART通知用户MCU页面上的某个组件被触摸,操作直观便捷。如图3.14所示为串口HMI接口电路。本系统使用的串口触摸屏使用由LM2596稳压得到的5V电源供电,HMI_RX、HMI_TX分别与STM32 USART的TXD和RXD相连,实现双向通信。图3.14 串口HMI接口电路3.5 三维摇杆信号采集模块三维摇杆一共有三路信号,故需要使用ADC的三个通道进行采集。如图3.15所示,ADC_X、ADC_Y、ADC_Z分别为三维摇杆的信号输出端,分别将其连接到STM32的ADC对应通道的引脚上。C4、C5、C6均为100nf滤波电容,滤除检测信号中的噪声,方便后期AD数据的处理。图3.15 三维摇杆信号采集电路3.6 蜂鸣器模块本设计还使用了蜂鸣器模块,其主要作用包括:1)提醒用户遥控器与AGV上的WiFi成功建立连接2)遥控器电池电压过低时报警。蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。如图3.16所示,蜂鸣器的正极连接到3.3V电源上,负极连接到NPN型三极管S8050的发射极,三极管的基极经过限流电阻R11与单片机控制引脚相连。当控制引脚输出低电平时,基极没有电流,三极管截止蜂鸣器不发声;当控制引脚输出高电平时,基极有电流流过,三极管导通,蜂鸣器发声。R13为10K电阻,假设BEEP引脚输出3.3V,那么分压点Vb的电压是2.24V,但是这个条件成立的前提是在没有晶体管的情况下,两个电阻分压。一旦接入S8050,be结就会导通, Vb的电位就被箝位在0.7V,不再是两个电阻分压,即4.7K电阻串联了一个正向连接的二极管到地,而10K电阻只是并在二极管上。至于R13的实际作用是在没有输入电压时,保证晶体管可靠截止。图3.16 蜂鸣器模块电路第4章 系统软件设计4.1 系统总体软件流程前两章分别介绍了遥控器平台设计的总体方案和遥控器系统硬件电路的设计与原理分析。而软件是整个系统运行稳定的关键,所以本章会着重介绍系统的软件设计。根据系统设计要求,系统的总体软件流程图如图4.1所示。图4.1 系统总体软件流程图系统程序启动后,先进行系统软件初始化,包括IO口初始化,定时器初始化,ADC初始化,WiFi初始化,USART初始化,中断初始化等等。然后判断遥控器与AGV上的ESP8266模块是否通过无线路由器成功建立连接,若没有则等待,若成功则接收串口触摸屏的指令选择相应的AGV车辆并进行控制模式的选择。如果是自动模式,则AGV进入巡迹模式,遥控器系统不作干涉;若为手动模式,则进行三维摇杆信号的采集及处理,并在到达WiFi通信周期时将信号传输给AGV,以对AGV的运动状态进行控制。4.2中断程序设计4.2.1 定时器中断程序设计本平台与AGV之间的通信建立在WiFi上,这也就意味着从控制信号的输入到主控芯片的处理再到控制信号的输出需要一定的时间。因此,需要调节通信速度以保证传输数据的完整性与准确性,这个功能的实现是通过定时器中断来实现的:当达到设定时间,给定通信开始标志位,传输完成后清除。STM32单片机的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。根据设计要求使用该主控芯片的TIM2实现定时中断功能,其时钟图如图4.2所示。图4.2 TIM2时钟图由图4.2可知,TIM2的外围时钟不是直接来自于APB1,而是来自于输入为APB1的一个倍频器,且这个倍频器的倍频系数底层默认为2 。此时APB1的时钟为36MHz,因此TIM2的外围时钟大小为36MHz2=72MHz。结合以上分析,TIM2设定的时间由TIM_Period(最大计数值)、TIM_Prescaler(分频系数)、TIM_ClockDivision(时钟分割)、TIM_CounterMode(计数模式)等共同决定,因此其计算公式为: Time = (TIMPeriod+1)(TIMPrescaler+1)72MHz (式4-1)TIM2可以设置向上计数、向下计数、向上向下双向计数。向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器内容),然后重新从0开始计数并且产生一个计数器溢出事件。定时器中断程序流程图如下所示。图4.3 定时器中断程序设计流程图194.2.2 NVIC中断优先级配置根据系统设计的要求,本平台共需要使用三个中断,分别为:USART1串口中断、USART3串口中断、TIM2定时器中断,这就要求对系统中断优先级进行合理分配。基于Cortex-M3内核的STM32内部集成了强大且方便的NVIC(Nested Vectored Interrupt Controller)即嵌套向量中断控制器,通过配置该控制器可以简单直接地完成不可屏蔽中断 (NMI)和外部中断优先级的配置。所谓中断嵌套就是指具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。以下就是STM32的NVIC抢占优先级和响应优先级配置表。表4-1 NVIC中断优先级配置表NVIC_PriorityGroupNVIC_IRQPreemptionPriorityNVIC_IRQSubPriorityDescriptionNVIC_PriorityGroup_000-150 bits for pre-emption priority4 bits for subpriorityNVIC_PriorityGroup_10-10-71 bits for pre-emption priority3 bits for subpriorityNVIC_PriorityGroup_20-30-32 bits for pre-emption priority2 bits for subpriorityNVIC_PriorityGroup_30-70-13 bits for pre-emption priority1 bits for subpriorityNVIC_PriorityGroup_40-1504 bits for pre-emption priority0 bits for subpriority经过实际调试,本系统的中断优先组别选择NVIC_PriorityGroup_1,中断优先级依次为:USART1 USART3 TIM2。4.3三维摇杆及电池电压检测程序设计4.3.1 AD采样原理STM32单片机内部自带的ADC为逐次比较型,将被测电压与基准电压进行逐次比较,最终逼近被测电压。即采用一种“对分搜索”的策略,逐步缩小Vx未知范围的办法。逐次比较型A/D转换器框图如图4.4所示:图4.4 逐次比较型A/D转换器框图一般情况下用AD测量电压的计算公式为: U = (data2n)*V (式4-2)其中:U为待测电压 ,data为AD读数 ,n为AD的位数,V为参考电压。本系统采用的单片机内部的参考电压VREF与VDD是连在一起的,则上述式中V为单片机工作电压,其值的大小3.3V。而该单片机的A/D转换器为12位,那么212=4096,因此ADC的分辨力为330040960.8mV(即当输入电压变化0.8mV时,data变化一个字),满足课题的设计要求。4.3.2 ADC驱动配置根据系统设计的要求,AGV的控制信号源为三维摇杆,其信号的读取是通过ADC(Analog to digital converter)即模数转换器实现的。此外,ADC还需要实现对锂电池电压的读取。STM32单片机的ADC时钟(ADCCLK)不能超过14MHz,因此根据系统工作频率设为6分频即726=12MHz。使能AD转换器后还需要执行复位校准和AD校准否则读取的AD值不准确。图4.5展示了ADC底层驱动的配置过程。图4.5 ADC底层驱动配置4.3.3 信号滤波处理对ADC数据进行滤波处理后,才能作为AGV的稳定控制量和电池电压的准确检测量。AD滤波算法有很多种,包括限幅滤波法、一阶滞后滤波法、中位值平均滤波法、递推平均滤波法等。分析各种算法的优缺点,然后结合设计本身的实际情况,选择合适的滤波算法尤为重要。本设计中对前后两次采样的偏差没有限制要求且不存在脉冲性干扰,所以不需要考虑限幅平均滤波法。一阶滞后滤波法对周期性干扰具有良好的抑制作用但灵敏度较低。中位值平均滤波法能有效可消除由于脉冲干扰所引起的采样值偏差,但对流量、速度等快速变化的参数不宜。相比于中位值平均滤波

温馨提示

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

评论

0/150

提交评论