钻孔机供料机器人技术方案综述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

钻孔机供料工业机器人
技术方案
北京市工业技师学院
2014年
目录
1 任务来源 (3)
2 技术要求 (3)
2.1功能要求 (3)
2.2主要技术指标 (3)
2.3环境适应性要求 (4)
3 系统组成及功能 (4)
3.1系统组成 (4)
3.2系统功能简介 (5)
4 多自由度机械臂设计 (5)
4.1机械臂系统组成 (6)
4.2结构配置 (6)
4.3关节力矩的计算 (7)
4.4单关节设计的总体考虑 (8)
4.5机械臂总体技术方案 (8)
4.6末端执行器设计方案 (9)
5 电气系统设计 (10)
6 控制系统设计 (14)
7 结论 (16)
附件1 机械臂机构系统 (17)
附件2 机械臂电气系统 (22)
附件3 机械臂控制软件设计 (26)
钻孔机供料工业机器人技术方案
任务来源
随着国家经济的快速增长,机床行业也在不断发展,为满足市场需求,机床行业必须不断推出新的产品,使用机器人服务加工生产线的自动化方式逐步得到广泛采用,从而在提高生产效率、减小人工成本等方面起到显著作用。

在这种趋势下,对机器人自动柔性搬运系统的需求会大量增加,尤其是一些重型卡车类零件生产具有精度高、加工工序多、形状复杂、重量重的特点,为提高加工精度及生产效率,各重型汽车生产厂纷纷采用加工中心来加工此类的零部件。

使用加工工件时,要求工件在工作台上具有非常高的定位精度,且需要保证每次上料的一致性。

由于人工上料这类的工件具有劳动强度高、上料精度不好控制等缺点,现在正逐步被工业机器人或专机进行上下料所取代。

机器人智能化自动搬运系统作为生产加工的重要环节,已经在国内取得成功的应用,但在国内应用还不广泛。

在国家经济建没飞速发展的进程中,各厂商的生产能力及生产力水平亟待有一个质的飞跃,而工业机器人即是提升生产力水平的强力推进器,具有广阔的市场前景。

本项目针对钻孔机自动供料作业机器人需求,开展机器人系统方案设计。

技术要求
功能要求
实现钻床自动供料;
通过开放式平台对机器人进行编程控制;
机械臂应具备一定的自保护能力;
在意外和故障情况下,机械臂能够采取紧急控制处理(急停、暂停等),并通过通信接口发送状态信息;
机械臂应能够在急停、掉电后,安全可靠上电。

主要技术指标
自由度配置
4DOF的臂+1DOF的末端执行器,其中:
表1肩部:2个自由度,水平旋转320°,垂直提升195°;
肘部1:1个自由度,195°垂直旋转;
肘部2:1个自由度,垂直旋转180°;
末端执行器: 1个自由度。

臂展尺寸要求
展开:500mm(机械臂末端负载中心线到基关节轴线的距离)。

运动速度要求
肩部:水平运动不小于30°/s,垂直提升不小于10°/s;
肘部1/肘部2:不小于30°/s;
机械臂系统转速:50rad/min。

负载要求
末端负载不小于1kg。

整体质量要求
机械臂部分(不含中央控制器)不大于20kg。

电源要求
工作电压:24VDC。

环境适应性要求
表5工作温度:0℃~45℃;
表6工作湿度:20~80%RH(不能结露);
表7其它:避免易燃,腐蚀性气体、液体;勿近水、油、粉尘等,远离电气噪声源系统组成及功能
系统组成
为实现钻孔机供料工业机器人系统组成如下:
表9小型多自由度关节机械臂;
表10末端夹持器;
表11控制平台;
表12上/下料工装。

系统组成如图所示。

图1钻床供料工业机器人系统构成
系统布局如图所示:
图 2钻孔机自动供料系统布局示意
系统功能简介
系统各部功能如下:
表13小型多自由度机械臂:实现钻孔机加工材料(样件)抓取、放置等功能;
表14控制平台:实现对机械臂工序流程控制;
表15末端夹持器:实现钻孔机原料及成品夹取;
表16上下料工装:实现钻孔机加工材料的放置。

钻孔机供料工业机器人工艺流程
钻孔机供料工艺流程主要包括设备自检、原料拾取、自动供料、成品拾取和放置等工序,具体流程如下:
设备供电系统自检供料工装放置在工作区域
加工原料放置在供料工装程序运行机械臂供料
加工件拾取
流程结束
程序选择钻孔机加工
图 3钻孔机供料系统工艺流程
多自由度机械臂设计
机械臂系统组成
机械臂系统组成如错误!未找到引用源。

