机械臂的控制论文.docx

上传人:b****8 文档编号:28557038 上传时间:2023-07-19 格式:DOCX 页数:21 大小:32.59KB
下载 相关 举报
机械臂的控制论文.docx_第1页
第1页 / 共21页
机械臂的控制论文.docx_第2页
第2页 / 共21页
机械臂的控制论文.docx_第3页
第3页 / 共21页
机械臂的控制论文.docx_第4页
第4页 / 共21页
机械臂的控制论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

机械臂的控制论文.docx

《机械臂的控制论文.docx》由会员分享,可在线阅读,更多相关《机械臂的控制论文.docx(21页珍藏版)》请在冰豆网上搜索。

机械臂的控制论文.docx

机械臂的控制论文

学校代码学号

本科学年论文(设计)

学院、系

专业名称

年级

学生姓名

指导教师

20年9月日

4

5

6

6

6

7

7

7

7

8

电路总框架图...........................................8

硬件电路概括...........................................8

单片机电路.....................................8

2稳压电路......................................9

舵机驱动电路...................................9

传感器电路....................................10

10

编程思想............................................10

程序流程图..........................................11

程序及注释..........................................12

19

19

20

21

19

3.5PCB电路图................................................21

22

23

23

24

基于C8051F310单片机的机械臂的设计

摘要:

随着时代的进步,机械臂技术的应用已越来越普及,已逐渐渗透到军事、航天、医疗、日常生活及教育娱乐等各个领域。

慢慢取代了人类的劳动,尤其是代替人到不能或不适宜去的、有危险等的环境中。

一个完整的机械臂系统主要包括机械、硬件和软件等部分。

设计时需要考虑结构设计、控制系统设计、运动学分析等部分,对于整个研发工作,需要把各个部分紧密联系,互相协调设计。

本文旨在介绍2010-2011学年论文—机械臂的设计方案。

通过C8051F310单片机对五路舵机的分别控制,实现具有五个自由度的机械臂的功能,该机械臂具有灵活、稳定、反应快速、用途广等优点。

关键词:

机械臂,单片机,自由度

BasedonC8051F310SCMdesignofmechanicalarm

Author:

Tutor:

Abstract

WiththeprogressofTheTimes,theapplicationofmechanicalarmtechnologyhasbecomemoreandmorepopular,alreadypermeatesgraduallytomilitaryandaerospace,medicaltreatment,thedailylifeandtheeducationentertainment,andotherfields.Slowlyreplacedhumanlabor,especiallyinsteadofpeopletobeornottogo,isdangerousfortheenvironment.

Acompletemechanicalarmthesystemincludesmachinery,hardwareandsoftware,andotherparts.Thedesignconsiderationoftheneedwhenstructuredesign,controlsystemdesign,kinematicsanalysis,forthewholeofresearchanddevelopmentworkofeachpart,needtoclosecontacteachother,coordinatedesign.Thispaperaimstointroducethe20102011academicyearpaperdesignschemeofmechanicalarm.ThroughtheC8051F310microcontrollertofiveroadofsteeringgearcontroltorealizerespectivelywithfiveofthefreedomofthefunctionofthemechanicalarm,themechanicalarmwithflexible,stableandquickresponse,wideapplication,etc.

Keywords:

Mechanicalarm,SCM,degreesoffreedom

第一章绪论

机械臂的发展史

随着社会分工的细化,从事简单重复工作的人们强烈渴望有某种能代替自己工作的机械臂出现,1946年第一台数字电子计算机问世以来,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。

同时,大批量生产的迫切需求推动了自动化技术的进展,又为机械臂的开发奠定了基础。

另一方面,核能技术的研究要求某些操作机械代替人处理放射性物质。

在这一需求背景下,美国于1947年开发了遥控机械手,1948年又开发了机械式的主从机械手。

机械臂首先是从美国开始研制的。

1954年美国戴沃尔最早提出了工业机器人的概念,并申请了专利。

该专利的要点是借助伺服技术控制机器人的关节,利用人手对机器人进行动作示教,机器人能实现动作的记录和再现。

这就是所谓的再现机器人。

现有的机器人差不多都采用这种控制方式。

1958年美国联合控制公司研制出第一台机械臂铆接机器人。

作为机器人产品最早的实用机型(示教再现)是1962年美国AMF公司推出的“VERSTRAN”和UNIMATION公司推出的“UNIMATE”。

这些工业机器人主要由类似人的手和臂组成它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。

