|
【S142】智能物流小车
作品说明 |
作者:余泽钲 张汐 毛家昊 杨瑞鑫
单位:浙江警察学院
指导老师:陈东杰 李国军
本项目小车模拟离散制造业的智能物流小车,小车具有车间作业中的物料扫码识别、搬运、码垛和循迹等功能。通过前期准备完成一套符合本项目要求的可运行装置,进行现场竞争性运行、现场拆改调试和现场加工的考核。每个作品根据项目不同提交结构设计方案、加工工艺方案、电路设计方案和创业企划书等报告,以培养学生的实践动手能力和创新能力。
1. 项目分析
本项目设计的物流小车,需要在场地(如下图所示)上规定的时间内抓取物料,物料为 PLA 材质(长宽高50×50×60mm,重量约94g),物料顶部粘贴条形码,条形码代码集为Code128-A,分辨率300dpi,裁切尺寸50×50mm;实现物料从小车的起点、上料区、下料区、随机障碍区和终点的搬运,上料区有一个梯形斜坡,该梯形高100mm,上表面长 700mm,下表面长1250mm,坡度20度的梯形斜坡,EVA材质;小车需要上坡、扫码上料、避障过挡板、下料、到达终点;需要扫码模块、多自由度的机械臂、测距模块。
作品说明
2. 结构设计方案
2.1 物流小车结构设计
根据项目任务要求,要完成物流小车的各种抓取、投放机构设计与制作。本项目在考虑到能满足完成任务的同时,其机械结构和电路控制必须做到简单、稳定和高效。经过反复思考,采用了探索者套件中的结构件搭建了小车底盘。底盘结构如下图所示:底盘配备了四个直流电机以及1个八路循迹传感器、2个激光传感器,处理器控制主板、稳压板、舵机驱动板、电机驱动板。可以依靠地面黑色引导线实现场地全场范围内的运动、定位以及避障;处理器控制板提供了较充足的I/O接口。
物流小车底盘实物图
2.2 小车循迹方案
① 循迹方案
车前方采用一个八路灰度传感器实现循迹功能,车前两侧各安装了两个激光测距模块,用于避障的控制。
② 八路寻迹传感器策略
从左到右记录传感器返回值,编成一个二进制数,从硬件的角度来说,灰度灯是两个LED灯中间加一个光敏电阻,之后连接一个可以调节的可变电阻来调节光敏电阻的灵敏性,之后将高低电平发送到主控板上,使得主控板上能识别到01信号,碰到黑色则返回值为0,白色则相反,返回值为1;本作品采用比例控制巡线,首先对不同的灰度传感器返回值进行一个量化的处理;首先将灰度灯进行分组,左边四个灰度为一组,右边四个为一组,再通过计算两边灰度的差值来给出小车偏移的权值。在根据权值来进行微调。
部分代码如下:
小车循迹避障模块结构图
void cruise_1_1(float v,float gray_value_front) { if(gray_value_front == 0){ my_Motor.run( v,v); } if(gray_value_front < 0 && gray_value_front > -0.5 ){ my_Motor.run(v,v ); } if(gray_value_front <= -0.5 && gray_value_front>-4 ){ my_Motor.motor_init(); delay(10); my_Motor.run(180,-180); delay(50); } if(gray_value_front > -4.6 && gray_value_front <=-4 ){ my_Motor.motor_init(); delay(10); my_Motor.run(200,-200); delay(100); } if(gray_value_front >= -8 &&gray_value_front <= -6 ){ my_Motor.motor_init(); delay(10); my_Motor.run(200,-200); delay(200); } if(gray_value_front >0 && gray_value_front<0.5){ my_Motor.run(v,v); } if(gray_value_front >=0.5 &&gray_value_front<4 ){ my_Motor.motor_init(); delay(10); my_Motor.run(-180,180); delay(50); } if(gray_value_front >= 4 && gray_value_front <4.6 ){ my_Motor.motor_init(); delay(10); my_Motor.run(-200,200); delay(100); } if(gray_value_front >= 6 && gray_value_front <=8 ){ my_Motor.motor_init(); delay(10); my_Motor.run(-200,200); delay(200); }
} |
2.3 机械手设计
机械手的设计是这次作品设计的核心,机械手由机械臂和机械爪组成,物块的抓取与放置都要通过机械臂和机械爪的动作来实现,通过编写相应控制程序能控制机械手的运动方向、速度、抓取和放置等动作。本作品设计的机械臂和机械手采用探索者套件中的机械结构件和舵机,组装成四自由度的机械臂。实物图如下:
机械手实物图
机械爪的好坏关乎能够稳定的夹取物块,考虑到物块的大小和物块之间的间距,本项目经过多次爪子方案的设计与比较,最终采用的机械爪如下图所示。本设计使用齿轮组的结构,用舵机上的齿轮带动齿轮组,使固定在对应孔距上的一只爪子向另一只爪子旋转,组成一个机械爪,实现抓取。并在该方案的基础上,在爪子内部加了用海绵,热熔胶为原料的结构以增加爪子与物块之间的摩擦力,经多次测试,效果良好。
机械爪实物图
从整个机械手的长度、车身与上料区的距离,物块的受力程度考虑,该设计的结构合理,夹取稳定,故机械手的方案基本设立(备注:经实测能初步实现抓取物品,但为了能实现识别并抓取相应的物品,计划在机械爪上安装扫码模块以实现功能)。
2.4 物块存放结构
本项目使用一根金属钢柱加上齿条,充分地考虑了力的承受面积,使力均匀分布在两侧。钢条的规格为4mm,长度大约是30cm,钢条两侧采用了结构件进行固定,使它能够自由旋转。固定在底板上十条采用的是亚克力板材质,长度大约是23cm。两侧采用了螺丝,螺母进行限位处理,在这之上采用一个5V的小型电机,电机连接齿轮,使它能够在横向的齿条上自由滚动。在平台与钢条之间采用了一个4mm的结构件,使得结构件能够穿过钢条上自由滑动,并且能与平台相连,平台上垂下一个结构件,使得能够穿过齿条的底面,穿过底面,能够防止平台上下晃动。还有一个作用就是通过结构件上的底面上的一个螺柱能够触碰到触须传感器,而触须传感器的话,能够精确的限制平台的移动,可以使平台停的更准确,触须传感器连接到主控板上面,通过主控板的一个条件判断来执行平台移动,上面的平台主要的材质为亚克力板,亚克力板是用激光切割的(下面附图)
在激光切割后合适的孔位上再机械加工孔位,来实现连接件电机和结构件的连接,上下两层亚克力板能够实现物块在下层亚克力板摆放,上层亚克力板激光切割了合适的矩形,使得物块在矩形内不会左右滑动,并且有一定的间距。上层亚克立板一共能够摆放三个物块,实现能够一遍完成三个物块的摆放,做到能够在两分半以内完成整个流程。
2.5 总体结构设计经过多次试验和简化后,所采用的最终整车总体结构设计方案如下图,其底盘行进平稳,手臂控制抓取平稳,电路合理简洁,精度高,能初步稳定实现所要求的各项动作。整车实物装配图如下所示:
智能物流小车实物图
3. 控制系统及程序设计
3.1 主板和驱动板的选用
3.1.1 主控板的选用
本项目采用Arduino Mega2560主板,Arduino Mega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。处理器核心是ATmega2560, 同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。Arduino Mega2560主板结构如下图所示:
Arduino Mega2560主板结构图
为了方便连接舵机、8路灰度传感器、激光传感器等传感器,本项目使用了Arduino Mega2560传感器扩展板。Arduino Mega2560传感器扩展板采用PCB沉金工艺加工。
不仅将主板的全部数字与模拟接口以舵机线序形式扩展出来,还特设蓝牙模块通信接口、SD卡模块通信接口、APC220无线射频模块通信接口、以及RB URF v1.1超声波传感器接口,独立扩出更加易用方便。扩展板针脚图和实物图如下所示:
Arduino Mega2560传感器扩展板针脚图
Arduino Mega2560传感器扩展板实物图
3.1.2 电源稳压模块的选用
根据要求,本项目选用了电压为7.4V的锂电池作为电源,电池的输出电压会随着使用时间而变化,因此本作品采用了稳压模块来控制电路中电压的稳定性,本作品使用的电压可调DC直流降压稳压电源模块如下图所示,该模块可以稳定输出本组电路所需的7V电压,不会随电池电压降低而降低,保证了电路电压的稳定性,并且该模块带有数码管显示功能,能够方便随时监控电池的电压。
电压可调DC直流降压稳压电源模块
3.1.3 电机驱动模块的选用
为了能够控制小车的运动速度和更好的巡线,本项目采用L289N双H桥电机驱动模块来控制电机,如下图所示:
L289N双H桥电机驱动板
该驱动板可驱动2路直流电机,使能端ENA、ENB为高电平时有效,控制方式及直流电机状态表如下所示:
本作品对使能端输出PWM脉冲,实现调速功能,使巡线更加稳定。
3.1.4 舵机驱动模块的选用
本项目制作的机械手为5自由度,逐个调试舵机非常麻烦,并且效果差,所以使用了舵机驱动模块,如下图所示:
舵机控制板
该舵机控制板可以同时控制16路舵机,通过舵机控制系统可以精准方便快速的调试舵机的转动角度和速度,能够满足本项目要求。
3.2 部分程序解读
① 程序开头定义舵机和电机
这边使用了arduino软件进行程序编程,先定义了舵机对象和电调的端口,定义传感器的端口和引脚,设置了初始速度和各舵机的初始角度。
② 抓取程序
我本作品根据扫到的物料号来判断是否上料,然后根据夹到的次序排序,方便下料函数的使用执行。
3.3 主程序流程图
根据硬件结构和路径规划等方面,对物流小车进行编程,控制小车快速按照规定路线进行并完成循迹、定位、抓取、放置等功能。下图为物流小车的主程序流程图:
物流小车程序流程图
* 本项目未获得作者开源授权,无法提供资料下载。