所示,由集成化关节(4Dof )、末端执行器、中央控制器、控制系统软件等组成。

其中,集成化关节可以根据负载的大小配置不同的驱动模块。

集成化关节(4Dof )

感系统
关节控制器控制系统软件
关节控制层
笛卡尔控制层
末端执行器1~2Dof
中央控制器
处理器模块
通讯模块电源模块


减速器制动器
关节位置电
机位置
电流限位温度力矩传感信号调理
驱动电路
控制通讯模块
机器人系统
电源模块
图 4机械臂系统组成
结构配置
机械臂高度约为600mm ,机械手宽度约为200mm ,其中大臂长度200mm ,小臂长度150mm 。

机械臂共有4个自由度,其布置形式如
图所示,设计负载为1Kg。

机械臂应当是可折叠的,折叠起来的机械臂的重心降低,有利于保持稳定。

机械臂自由度配置型式为4DOF的臂+1DOF的末端执行器,末端执行器安装在肘关节2上,其中:
表18肩部:2个自由度,水平旋转320°,垂直提升195°;
表19肘部:1个自由度,195°垂直旋转;
表20腕部:1个自由度,升降180°;
表21末端执行器: 1个自由度。

图 5 机械臂结构
关节力矩的计算
机械臂各部件分配重量见表所示:
表 1 机械臂各部件分配重量
序号部件名称部件分配重量(Kg)
1 基关节1、
2 3
2 臂杆1 0.5
3 肘关节1 1
4 臂杆2 0.5
5 腕关节 1.0
6 臂杆3 0.5
7 手爪0.6
8 负载 1
按照静力学计算各关节的扭转力矩,关节力矩计算如下:
表1负载1Kg时
肘关节4 :0.59.80.45 4.41Nm
⨯⨯=
肘关节3:0.59.810.45 3.69.80.450.59.80.50.4522.7985Nm ⨯⨯⨯+⨯⨯+⨯⨯⨯=
基关节1、2:0.59.830.45 3.69.810.450.59.8 1.50.45
19.80.450.59.80.50.4543.802Nm
⨯⨯⨯+⨯⨯⨯+⨯⨯⨯+
⨯⨯+⨯⨯⨯=
表 2 机械臂各关节计算(有负载)
力矩Nm 行星输出力矩
Nm
速度。

/s 功率W
关节1(肩部水平)43.802 26.9 30 25.5788 关节2(肩部垂直)43.802 26.9 10 8.52628 关节3(肘部1)22.7985 12.9 30 13.5081 关节4(肘部2) 4.41 2.2 30 2.30907 无负载
肘关节4 :0.59.80.45 4.41Nm
⨯⨯=
肘关节3:0.59.820.45 1.69.80.450.59.80.50.4516.9785Nm ⨯⨯⨯+⨯⨯+⨯⨯⨯=
基关节1、2:0.59.830.45 1.69.820.450.59.8 1.50.45
19.80.450.59.80.50.4536.162Nm
⨯⨯⨯+⨯⨯⨯+⨯⨯⨯+
⨯⨯+⨯⨯⨯=
表 3 机械臂各关节计算(无负载)
力矩Nm 行星输出力矩
Nm
速度。

/s 功率W
关节1(肩部水平)36.162 18.1 30 16.3426
关节2(肩部垂直)36.162 18.1 10 5.44752
关节3(肘部1)16.9785 8.5 30 8.88992
关节4(肘部2) 4.41 2.2 30 2.30907 单关节设计的总体考虑
根据各个关节的位置不同,关节所需力矩大小也各不相同,基关节承受的扭矩最大,而肘
关节2承受的扭矩最小,如果各个关节采用一样的元件,势必造成整个机械臂总重量上的增加
和外形尺寸的增大,所以本系统根据各个关节的所需力矩的大小来选择适当的电机、减速器。

我们采用三维设计软件UG进行机械臂的系统设计,直观可靠地设计外形,并且保证设计装配
的正确性。

智能单关节集电机驱动、减速、位置检测及控制电路于一体,实现高度的机电一体
化设计。

关节壳体材料采用铝合金制造,其优点是加工便宜;传热性能好,能够将关节的电子
元器件的热量很快传到壳体;易于安装相关部件,如热隔离胶片等;易于与关节电子系统集成
和分隔。

机械臂总体技术方案
小型5自由度机械手,对机械系统的要求比较高,其最大的特点是结构坚固、抗挠性强,且各个关节能够灵活转动并进行精准定位。