国外机器人领域发展近几年有如下几个趋势:

国内外发展状况

(1)工业机器人性能不断提高(高速度、高精度、高可靠性、便于操作和维修),而单机价格不断下降。

(2)机械结构向模块化、可重构化发展。

例如关节模块中的伺服电机、减速机、检测系统三位一体化:

由关节模块、连杆模块用重组方式构造机器人整机;国外已有模块化装配机器人产品问市。

(3)工业机器人控制系统向基于PC机的开放型控制器方向发展,便于标准化、网络化;器件集成度提高,控制柜日见小巧,且采用模块化结构:

大大提高了系统的可靠性、易操作性和可维修性。

(4)虚拟现实技术在机器人中的作用已从仿真、预演发展到用于过程控制,如使遥控机器人操作者产生置身于远端作业环境中的感觉来操纵机器人。

课题研究背景

随着工业自动化程度的提高,工业现场的很多易燃、易爆等高危及重体力劳动场合必将由机器人所代替。

这一方面可以减轻工人的劳动强度,另一方面可以大大提高劳动生产率。

例如,目前在我国的许多中小型汽车生产以及轻工业生产中,往往冲压成型这一工序还需要人工上下料,既费时费力,又影响效率。

为此,我们把机械臂作为我们研究的课题。

在工业自动化领域里,对机械手、机器人的实用性和前景毫无疑虑。

第二章系统整体设计思路

整体设计概述

整体来看,本次设计比较简单。

用单片机输出五路PWM脉冲分别控制机械臂的五个舵机,实现具有五个自由度的机械臂。

本次设计所使用的C8051F310单片机性能较强大,完全可以满足设计需要。

使用时对C8051F310单片机的目标引脚做初始化,完全可以根据需要将所选引脚用作输入输出口。

C8051F310单片机有高精度可编程的25MHz内部振荡器,不需接外部晶振完全可以满足设计需要。

本次设计要实现的目标是灵活控制五路舵机,稳定的实现五个自由度的机械臂运动。

为了今后自由度的扩展特采用定时器0、1中断的方式来分别控制周期为20ms的五路舵机。

但若就控制五个舵机我们可以用单片机自身的PWM控制器来输出5个20ms的脉冲,更加简单、稳定。

单片机简介

C8051F310器件是完全集成的混合信号片上系统型MCU芯片。

下面列出了一些主要特性:

●高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS)

●全速、非侵入式的在系统调试接口(片内)

●高精度可编程的25MHz内部振荡器

●4个通用的16位定时器

●具有5个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列(PCA)

●29/25个端口I/O(容许5V输入)

系统硬件结构设计

2.3.1电路总框架图

2.3.2硬件电路概括

电路硬件系统包括:

单片机电路、舵机控制电路、传感器输入电路、稳压电路等部分。

2.3.2.1单片机电路

为了今后能更好扩展PWM的输出,我们选用单片机数字I/O口输出来模仿PWM脉冲,分别控制五路舵机,其电路原理图如下所示:

2.3.2.2稳压电路

我们用AZ1084芯片把电源电压降压到5V输出为传感器及舵机信号输入端供电,用LM1117芯片把5V电压降压到为单片机供电。

为了消除舵机工作对单片机的影响,采用光耦把VCC与5V隔开。

2.3.2.3舵机驱动电路

为了舵机的正常工作以及舵机工作对电路板其它电路不产生影响,特采用光耦P117把微机控制与舵机分离开。

2.3.2.4传感器检测电路

传感器输入端采用10K的上拉电阻,VCC对其供电。

系统软件设计

2.4.1编程思想

程序的编写重在原理的掌握。

我们使用的舵机工作周期均为20ms,用单片机定时器产生的五路PWM波的周期也相同。

使用单片机的内部定时器产生脉冲计数,一般来说,舵机工作正脉冲宽度小于周期的1/5,这样能够在1个周期内分时启动各路PWM波的上升沿,再利用定时器中断T0确定各路PWM波的输出宽度,定时器中断T1控制20ms的基准时间。

第1次定时器中断T0按20ms的1/5配置初值,并配置输出I/O口,第1次T0定时中断响应后,将当前输出I/O口对应的引脚输出置高电平,配置该路输出正脉冲宽度,并启动第2次定时器中断,输出I/O口指向下一个输出口。

第2次定时器定时时间结束后,将当前输出引脚置低电平,配置此中断周期为20ms的1/5减去正脉冲的时间,此路PWM信号在该周期中输出完毕,往复输出。

