基于arduino的分拣小车设计【含三维图纸、说明书】
基于arduino的分拣小车设计【含三维图纸、说明书】,含三维图纸、说明书,基于,arduino,分拣,小车,设计,三维,图纸,说明书,仿单
摘 要本论文主要介绍基于Arduino 平台设计的能够用于小型物流分拣运输且可以和手机设备进行蓝牙通讯的小车的设计过程。在论文中先后阐述了该设计的背景和在国内外的研究状况,通过系统思路设定,经分析当前主流控制板的优缺点后决定使用Arduino UNO控制板对系统进行控制,运用Solidworks软件完成分拣小车的三维建模及各零件的装配过程。为了实现分拣小车的预期功能,选择超声波传感器作为距离判断的元件,通过L298N电机驱动模块控制小车的转向和转速,依据电阻电桥的特性且结合HX711 A/D转换芯片完成电子秤的设计,对分拣小车上承载物件的信息通过LCD12864显示屏呈现。此外根据Arduino平台和 Android平台耦合性强的特性,选用蓝牙模块实现Android手机设备和搭载Arduino控制板的分拣小车之间的通信。完成电路连接后初步编写程序流程框图后用IDE实现对分拣小车的软件控制,经过程序编译、上传,利用IDE串口监视器的便利性和分拣小车的实物模型完成整体程序的调试后,本论文设计的分拣小车能够实现自动搬运、称重、显示、寻轨迹等预期功能。关键词:分拣;Arduino;蓝牙通信;循迹IABSTRACT This dissertation mainly introduces the design process of a car designed based on the Arduino platform that can be used for small-scale logistics sorting and transportation and can communicate with mobile devices via Bluetooth. In the thesis, the background of the design and the research status at home and abroad were explained successively. After the analysis of the current advantages and disadvantages of the mainstream control, the design of the system was controlled using the Arduino UNO control board and the sorting was performed using Solidworks software. The three-dimensional modeling of the car and the assembly process of each part. In order to achieve the desired function of sorting trolleys, ultrasonic sensors are selected as distance-determining components. The L298N motor drive module is used to control the steering and rotation speed of the car, and the electronic scale is designed based on the characteristics of the resistance bridge and combined with the HX711 A/D conversion chip. The information on the carrying objects on the sorting cart is presented through the LCD12864 display. In addition, according to the strong coupling between the Arduino platform and the Android platform, the Bluetooth module is used to implement communication between the Android mobile device and the sorting cart equipped with the Arduino control panel. After the circuit connection is completed, the program flow diagram is preliminarily written to use the IDE to implement software control of the sorting cart. After the program is compiled and uploaded, the convenience of the IDE serial monitor and the physical model of the sorting cart are used to complete debugging of the entire program. The sorting cart designed by the dissertation can realize the expected functions such as automatic handling, weighing, display, and tracking. Keywords: Sorting; Arduino; Bluetooth communication; tracking目 录摘 要IABSTRACTII1 绪论11.1设计研究的背景及意义11.2国内外发展状况12 系统整体设计42.1系统思路设计42.2控制芯片的选择42.3 Arduino相关介绍及型号选择52.4分拣小车的三维建模63 小车硬件介绍103.1 Arduino UNO103.2超声波模块113.3电机驱动模块(L293N)123.4 5KG压力传感器和HX711模块133.5 LCD 12864显示屏173.6 蓝牙模块193.7摆臂舵机204 分拣小车程序编写214.1分拣小车整体控制流程214.2避障功能的流程框图214.3循迹功能的流程框图224.4称重功能的流程框图234.5 LCD屏显示功能的流程框图244.6蓝牙通信功能的流程框图254.7舵机摆臂功能的流程框图255 系统调试265.1串口监视器使用265.2 蓝牙模块AT设置265.3调试中遇到的问题276 总结28参考文献29致 谢30附录1:外文译文31附录2:外文原文36附录3:系统程序41IV基于arduino的分拣小车设计1 绪论1.1设计研究的背景及意义自动分拣设备和系统的概念首先是从美国、日本等发达国家在二战后出现的,之后在国外各大物流中心被广泛运用。自动分拣系统的作业过程可以简单地描述如下:物流中心每天需要接收成百上千家供应商或货主通过各种运输工具送来的成千上万种商品,在在最短的时间内将这些商品卸下并按商品品种、货主、储位或发送地点进行快速准确的分类,将这些商品运送到指定地点(如指定的货架、加工区域、出货站台等),同时,当供应商或货主通知物流中心按配送指示发货时,自动分拣系统在最短时间内从庞大的高层货架存储系统中准确找到要出库的商品所在位置,并按所需数量出库,将从不同储位上取出的不同数量的商品按配送进点的不同运送到不同的理货区域或配送站台集中,以便装车配送1。2016 年以来,我国的快递市场迅猛发展,每天各快递公司需要接收和分拣的邮件数量不计其数。尤其是当各大购物网站促销时,更大大增加了对物流行业能力的考验。一方面是用工慌的问题依然没有得到解决,面对邮件多工作人员少的情况,依旧在采用着传统的物流分拣方案。第二方面是邮件数量多且繁杂的问题,导致分拣效率低且容易丢失货物。如今物流行业一般采用三种分拣方案,第一种是采用全自动化设备进行分拣,虽然效率极高,但同时企业成本也大大提高,不能适用于全部的物流分拣中心。第二种是采用传送胶带机的方式,不仅分拣线长且效率较低,但是具有柔性强,占用场地小等有点。其次是纯人工进行分拣,这种方案效率极低,所以运用的场合较少。降低物流成本是物流分拣、运输、包装中的核心问题,只有降低物流总成本,才能提高企业和社会经济效益的目的。改变传统的物流分拣方式,引进全新的分拣设备,加快分拣效率的同时降低分拣失误的概率。设计一套自动化程度高、成本适中且效率高的分拣设备和系统来提高作业设备的柔性,能符合不同规模的分拣中心的需求,这是一件迫在眉睫的事情。1.2国内外发展状况从国内外近几年物流自动分拣系统的发展状况来看,国内采用自动化分拣设备的时间相对于国外较晚且设备的自动化程度不及国外高,但是其运用的方面还是比较广泛。在国外自动化分拣系统出现在各个领域,大大提高了整个物流行业的发展水平。尤其是美国、日本和一些欧洲地区的发达国家,自动化分拣设备的自动化程度越来越高,因为每个国家的货物都要进行运送,包括国内贸易和进出口贸易。物流运输的效率也决定着一个国家的经济发展状况,所以物流自动分拣系统已经是国家不可缺少的一部分。现如今的自动分拣系统主要运用在各大中型物流集散地、货物中心、流通中心、邮局分拣等场所,其系统都会随着交流自动控制技术的发展而进行技术更新,特别是在电子技术迅猛发展和计算机被广泛使用的时代。自动化分拣系统的概念虽然出现的早,但在20世纪70年代才被引入中国,最初运用在邮政系统方面。之后被用于其他运输领域并在长期的实践中不断技术创新。例如,邮电部相关部门相继开发和研制出具国际水平的CORE-NT物料自动分拣系统,性价比很高的扁平邮件高速物料自动分拣系统;上海邮政通用技术公司研制成功了速递邮件网络化物料自动分拣系统等。1.2.1国内发展状况在物流中心分拣系统的研究中,主要有三方面内容。一方面是物流分拣设备和控制技术的研究,如用于邮政系统的交叉带式分拣机研究、应用于烟草行业的通道式分拣机研究等等。第二方面是对物流中心存储策略和分拣路径优化的研究,如用BOM表进行仓储位置优化的研究,用蚁群算法实现分拣路径的优化等等。第三方面是对分拣作业数据信息与分析决策问题,华南理工大学、中国人民大学、华中科技大学、浙江大学等国内高等院校的学者都进行了定性与定量的研究。如马士华、文坚的分批策略根据时间延迟思想,综合考虑了拣货作业环节和分拣包装环节的工作效率,提出了一种消除因时窗分批不平衡而导致的等待时问和闲忙不均的动态时窗设计与判断方法,从而保证分拣系统的连续性和均衡性。李凯就卷烟分拣的几种优化模型展开了较深入的探讨,并以仿真的手段进行了验证。朱岩就卷烟分拣机的控制策略和不同设备参数下的分拣系统整体性能进行了研究,并通过仿真程序模拟验2。 如今,国际竞争日益加剧,为了发展我国物流业,国内的许多企业和政府部门也在做更大的努力,也已取得了一定的成效。例如,邮电部相关部门相继开发和研制出具国际水平的CORE-NT物料自动分拣系统,性价比很高的扁平邮件高速物料自动分拣系统;上海邮政通用技术设备公司研制成功了速递邮件网络化物料自动分拣系统等。邮政系统还推出了新的信封标准以更好的配合自动化的信件物料自动分拣系统。太原刚玉仓储设备公司和贵阳普天通信机械厂已设计生产货架电子标签拣选系统、小车式数字显示拣选系统、邮件自动分拣系统等;珠海普天慧科信息技术有限公司研发出PTL(Pick-to-light&Put-to-1ight)电子标签拣选系统,除具备电子标签拣选系统的一般优点之外,还具有弹性控制拣货作业流程、即时现场监控紧急订单处理和缺货通知等强大的功能。虽然在邮政系统外的其它行业,国内对物料自动分拣系统的使用还非常少,但有关部门和企业正在为此做出不懈的努力。可以肯定,随着物流大坏境的逐步改善物料自动分拣系统在我国流通领域一定会大有用武之地。1.2.2国外发展状况以美国、日本及欧洲为代表的发达国家,在分拣系统的应用上呈现出自动化程度越来越高的特点。自动分拣系统已成为发达国家大中型物流中心、配送中心或流通中心不可缺少的一部分。在分拣系统等物流中心子系统规划设计中,各发达国家的规划原则有很大的差异。日本的物流中心大都规模适中,采用先进的自动分拣系统和无线通讯设备,美国主要采用立体仓库以节约地价支出,但分拣等设备大都采用机械化或半自动化,不盲目采用全自动设备。他们共同的特点是均实现较成熟的电脑网络化管理,保证了配送的及时准确性,节约劳动力成本。国外的学者专家如Goetschalckx和Ratliff提出利用动态规划法来求解宽通道内的拣货路径问题,Roodbergen和Koster研究在多橫向通道仓储系统环境下,针对各种分拣策略比较在不同通道数目、不同货物品项及不同通道宽度的拣货路径的问题,ElizabethJewkes等对商品储存位置等对分拣的影响展开研究, Loon c.Tang等论述了分批与存储分配策略对分拣的影响,RichardL. Daniels等对仓库订单分拣的研究,M.I. Johansson对货物存储位置的分配对减少分拣时间的作用进行了研究,美国麻省理工院Dimitr1s. Bertsimas和Robert.M. Freund及 W.L.Winston,Jeremy.Shapiro,LacksonenT).Whitley等学者也做了相关的研究工作2。就目前来讲,国外的自动分拣系统发展极为迅速。如:Auchan,Mark将分拣系统归纳为5个子系统:订单挑选、感应、合并前聚集、合并、搬运分拣,以此使订单与不同传送带有机地的结合起来,形成一个高效的物料分拣系统。Mase1D.T研究了如今关于评估环形物料分拣系统的分拣时间的解析公式,这个类型的分拣系统主要是用来分拣固定形状的货物;NormanSaenejr从配送中心里物料搬运这个方面研究了如何构建物料分拣系统传送带、如何搭配传送带以及如何构建一个良好的物流分拣搬运系统。2 系统整体设计2.1系统思路设计本设计题目为基于Arduino的分拣小车设计,目的在于通过蓝牙通串口方式连接Arduino和Android两平台之间的通信。操作者只需将手机和小车上的蓝牙接通,即可在Android手机上操控小车。每一个物流集散地都对应着一个数字,例如小型物件的目的地为北京,而在系统程序中北京对应的串口数字为2,操作者将物件放至小车上并在手机上按下“2”后,小车会自动称重,在LCD屏幕上显示出物件的重量和运输的费用及所要到达的集散地。称重结束后小车会自动按照运输路径将物件送至对应货箱中,再原路返回。在运输过程中可能会遇上其他小车或着障碍物出现在前方,这时小车需停止运输直至前方检测不到障碍物,这就是系统设计中一套完整的运输过程和小车运行状态,分拣小车的整体设计框架如下所示。蓝牙模块舵机超声波传感器控制板电机驱动电机显示屏称重芯片2.2控制芯片的选择如今在简单的软件编程方面,一般主流的有Arduino、树莓派等软硬件开源的控制芯片,另外就是以C51和STM32为代表的控制芯片。这几类单片机都会经常用在不同的场合,每一款都有各自的优缺点,下面将简单介绍一下。Arduino是一款比较容易上手的控制芯片,备受电子爱好初学者的青睐。由于软硬件开源的原因,经常被用来做一些有创意的物品,比如智能浇花系统、蓝牙小车、避障小车等。在软件编程方面,只需将现成的库文件放在Arduino的Libraries文件夹中即可,编程时只需调用即可,无需了解库文件是怎么写的。因此Arduino适合电子知识功底比较薄弱的学者使用,编写程序的过程也比较简单且能快速学会使用编程软件。树莓派是一款比Arduino性能更强大的控制板,同样它的许多软硬件都是开源的。它存储数据的空间较大,且运算速度比较快,性能比较优越。但是它的价格比较昂贵,开发成本比较高,让一些想接触它的初学者望而却步。C51和STM32这一类的单片机较Arduino和树莓派开源程度没那么高,许多工程文件和驱动代码需要自己写,甚至有些时候使用时需要把驱动代码从集成的工程文件中剥离出来,并且在硬件方面需要自己选型、设计PCB板、焊接、调试硬件。但此类单片机的开发成本是最低的虽然对开发者的要求高于前二者。因此,在考虑开发成本和难易程度及对设计内容的匹配程度来看,Arduino是最合适选择。2.3 Arduino相关介绍及型号选择Arduino起初是2005年由意大利的一位老师老师Massimo Banzi和到西班牙的芯片工程师David Cuartielles共同创作出的项目,之后国外运用它的人越来越多。此外还得益于Arduino的开放性、易用性、交流性等几大特点,电子爱好者可以在网上找到其他作者作品的开源硬件及软件,并且可以随意修改使用,在国内还有专门的交流网站“Arduino中文社区”。Arduino是一个以ATmega单片机为基础的控制板,整体还包括稳压电路、A/D转换器、I/O等。和其他控制平台一样,Arduino有许多的型号,每一个都有不同的I/O口和其他接口,对应着不同的功能和场合。其中运用最广泛的就是Arduino UNO(如图2.1)。 图2.1 UNO控制板 其次是比UNO接口多,体积大且价格较高的Mega2560(如图2.2) 图2.2 Mega2560控制板还有有两款比UNO体积小,但接口没有那么多的Mini(如图2.3)和Nano(如图2.4) 图2.3 Mini控制板 图2.4 Nano控制板 Arduino UNO 相对于其他Arduino控制板价格较为便宜,且I/O口的个数适中,所以UNO是用来做搭载本设计的最好选择。系统整体除了需要Arduino UNO芯片控制以外,还需要其他的硬件来支撑分拣小车的完成。其中蓝牙蓝牙模块是用来连接手机和小车之间的通讯桥梁,在称重环节需要压力传感器和HX711芯片组成的称重模块对物件的重量进行测量,测量出的结果需要LCD屏幕将信息显示出来。驱动电机则要靠驱动模块来完成,在小车行走中依靠超声波传感器进行避障,在小车到达目的地需要把物件扬起时用舵机来执行此动作。2.4分拣小车的三维建模(1)设计底盘尺寸,预留减速电机支座孔位、车身框架孔位、平行梁安装孔位、控制板和电机驱动板安装孔位及走线孔等如图2.5。图2.5 小车底盘(2)安装电机、电机支架及平行梁如图2.6 。图2.6 安装底盘后效果(3)设计小车整体框架如图2.7图2.7 小车框架(4)设计小车包围如图2.8、2.9、2.10、2.11 图2.8车前板 图2.9小车后板 图2.10小车左板 图2.11小车右板(5)设计显示屏支架(如图2.12)、舵机支架(如图2.13)和小车卸货翻板(如图2.14) 图2.12显示屏支架 图2.13 舵机支架图2.14 小车卸货翻板(6)对小车进行整体三维装配,效果图如图2.15、2.16 图2.15小车前侧效果图 图2.16小车后侧效果图(7)安装舵机,确定舵机摆臂的长度(如图2.17)图2.17舵机安装示意图 根据测量数据,将摆臂的长度设计为67mm并进行安装如图2.18。图2.18舵机摆臂安装3 小车硬件介绍3.1 Arduino UNOArduino控制板是以ATmega AVR单片机为最小系统开发的,而ATmega单片机又分为很多种类,但它们的特性都有以下几条:(1)内置闪存,用于存放代码(2)静态随机访问存储器(SRAM)用于储存运行时的数据,断电丢失(3)可擦除只读存储器(EEPROM)用于长期保存数据,断电不丢失(4)有数字I/O口(5)A/D转换器(ADC),可把模拟输入信号转变为数字输入信号而UNO采用的是ATmega328微控制器,闪存(Flash)为32KB,SRAM为2KB,EEPROM为1KB,虽然存储空间比较小,但应付简单的程序存储还是足够的。UNO有14个数字I/O口(D0D13),用于数字信号的输入输出,其中有6个PWM口,可输出模拟信号,调节电机转速等;另外有6个模拟信号输入口(A0A5),也可以做数字信号的输入输出。在6个模拟信号输入口中有两个接口为IIC通信的接口(SCL、SDA),分别对应着A5和A4,控制板的接口位置可见图3.1。图3.1 Arduino UNO 控制板接口分布3.2超声波模块超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收,如图3.2 。 图3.2 超声波模块一般常见的超声波模块是收、发分离的超声波模块,电路板上有四个引脚,分别是VCC(正电源)、Trig(触法)、Echo(回应)和GND(接地)。根据厂商提供的技术文档指出,此模块的主要参数如下。(1)工作电压与电流:5V、15mA(2)感应距离:2-400cm(3)感应角度:不大于15(4)被测物的面积不要小于500cm并且尽量平整在超声波模块的触发脚位输入10微秒以上的高电位,即可发射超声波,发射超声波之后,与接收到回传的超声波之前,响应脚位将呈现高电位,触发脚和接收脚的电位变化可见图3.3。因此,程序可从“响应”脚位的高电位脉冲持续时间,换算出被测物体的距离。 图3.3 触发脚与接受脚电位变化3.3电机驱动模块(L293N)3.3.1 电机驱动选择由于Arduino的微处理输出功率有限,无法直接驱动电机等大型负载,所以需要其他的驱动装置进行驱动。其中晶体管就是最基本的驱动元件,但它只能通过PWM调节电机转速,若需调节电机转向则需要其他的电机驱动模块。如ULN2003A、754410、L293D、L298N等,L293D和L298N相对于其他驱动使用较为简便,且容易买到,但L293D是兼容Arduino开发的,会占用许多I/O口,因此本设计采用L298N进行实验。3.3.2 H桥式电机控制电路介绍电机驱动模块中都有若干个H桥电路,可以控制电机的正转与反转,电路中有4个三极管,其作用类似于开关。它连接着一路电机的A、B两个输入口,只有当A、B两个输入呈相反电位时电机才会转动,两输入口电位颠倒,引起电流方向变化,电机又进行反转,简单的电路示意图可见图3.4 。 图3.4 H桥电路示意图3.3.3 L298N电机驱动介绍L298N电机驱动模块中内置2个H桥控制电路,可以控制两路直流电机的转速及转向,其引脚说明如图3.5。 图3.5 L298N 引脚图L298N电机驱动模块有两种供电方式,一种是从Arduino控制板上取电,需要正向给电压的脚与控制板上的vin口相连接,输入的电压为5V;而另外一种可以采用干电池或锂电池等外部电源对驱动板进行供电,但最大的供电电压不要超过24V。这两种方式都能驱动电机,但输出的功率有所不同,外部电压供电的方式可以带动更大的电机负载。在编程时若想控制一路直流电机的正反转和转速,需对电机驱动的3个引脚进行状态控制,引脚输入A和输入可以控制电机的转向,而使能EN引脚只能控制电机转速。三个状态参数决定着电机的运行状况,参数及电机运行状况如下表1表1 电机转向与3个引脚电位关系使能输入A输入B电机运行状况高高低正转高低高反转高高高电机停止高低低电机停止低电机不转所以只有当在电机驱动模块使能脚上输入高电位,且两个输入引脚存在高低电位差时,电机才能转动。当两个输入引脚的高低电位交换时,导致驱动中的电流方向变换,使电机反向转动。 3.4 5KG压力传感器和HX711模块设计中采用5KG压力传感器和HX711 24bit A/D芯片的组合来测量物件的重量。3.4.1 压力传感器原理压力传感器就是工程测试技术中提及的电阻直流电桥应用的实例,所谓电桥就是将电阻、电感、电容等物理量很小的数值变化量变换为电压或电流等容易测量且直观的数值变化量,再将其数据信息放大后可直接测量出对应的数值。在设计中感知物体重量的元件为平行梁称重传感器(如图3.6),由于它测量精准,在制作生产中较为容易,抗压能力比其他传感器强,所以通常用来作为测量重物的传感器。图3.6 平行梁称重传感器平行梁上下各贴有两个电阻应变片,阻值分别为R1=R2=R3=R4=1K,传感器受力时各应变片工作状态如图3.7。图3.7 传感器受力时各应变片状态 电阻应变片的阻值随着弹性元件上压力的变化而变化,当平行梁受压力时梁上两个应变片受拉力,梁下两个应变片受压力。根据电阻的计算公式可知,当材料的的长度及横截面积发生变化时,阻值也产生变化,所以输出的电压也是变化的(电桥中的连线可见图3.8)。因此可以根据电压的变化来计算出阻值变化,进一步推算出平行梁上施加的力。 图3.8 传感器电桥3.4.2 HX711模块介绍依据电阻桥的特点,电阻的变化和输出电压的关系,而输出电压=输入电压灵敏度。输入电压为5V,灵敏度为1mV/V,则满量程时输出电压为5mV。这就说明当测量5Kg的重物时,输出的电压为5mV。由于输出的电压太小,用普通的方法是难以测出来的,所以需要用能测量传感器输出电压值的HX711芯片(如图3.9),芯片内包含着一个可以放大电压信号的电路和一个进行数模转换的电路,它可以把微小电压值转换为数字量。图3.9 HX711芯片HX711是一块高精度的24位A/D转换的芯片,它内部包含了稳压电路,时针振荡器电路等,可以抵抗外部的干扰,对系统输入的数据处理速度比较快。就是因为芯片体积小且把许多电路都集成在上面,降低了在制造方面的成本,提高了系统的稳定性和可靠性。在控制方面也十分简便,只需要控制板发出信号控制芯片的管脚即可实现对芯片的整体控制,无需按照通常对其他芯片一样地对寄存器进行编程操作。HX711芯片在选择数据输入通道时有两通道可选择,一个为A通道,一个为B通道。其中选择A通道时数据的增益为128或64,当增益为128时对应的输入电压为20mV,选择64增益时所输入的电压为40mV。而选择B通道时数据的增益为32,对应的输入电压为80mV,一般情况下用它对系统的参数进行检测工作。如果在编程时选择了A通道作为数据输入口且数据的增益为128,那么芯片电路中对应的最大输入电压为20mV,经过128增益后变为2.56V,再通过24bit A/D转换器转换为相对应的数字量,其内部图如图3.10和引脚说明如图3.11 。 图3.10 HX711内部电路 图3.11 HX711 芯片引脚虽然HX711芯片的引脚数较多,但芯片与控制板进行连接时只接出了4个引脚,分别为GND、VCC、DOUT和SCK引脚。说明若要连接Arduino与芯片之间的通讯不用考虑其他引脚的控制方法,只需通过控制DOUT、SCK引脚的高低电平状态即可输入和输出数据,决定输入通道和增益。当引脚PD_SCK的状态一直为低电平,而DOUT引脚的状态一直为高电平时,意味着芯片中A/D转换器还没有为数据转换做好准备。当引脚DOUT的状态改变时,说明A/D转换器已经可以开始进行数据转换的工作, PD_SCK先输入24个脉冲信号,相对应着向DOUT引脚输出24位数据。24个脉冲信号结束,意味着HX711把24位ADC值全部输出。之后PD_SCK又输入1-3个脉冲信号,也就是第25-27个时针脉冲,来选择下一次ADC转换的通道和增益(可见表2)。由此可说明PD_SCK引脚需要输入25-27个时针脉冲信号。需要说明的是,在芯片断电复位后默认选择A通道及增益为128,此后的通道及增益选择由PD_SCK引脚输入第25-27个时针脉冲决定。表2 第25-27个脉冲与通道、增益的关系PD_SCK时针脉冲数输入通道增益选择25A12826B3227A643.4.3 A/D转换过程:(1)计算芯片提供电压:芯片与压力传感器连接时需连接4个引脚,其中两个为A通道的正负端,另外两个为E+和E-。传感器中电桥的输入的电压由E+和E-两端的电压决定,称为VAVDD。VAVDD的数值可通过VAVDD=VBG(R1+R2)/R2公式计算得出。可知VBG=1.25V(模块基准电压),其中R1、R2为芯片电路中的分压电阻,阻值分别为20K和8.2K,所以通过计算VAVDD=4.3V。(2)计算AD输出最大值:在5KG传感器电路中可输出的最大电压=4.31mV=4.3mV,经过芯片128增益放大后=550.4mV。再由24bitA/D转化器进行转换后最大数值=550.4224/4.3=2147483。此数据过于太大,存放在long数据类型中较占空间,所以将数据进一步处理除以100后存放在int 数据类型中,因此最大的AD数值为21474。(3)将重力值转换为AD数值:假设物体为A Kg,输出的AD数值为y由于物体的重量与输出的电压具有正比的关系,所以测量A Kg的重物时电桥所产生的电压=A4.3/5mV=0.86AmV。经128增益后输出电压=0.86A128=110.08mV输出电压经过24bit A/D转换器进行转换后输出数值=110.08224/4.3=429496.7296A所以y=429496.7296AA=y/429.4967296 g3.5 LCD 12864显示屏由于普通的LCD屏与Arduino控制板的接口需要6个接口且Arduino UNO 的数字信号I/O口的数量有限,大部分I/O口还得分配给其他硬件连接使用。所以设计实验中采用带IIC通信的LCD12864显示屏显示称重的数据(如图3.12),它不仅使用方便,只需3根接线就可与控制板的模拟信号输入口连接,其余的引脚可以不用连接,不占用字信号I/O口(引脚说明见表3) 图3.12 LCD显示屏及引脚示意图 表3 LCD12864引脚说明序号符号说明1A0IIC地址信号A02A1IIC地址信号A13BUSY忙信号,高电位为忙,低电位为闲,忙状态下不接收指令4SDAIIC数据信号5SCLIIC时针信号6RST复位信号,低电平有效7VDD电压正8GND电源地各引脚与Arduino模拟信号口连接方式:BUSY-A3SDA-A4(SDA)SCL-A5(SCL)VDD-5VGND-GND3.6 蓝牙模块HC-05蓝牙模块是一个即能发送数据也能接收数据的通讯模块(见图3.13),HC-05的使用方法比较简单,这就意味着当蓝牙模块与蓝牙设备连接成功后无需考虑内部的通信方式,直接把蓝牙当做串口来使用。当蓝牙模块与手机设备连接成功时可共用一个数据传输串口通道,这就说明手机从蓝牙串口通道发送数据后,蓝牙模块可从通道中接收手机设备发出的数据。 图3.13 HC-05蓝牙模块蓝牙模块上虽然有六个引脚,但配对和传输数据时只需将其中的4个引脚与Arduino控制板连接。4个引脚与Arduino控制板的接口连线如下:RXD-TX(D1)TXD-RX(D0)VCC-5VGND-GNDHC-05模块参数:(1)输入电压:3.7V-6V,禁止超过7V(2)接口电平3.3V,可以直接连接各种单片机(3)可以通过AT命令切换主机和从机模式(4)空旷地带有效传输距离10米3.7摆臂舵机为了实现小车自动扬起卸货板进行卸货的功能,需安装一个舵机来完成此动作,小车的卸货能力与使用的舵机力矩有关。设计实验中用到的是可180度转动的MG996R模拟舵机(如图3.14),可提供13Kgcm的力矩,转动范围为0度到180度,其角度可以通过PWM(脉冲宽度调制)的方法来进行调节。 图3.14 MG996R模拟舵机舵机内包括小型电机、减速齿轮和位置反馈电路,因此舵机也属于伺服电机的范畴。舵机会随着脉冲持续的时间来转动,不同的脉冲时间对应着不同的角度,比如说1ms的脉冲可以是舵机转到一个极端,而2ms可以使舵机转到另外一个极端。控制一个舵机需要大约20ms的时钟脉冲,而在全部的时钟脉冲中只需一小部分的高电平就可控制舵机的旋转角度,这个高电平的持续时间为0.5ms-2.5ms。设计中所用到的舵机转动时的脉冲宽度变化及对应的角度如图3.15图3.15 脉冲宽度与舵机角度4 分拣小车程序编写4.1分拣小车整体控制流程根据小车系统整体设计,将控制板与各硬件相连接,从手机设备到每个执行元件之间的控制流程如下所示:超声波模块蓝牙模块手机设备 发送 感知距离 数据 读取数据电机驱动减速电机控制板 发送指令 控制 AD值 转化为显示屏 重 量 显示信息HX711模块压力传感器 感知电压变化 4.2避障功能的流程框图读出接收脚高电位的时间避障过程中采用超声波传感器来检测距离,若检测到分拣小车前方有障碍物并且距离小于30cm,小车就执行停车程序。在程序中使用定时中断函数每隔100ms调用距离判断函数,框图如下:每隔100毫秒调用距离判断程序用时间等效换算为障碍物距离定义变量distance将距离存储在变量中进行判断超声波模块触发脚高电平持续5微秒若距离小于30厘米则分拣小车停止2秒超声波模块接收脚写入低电平4.3循迹功能的流程框图简单地可以把路径简化为直走、转弯、直走、停、掉头、直走、转弯、直走等,每条路径都是在执行直走、转弯的过程,只是对应动作的时间不同。但执行一条路径时就要具体到控制每一路电机的高低电平差和使能量及动作持续时间。具体路径控制流程图如下:直走动作执行2秒左路电机输入脚A写入高电平,左路电机输入脚B写入低电平右路电机输入脚A写入高电平,右路电机输入脚B写入低电平左路电机使能脚输入速度值,右路电机使能脚输入速度值 右转动作执行700毫秒(右路电机输入A、B脚电位颠倒)直走动作执行2秒停车5秒(两路电机输入脚输入相同电位,使能输入为0)掉头(等效于右转动作持续1400毫秒)直 走左转动作执行700毫秒(左路路电机输入A、B脚电位颠倒)直走回到起始位置4.4称重功能的流程框图HX711芯片是24bit A/D转换的,所以需要从高到低地将数据输出,然后将AD值等比转化为重量值即可,具体转化过程可见以下流程图。定义变量count并赋初始值DOUT 引脚写入高电平(表示A/D转换器未做好准备)SCK引脚写入低电位读取DOUT电位变化(为低则开始转换)计数器开始计数SCK引脚写入高电位开始输入数据,SCK引脚写入低电位结束数据输入,将DOUT引脚输出的数据存储在count变量中计数器满24停止输入数据提取出前24位数据再次输入第25个脉冲决定下一次通道和增益返回count变量中的24位A/D数值利用公式计算承载的重量4.5 LCD屏显示功能的流程框图需在LCD12864显示屏上显示出称重物件的重量,并按照路径对应的单价计算出相应的运费,并显示出货物所到达的城市。通过流程图来说明一件货物的重量、运费、目的地显示的过程:创建第一个数组名并定义其数组中数据个数 利用dtostrf()函数将重量值存储在数组中在显示屏右侧第一行显示重量,并在后面显示”Kg”单位创建第二个数组名并定义其数组中数据个数重量值乘单价所得到的值存在“money”变量中利用dtostrf()函数将金额数存储在数组中在显示屏右侧第二行显示重量,并在后面显示”yuan”单位在显示屏右侧第三行显示目的地读取蓝牙串口的数据4.6蓝牙通信功能的流程框图 将读取数据存储在变量“c”中判断变量中的数是否等于程序中的数若不等于则分拣小车停止不动若等于则执行相对应的程序4.7舵机摆臂功能的流程框图在分拣小车到达目的地时,舵机转动一定角度,将载物板扬起,物件顺势滑落至集装箱中。舵机摆动的指令可见下面流程框图说明:定义舵机转动至90度摆动至90度后延迟2秒定义舵机转动至45度延迟2秒再次舵机转动至90度并延迟2秒(防止第一次摆动时物件未滑落)再次定义舵机转动到45度(舵机位置归中)5 系统调试5.1串口监视器使用在Arduino控制板与电脑连接的状态下打开IDE的菜单栏“工具”列表中的“串口监视器”。 在程序调试的过程中,可以把程序分几部分上传到控制板后进行分步测试。比如说超声波测距,可以在串口上显示距离,在称重测试时,也可以打开串口监视器就能显示重量。5.2 蓝牙模块AT设置蓝牙模块需要T设置A后才能与设备正常匹配,比如说恢复出厂设置、更改蓝牙名称、设置主从模式、设置密码。在调试中使用Arduino控制板进行设置,连接图如图6.1 。 图5.1 蓝牙AT设置连接AT设置程序如下:#include SoftwareSerial BT(10, 11); char val;void setup() Serial.begin(38400); Serial.println(BT is ready!);BT.begin(38400); / HC-05默认,38400void loop() if (Serial.available() val = Serial.read();BT.print(val); if (BT.available() val = BT.read();Serial.print(val); 编译下载到控制板之后打开串口监视器,把波特率设为38400,在发送框输入以下几个命令:AT+ORGL 恢复出厂设置AT+NAME=cho5 修改蓝牙模块名称为ch05AT+ROLE=0 蓝牙模式设置为从模式AT+CMODE=1 蓝牙连接模式为任意地址连接模式AT+PSWD=0000 蓝牙配对密码为0000输入指令后出现“OK”即完成AT设置,可以与手机蓝牙连接。5.3调试中遇到的问题(1)在电机与舵机一块调试时,发现电机能转动但舵机不能转动,在程序没有问题的条件下,将舵机引脚接到了PWM的11引脚。重新下载程序后执行问题就迎刃而解,通过上网了解后发现是引脚冲突所导致的问题。(2)蓝牙AT设置中,串口提示栏显示错误,因为IDE串口监视器的默认波特率为9600,。将串口波特率改为38400后再输入设置指令就可完成设置,原因是蓝牙AT设置时通讯的波特率为38400,若为其他波特率则无法完成AT设置。(3)在测试蓝牙通信时,蓝牙模块的RXD、TXD数据传输线接在了控制板的D0、D1口后下载程序,IDE提示出现问题,程序无法下载到控制板内。拔掉两根数据传输线后再次下载程序IDE提示上传成功,原来是上传程序时D0、D1数据传输口被占用导致程序无法下载成功。6 总结在整个系统设计中遇到了许多的困难,无论是在软件方面还是硬件方面。从最初控制板的选择,在51单片机和Arduino之间纠结,由于第二者的开源性,最终选择Arduino UNO进行整体系统控制。之后慢慢地开始接触各种电子元件,网上查找资料了解其功能特性,一边学习Arduino的设计语言一边掌握硬件的使用方法。各元器件与控制板连接后用IDE进行程序设计,逐步完善和修改错误后使得各硬件能实现目标功能,比如使用超声波传感器测量距离并通过串口显示数据;利用电机驱动控制直流电机的转向及转速;通过蓝牙控制LED的亮灭等。最后将所有程序结合起来完成分拣小车的系统控制,不断地调试完善小车功能。通过整体硬件和软件的搭建,分拣小车能够完成由手机设备发送数据后,自动称重并在显示屏上显示相关信息,之后按照预先设置好的轨迹进行货物运输,将货物送至指定地点的整体运行动作,并且拥有在运输途中实时避障停车的功能。本次课题设计让我收获颇多,虽然学习的道路是很崎岖的,但是设计的结果是比较令人满意的。从一开始不知道如何下手,到现在能够简单地控制小车,并且能够在实验中发现问题,解决问题,这都是宝贵的学习经历。其次能结合大学本科四年所学的知识运用在具体设计中,比如说称重中运用到了工程测试技术中的电阻桥,达到了学以致用的目的。毕业设计是每次课程设计结合起来的最终效果,正是每学期的课程设计,才能在毕业论文设计中有条不紊地将工作进行下去。所以毕业设计是本科四年的能力体现与总结,学习到了新的知识,更重要的是回顾了以前学过的课程。参考文献1黄启明.自动分拣系统及其应用前景分析J.物流技术,2002(05):7-15.2李娜娜,王莉,戴建民.卷烟配送中心自动分拣系统的规划设计J.物流科技,2008(04):133-135.3蒋家志,刘国.多机器人智能仓储系统中智能调度的研究J/OL.机电工程技术.2017(09)4任芳,王玉.自动分拣机器人在义乌申通的应用实践J.物流技术与应用.2017,22(08)5万龙,吴仁杰.分拣机器人在邮政企业应用前景浅析J.中国邮政.2017(07)6王喜文.机器人技术在物流中的应用:分拣、搬运到送货J.物联网 术.2017,7(03)7彭攀来,马娅婕,刘智旸. 基于Arduino的移动机器人控制系统设计J. 自动化与仪表. 2016(03)8王志凌,闻凯,陈杰.基于Android的小型移动机器人控制系统J. 国外电子测量技术. 2014(09)9刘力.基于Ardunio和Android的蓝牙遥控车J.科技视界.2016(14)10李瑞,李晓明.基于Mobile-Android小型移动机器人平台控制系统J. 机电工程. 2013(11)11马鸣,张华.基于Android的蓝牙远程控制PC系统的设计与实现J. 电脑知识与技术. 2012(28)12蔡睿妍.Arduino的原理及应用J. 电子设计工程. 2012(16)13林兆花,徐天亮.机器人技术在物流业中的应用J. 物流技术. 2012(13)14郑昊,钟志峰,郭昊,许骏.基于Arduino/Android的蓝牙通信系统设计J. 物联网技术. 2012(05)15郑金花.我国快递行业发展现状及策略分析J.现代商贸工业.2011,23(12)16邹伟,李丽,王秀,翟长远,张睿. 超声波传感器测距实验平台设计与实验J. 传感器与微系统. 2011(10)17 Kim. Large scale transportation service network design:Models, algorithms and applicationsD. Massachusetts Institute of Technology.1997.18 Kuby, Gray. The hub network design problem with stopovers and feeders: The case of federal express J.TransportationResearch A.1993,27,(1) 致 谢时光飞逝,眼看着毕业季的到来,这也意味着我们即将离开学校走向社会。随着毕业论文的工作慢慢地接近尾声,我对学校的老师和同学们有些依依不舍,正是由于他们的存在才造就了如今的我。因此我首先要感谢学校为我创造了良好的学习环境,能让我在大学四年里有所学有所用,丰富了知识,增长了眼观。提高了水平。最重要的是感谢学校创
收藏