它主要包括:1基座旋转、2肩部抬起、3肘部抬起、4腕部抬起、5手指夹紧这5个自由度。

这些关节由5个伺服电机和若干结构件构成;另外还有装配全套的数控系统,经过设计,得到机械臂外部模型及内部结构如下所示:
图6 机械臂外形模型及结构示意图
5自由度机械手的结构设计关键在于如何排布数量繁多的伺服电机。

并且将不同的扭矩级别的伺服电机分配给每个关节。

根据设计经验,肩部电机是腕部电机扭矩的3倍。

根部采用30kg.cm的伺服电机。

在电机连接中大量采用“金属零件”。

此外,还专门配有强劲的合金结构件,以及ABS工程塑料零件,使强度达到最高值。

而且尽可能地减轻机械手臂的质量,并且采用工业造型。

末端执行器设计方案
自动供料机器人末端执行器用来夹持操作目标物,要求结构简单,重量轻,具有一定的加持力。

设计的末端执行器结构如下图所示,采用双推进机构,使夹持角始终保持在0度。

同时,手爪具有“张开-关闭”功能(1各自由度),可快速更换不同手爪,手爪和物品间可加装各种保护垫片,实现不同物品的夹取。

图7末端夹持器模型及结构示意图
电气系统设计
电子系统安装布局和基本功能如图所示。

图8机械臂电子系统安装布局及功能
电子系统为机械手底座内的计算机控制系统,其为总控器;另外,每个伺服电机内部包含1个分立的电机控制电路板,用以采集电机位置,驱动电机转动和接受CPU电信号。

单片机是整个系统的核心,控制所有模块。

AT89S52单片机是一种低功耗、高性能CMO S8位微控制器,具有8K在线系统可编程Flash存储器。

片上Flash允许程序存储器在系统可编程(ISP),亦适于常规编程器。

其标准功能:8k字节Flash,256字节RAM,32位I/O接口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,
全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作。

支持两种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器,计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

(1)电机驱动模块。

本机械臂以脉宽调制信号(PWM)控制电机的动作。

当以高电平持续1.3 ms,低电平持续20ms的周期重复时,电机全速顺时针旋转;当以高电平持续1.7ms,低电平持续20ms的周期重复时,电机全速逆时针旋转;当以高电平持续1.5m,低电平持续20ms的周期重复时,电机转速为零。

可以用软件设置不同的初始值和终值及步长来控制机械臂的运行速度。

(2)电源及复位模块。

本机械臂采用线性稳压器和开关式电源升压模块相结合的电源系统,通过三位开关选择单片机单独上电或单片机和伺服电机同时上电。

三位开关在状态“0”时为关闭状态,状态“1”时只为单片机供电,此时伺服电机不上电。

状态“2”时单片机和伺服电机同时上电,机械臂可以进行工作,电源电路中接+5V电压。

由于AT89S52单片机可以进行正常、空闲和掉电三种工作模式,使用时只需利用软件对SFR中的PCON(地址87H)相应位置1即可以启动相应的工作方式,使机械臂能够更合理的使用电源。

在便携式和野外作业机械臂上得到更好的运用。

AT89S52单片机提供上电复位和手工复位两种模式,以此完成机械臂的初始化及确保机械臂正常的运行和工作。

(3)晶振模块。

AT89S52单片机采用12MHz的晶振发生器,机器周期达到lus,完全可以达到本机械臂的要求。

(4)工作、检测模块。

机械臂通过传感器与外界进行信息交换。

单片机的4个8位并行I/O口:PO、P1、P2、P3既可以作为输入,又可以作为输出,既可按8位处理,也可按位方式使用,使用时,如果I/0脚上的电压为5V,则其相对应的I/O口寄存器中的相应位存储1;如果电压为0V,则存储0。

基于此,可以把传感器接入单片机的I/O,用以机械臂与外界的信息交换。

在机械臂前部并排装两个接触式传感器,分别接单片机的P1-4和P2-3口。

当传感器没有被触动时,连接传感器的I/O引脚的电压是5V;当传感器被触动时,I/O短接到地,所以I/O管脚的电压是0V。

此板控制板设计合理,操作十分简单。

简单的操作就可以给芯片编程,而无需插拔芯片。

我们为用户开发的C语言和汇编语言底层程序,并做成子函数或者子程序。

经过简单了解之后,学生在熟悉了单片机的基本功能的前提下,可以根据自己的开发项目及教学计划的需求,进行二次开发。

机械臂电气系统示意如图所示。