在每次循环的第10次(2×5=10)中断实行关定时中断T0的操作,最后就能够实现5路舵机控制信号的输出。

在使用前应仔细阅读单片机的使用手册,了解单片机的相关寄存器设置方法。

2.4.2程序流程图

主程序流程图1

中断服务程序流图2

2.4.3程序及注释

#include<8051f>//C8051F31X系列头文件

sbitIN0=P1^1;//传感器输入

sbitIN1=P1^2;

sbitPWM0=P0^0;//PWM信号传输接口

sbitPWM1=P0^1;

sbitPWM2=P0^6;

sbitPWM3=P0^7;

sbitPWM4=P1^0;

unsignedintorder1=0,order2=0,bz0=0;

unsignedintjd1,jd2,jd3,jd4,jd5;//角度变量

unsignedintj1=1,j2=1,j3=1,j4,j5=0,j6=0,j7=0,j8=0,i=0;

/********************************************************************

子函数

********************************************************************/

//函数名:

voidPORT_Init(void)**************//

//功能描述:

端口初始化**********************//

voidPORT_Init(void)

{

P0MDIN=0xff;//P0口

P0MDOUT=0xff;

P0SKIP=0x0C;

P1MDIN=0xff;//P1口

P1MDOUT=0xff;

P2MDIN=0xff;//P2口

P2MDOUT=0xff;

P3MDIN=0Xff;//P3口

P3MDOUT=0xff;

XBR0=0x00;

XBR1=0xC0;

}

//函数名:

voidPWM_Init(void)**************//

//功能描述:

端口初始化**********************//

voidPWM_Init(void)

{

PCA0MD&=~0x40;

PCA0MD=0x00;

PCA0CPM0=0x42;//CCM0为8位PWM方式

PCA0CPM1=0x42;//CCM1为8位PWM方式

PCA0CPM2=0x42;//CCM2为8位PWM方式

PCA0CPM3=0x42;//CCM3为8位PWM方式

PCA0CPM4=0x42;//CCM4为8位PWM方式

PCA0CN=0x40;//允许PCA计数器0x00禁止PCA计数

}

//函数名:

voidInternal_Crystal(void)*******//

//功能描述:

设计内部时钟********************//

voidInternal_Crystal(void)

{

OSCICN=0x82;//2分频

CLKSEL=0x00;//内部振荡器

}

//****************延时函数******************//

voiddelay1(inttime)