图9 主控电路外形布局示意图机械臂电气系统原理示意
图10 机械臂电气系统原理示意单片机电气原理示意
功率驱动电路原理示意
图12 驱动电路原理示意图
控制系统设计
本系统软件程序设计采用模块化设计思想。

便于修改和维护。

包括主程序、监控程序模块、数据处理模块。

(1)时序管理。

采用时间控制的方法,在程序中设定各种时间的参数值(这些参数值可以由反复实际测量得到),通过比较是否已达到或超过预定时间值来控制各段的运行。

(2)中断管理。

采用多中断方式,因为优先级的设置而避免了多级中断的相互干扰,其中T 0中断的优先级最高。

(3)多种控制方式复合。

用时间信号与各种检测信号共同控制机械臂的运行,本机械臂的程序流程如图所示。

开始
初始化系统状态寄
存器
初始化I/O口
禁止中断
初始化中断向量表初始化系统变量初始化通讯芯片
初始化EVA模块
是否通过?
使能中断
循环等待中断
系统自检
更新自检状态字
使能PWM
Y
N
图13 程序流程图
通讯是单片机的一个外部中断,软件上电后就要初始化通讯芯片。

在通讯过程中按通讯协议,定时更新数据,等待上位机调用,和接收上位机发送的数据。

其软件流程如图。

中断服务
程序入口
读取通信命令
字判断是发送
还是接收数据
是否信息
结束中断
接收速度位
置指令
位置控制算法
清中断标志
开中断
返回
N Y
Receive
Send
图 14 中断程序流程图
机械臂操作程序界面示意如下:
图15 主程序界面示意
图16 动作编辑界面示意
结论
本方案依据北京工业技师学院提出的钻床供料机器人应用人员技术培训需求,设计了钻床供料工业机器人系统,该系统采用伺服系统驱动,具有结构紧凑、刚度好,精度高、开放型好等特点。

机械臂系统采用工业化标准设计,平台关键零部件全部选用工业级部件,可同时兼顾教学和实训,配套有内容详尽的操作手册和实验指导书,便于用户操作和学习,引导用户基于运动控制器开发各种应用软件系统,机器人语言编程系统全面开放,方便二次开发,能够满足北京市工业技师学院教学培训需求。

附件1 机械臂机构系统
表6机械臂外形示意
附图1.1 机械臂外形表7机器人各关节及功能
附图1.2 机械臂各关节表8机械臂各类视图
附图1.3 前视图
附图1.4 俯视图
图1.5 侧视图
附图1.6 顶视图和底视图表9机械臂自由度示意图
附图1.7 机械臂自由度示意表10末端夹持器外形图
附图1.8 末端夹持器传动示意
图1.9 末端夹持器外形图
附件2 机械臂电气系统
表11机械臂电气系统示意
附图2.1 机械臂电气系统示意表12单片机电气原理示意
表13存储电路原理示意
表14数据采集电路原理示意
附图2.4 数据采集电路原理示意图表15功率驱动电路原理示意
附图2.5 驱动电路原理示意图
表16通信电路原理示意
图2.6 通信电路原理示意图表17运放电路原理示意
图2.7 运放电路原理示意图
附件3 机械臂控制软件设计
表18机械臂编程连接示意
附图3.1 机械臂编程连接示意表19主程序界面
附图3.2 机械臂主程序界面表20操作界面
附图3.3 程序操作界面
表21 单片机控制程序
为便于用户使用,5自由度小型机械臂采用图形化界面,用户只要在程序界面对参数进行修改,就可完成机械臂控制,下面所列是控制程序。