{

intx,y;

for(x=0;x<1000;x++)

{

for(y=0;y

}

}

voiddelay2(inttime)

{

intx,y;

for(x=0;x<100;x++)

{

for(y=0;y

}

}

voiddelay3(inttime)

{

intx,y;

for(x=0;x<10;x++)

{

for(y=0;y

}

}

//***************Timer函数********************//

voidTime_Init(void)//定时器初始化

{

TMOD=0x11;//T1、T0工作在方式1

EA=1;

ET1=1;

ET0=1;

CKCON=0X01;//系统时钟4分频,即

TH0=0XFC;

TL0=0X02;//,

}

//******************定时器0中断函数************//

voidTime0_Int()interrupt1

{

switch(order1)

{

case1:

PWM0=1;

TR1=1;

TH0=-jd1/256;//定时状态:

X=M-定时时间/T

delay3

(1);

TL0=-jd1%256;

break;

case2:

PWM0=0;

TH0=-(8140-jd1)/256;

TL0=-(8140-jd1)%256;

break;

case3:

PWM1=1;

TH0=-jd2/256;

TL0=-jd2%256;

break;

case4:

PWM1=0;

TH0=-(8140-jd2)/256;

TL0=-(8140-jd2)%256;

break;

case5:

PWM2=1;

TH0=-jd3/256;

TL0=-jd3%256;

break;

case6:

PWM2=0;

TH0=-(8140-jd3)/256;

TL0=-(8140-jd3)%256;

break;

case7:

PWM3=1;

TH0=-jd4/256;

TL0=-jd4%256;

break;

case8:

PWM3=0;

TH0=-(8140-jd4)/256;

TL0=-(8140-jd4)%256;

break;

case9:

PWM4=1;

TH0=-jd5/256;

TL0=-jd5%256;

break;

case10:

PWM4=0;

order1=0;

TH0=-(8140-jd5)/256;

TL0=-(8140-jd5)%256;

TR0=0;

break;

default:

delay3

(1);

}

order1++;

}

voidTime1_Int()interrupt3

{

PWM0=1;

TH1=0X0F;

TL1=0X2D;

TH0=0XFE;

TL0=0XFE;

TR1=0;

TR0=1;

}

//**********功能描述:

主函数****************//

voidmain(void)

{

Internal_Crystal();

PORT_Init();

PWM_Init();

Time_Init();

TH0=0XFF;

TL0=0X02;

TR0=1;

TH1=0X10;

TL1=0X7D;

delay1(10);

jd1=4956;//jd2=6493;//2ms

jd3=6493;//2ms(示波器)

jd4=4956;//

jd5=3800;//1ms

delay1(200);

TH1=0X10;

TL1=0X7D;

TH0=0XFF;

TL0=0X02;

for(;j1<=500;j1++)

{

jd1=jd1-7;//

jd2=jd2-5;//

jd3=jd3-3;//

jd4=jd4+3;//2

jd5=jd5+2;//kai

delay1(10);

delay3(42);

}

jd5=4500;

delay1(600);

for(;j2<=500;j2++)

{

jd1=jd1+7;

jd2=jd2+5;

jd3=jd3+3;

jd4=jd4-3;

delay1(10);

delay3(43);

}

delay1(600);

for(;j5<=500;j5++)

{

jd2=jd2-6;

jd3=jd3-6;

delay1(10);

delay3(43);

}

jd5=5600;

delay1(600);

for(;j6<=500;j6++)

{

jd2=jd2+6;

jd3=jd3+6;

delay1(10);

delay3(43);

}

Delay1(600);

jd5=3500;

for(;j3<=500;j3++)

{

jd1=jd1+5;//

jd2=jd2-5;//1

jd3=jd3-3;//1

jd4=jd4+3;//2

jd5=jd5+3;//kai

delay1(10);

delay3(42);

}

delay1(600);

jd5=5600;

jd5=4600;

for(;j4<=500;j4++)

{

jd1=jd1-5;

jd2=jd2+5;

jd3=jd3+3;

jd4=jd4-3;

delay1(10);

delay3(43);

}

delay1(600);

for(;j7<=500;j7++)

{

jd2=jd2-6;

jd3=jd3-6;

delay1(10);

delay3(43);

}

jd5=5600;

delay1(600);

for(;j8<=500;j8++)

{

jd2=jd2+6;

jd3=jd3+6;

delay1(10);

delay3(43);

}

delay1(600);

jd5=3500;

jd1=4856;

jd2=6493;

jd3=6493;

jd4=4956;

jd5=3800;

delay1(600);

}

第三章PCB设计

下面简单介绍一下PROTEL软件制作PCB的过程以及一些常见的封装名称。

PCB的制作过程

在进行PCB设计之前,必须的工作就是加载零件封装库。

在设计管理器中单击BrowsePCB标签切换到BrowsePCB标签页,然后单击Browse区域的下拉式选择编辑框右边的下拉按钮,从中选择Libraries项,单击Add/Remove按钮,系统弹出PCBLibraries对话框。

从其对话框的第一个列表框中选中一个零件封装库,单击Add即可。

一般情况下,加载和两个零件封装即可。

对于一般的零件封装,我们读从零件库中直接调用,但在设计电路板图过程中偶尔会遇到比较特殊的零件封装,在系统零件封装库中可能没有,这是需要自己制作零件封装。

选择主菜单的菜单项File\New,打开新建文件对话框,在对话框中双击“PCBLibraryDocument”图标,创建新零件封装库文件。

零件封装创建有两种方法:

手工创建和利用向导创建。

手工创建就是利用绘图工具,按照实际的尺寸绘制出零件的封装。

进入零件封装编辑器中,选择主菜单的菜单项Tools\NewComponent,即启动了零件封装向导,如果要手动制作封装则点击Cancel按钮,即可在编辑窗口下绘制元件封装。

在放置焊盘时要注意必须将第一个焊盘设为基准点(坐标原点)。

利用向导创建零件封装,在启动了零件封装向导后,点击Next按钮,按照其提示创建即可。

创建好封装后可以对其进行改名,在主菜单的菜单项Tools\RenameComponent中输入元件名称即可。

如果在PCB设计中要使用自己建的封装,只须将此元件的封装名填入到元件属性的Footprint栏中,然后在加载零件封装库时,将自己的元件封装库加入即可。

网络表在PCB设计中占据非常重要的位置,它是系统进行自动布线的依据。

点击主菜单中的Design/L

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1