4.1控制程序
#include "config.h" #include "mc_ctrl.h" #include "mc_drv.h" #include "uart_drv.h" CHAN_DATA_REGS chan_Regs[3]; PID_REGS pid_position,pid_speed; S16 sample_data[3];
U16 pwm_8_duty[3];
S16 temp;
U16 control_num = 0;
extern U16 rx_num;
extern Bool time_contrl ;
void mc_control(void)
{
mc_position_measured();
mc_speed_measured();
mc_position_loop();
// mc_speed_Loop();
mc_duty_cycle(pwm_8_duty);
time_contrl = FALSE;
control_num ++;
}
void mc_get_position(U16 ADC_Data,U8 channel) {
sample_data[channel] = ADC_Data;
}
void mc_position_measured(void)
{
U8 i = 0;
chan_Regs[0].position_fb = sample_data[0]-512; chan_Regs[1].position_fb = sample_data[1]-518; chan_Regs[2].position_fb = sample_data[2]-513; if(rx_num>0)
{ for (i=0; i<3; i++)
{
if (abs(chan_Regs[i].position_fb)>495)
PORTC |= (1<<PORTC5);
}
}
}
void mc_speed_measured(void)
{
U8 i = 0;
for (i=0; i<3; i++)
{
chan_Regs[i].speed_fb = (chan_Regs[i].position_fb-chan_Regs[i].positio n_last_fb)*pid_position.max/1024;
}
}
void mc_position_loop(void)
{
U8 i = 0;
for (i=0; i<3; i++)
{
pid_position.ref = chan_Regs[i].position_ref;
pid_position.fb = chan_Regs[i].position_fb;
pid_st_err = chan_Regs[i].position_last_err;
pid_position.integral = chan_Regs[i].position_integral;
pidcalc(&pid_position);
chan_Regs[i].position_last_err = pid_st_err;
chan_Regs[i].position_integral = pid_position.integral;
pid_speed.ref = pid_position.out;
pid_speed.fb = chan_Regs[i].speed_fb;
pid_st_err = chan_Regs[i].speed_last_err;
pid_speed.integral = chan_Regs[i].speed_integral;
pidcalc(&pid_speed);
chan_Regs[i].speed_last_err = pid_st_err;
chan_Regs[i].speed_integral = pid_speed.integral;
if (pid_position.out > 384)
chan_Regs[i].pwm_duty = 680;
else
if (pid_position.out < -384)
chan_Regs[i].pwm_duty = 100;
else
chan_Regs[i].pwm_duty = pid_position.out + 384;
pwm_8_duty[i] = chan_Regs[i].pwm_duty ;
}
}
4.1数据采集程序
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <inttypes.h>
#include "ad.h"
#include <LCD.h>
#include <delay_relay.h>
#include <key.h>
//全局变量
//AD初始化--->AD写操作--->AD转换--->AD读操作在AD的写,转换,读的过程中片选信号可始终处于低电平
extern uint8_t temp1,temp3;
//AD板子的初始化,包括端口方向,串口初始化等
void INITIATION(void)
{
sbi(DDRC,7);
sbi(PORTC,7);// CS-ADC 设置 /CS为AD片选
sbi(DDRG,2);//CONVST初始化,输出 /CONVST转换开始控制端,给一负脉冲,在上升沿时开始AD转换
sbi(PORTG,2);
sbi(DDRG,0);//WR初始化,输出1 /WR写信号
sbi(PORTG,0);
sbi(DDRG,1);//RD初始化,输出1 /RD读信号
sbi(PORTG,1);
cbi(DDRG,4); //ADCEOC初始化,输入上拉电阻 /EOC转换结束,此端输出一宽度为80ns的负脉冲
sbi(PORTG,4);
}
uint16_t SAMPLE_CLOSE(uint8_t index)
{
//变量定义
uint8_t EOC,i;
uint16_t result;
//AD通道选择,index:1~8
index--;//0~7
index=(index<<3);
index&=0x38;//00111000,保留A2、A1、A0,将其它位屏蔽通道数N=4A2+2A1+A0+1 //AD写操作
//CS:PC7;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
DDRA=0xFF;//a口输出
DDRB|=0xF0;//端口B高4位输出
//片选
cbi(PORTC,7);//ad片选拉低
PORTA=index; //将index送到总线(AD的控制寄存器),则会通过通道数公式计算并决定所选通道
PORTB&=0x0F;//高4位清零
PORTB|=((index>>4)&0xf0);
cbi(PORTG,0);//写拉低
for(i=0;i<1;i++);
sbi(PORTG,0);//写拉高
//AD转换开始
cbi(PORTG,2);//拉低CONVST
for(i=0;i<1;i++);
sbi(PORTG,2);//
EOC=PING&0X10; //
for(i=0;i<1;i++);
//AD读操作,返回存有2个字节的指针
//CS:PC7;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
//设置端口方向//
DDRA=0x00;//PORTA as input
PORTA=0xFF;//设置上拉
DDRB&=0x0F;//PB4~PB7 as input 不要轻易用DDRB=0X0F置位,而采取”与“,GOOD,这便保留了原来低四位的状态
PORTB|=0xF0;//PB4~PB7设置上拉同上理,低四位的状态并未改变
////////读/////////
cbi(PORTG,1);//读拉低
result=(((PINB&0xf0)<<4)|PINA); //转换结果为12位,PORTB4-7右移4位,成为高8位中的8-11bit
for(i=0;i<1;i++);
sbi(PORTG,1);//读拉高
//AD片选去掉
sbi(PORTC,7);
return result; }。

相关文档
最新文档